Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .claude/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"permissions": {
"allow": [
"Bash(make:*)",
"Bash(go test:*)",
"Bash(go build:*)",
"Bash(go vet:*)",
"Bash(go mod tidy)",
"Bash(golangci-lint:*)",
"Bash(git:*)"
]
}
}
74 changes: 5 additions & 69 deletions .github/workflows/checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -99,78 +99,14 @@ jobs:
with:
version: '~> v2'
args: release --snapshot --clean
- name: Capture x86_64 (64-bit) Linux binary
- name: Upload snapshot binaries
if: ${{ !env.ACT }}
uses: actions/upload-artifact@v7
with:
name: act-linux-amd64
path: dist/act_linux_amd64_v1/act
- name: Capture i386 (32-bit) Linux binary
if: ${{ !env.ACT }}
uses: actions/upload-artifact@v7
with:
name: act-linux-i386
path: dist/act_linux_386/act
- name: Capture arm64 (64-bit) Linux binary
if: ${{ !env.ACT }}
uses: actions/upload-artifact@v7
with:
name: act-linux-arm64
path: dist/act_linux_arm64/act
- name: Capture armv6 (32-bit) Linux binary
if: ${{ !env.ACT }}
uses: actions/upload-artifact@v7
with:
name: act-linux-armv6
path: dist/act_linux_arm_6/act
- name: Capture armv7 (32-bit) Linux binary
if: ${{ !env.ACT }}
uses: actions/upload-artifact@v7
with:
name: act-linux-armv7
path: dist/act_linux_arm_7/act
- name: Capture riscv64 (64-bit) Linux binary
if: ${{ !env.ACT }}
uses: actions/upload-artifact@v7
with:
name: act-linux-riscv64
path: dist/act_linux_riscv64/act
- name: Capture x86_64 (64-bit) Windows binary
if: ${{ !env.ACT }}
uses: actions/upload-artifact@v7
with:
name: act-windows-amd64
path: dist/act_windows_amd64_v1/act.exe
- name: Capture i386 (32-bit) Windows binary
if: ${{ !env.ACT }}
uses: actions/upload-artifact@v7
with:
name: act-windows-i386
path: dist/act_windows_386/act.exe
- name: Capture arm64 (64-bit) Windows binary
if: ${{ !env.ACT }}
uses: actions/upload-artifact@v7
with:
name: act-windows-arm64
path: dist/act_windows_arm64/act.exe
- name: Capture armv7 (32-bit) Windows binary
if: ${{ !env.ACT }}
uses: actions/upload-artifact@v7
with:
name: act-windows-armv7
path: dist/act_windows_arm_7/act.exe
- name: Capture x86_64 (64-bit) MacOS binary
if: ${{ !env.ACT }}
uses: actions/upload-artifact@v7
with:
name: act-macos-amd64
path: dist/act_darwin_amd64_v1/act
- name: Capture arm64 (64-bit) MacOS binary
if: ${{ !env.ACT }}
uses: actions/upload-artifact@v7
with:
name: act-macos-arm64
path: dist/act_darwin_arm64/act
name: act-snapshot-binaries
path: |
dist/act_*/act
dist/act_*/act.exe
- name: Chocolatey
uses: ./.github/actions/choco
with:
Expand Down
16 changes: 16 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,19 @@ Configured in `.golangci.yml`:
- Table-driven tests are common in `pkg/model/` and `pkg/exprparser/`
- Test fixtures live in `testdata/` directories alongside their packages
- `pkg/runner/testdata/` contains extensive sample GitHub Actions workflows used as integration test fixtures
- Runner integration tests require Docker and use `ACT_TEST_IMAGE` env var (default: `node:24-bookworm-slim`)
- To add a new runner test case: create a workflow YAML under `pkg/runner/testdata/<scenario>/` and wire it into the table-driven test in `runner_test.go`

## Build Constraints

- `CGO_ENABLED=0` — no cgo dependencies allowed
- `make pr` must pass before submitting (runs tidy, format, lint, test)

## Notable Large Files

These files are complex and frequently modified — read them before making changes in their area:

- `cmd/root.go` — CLI setup, all flags and execution orchestration
- `pkg/runner/action.go` — action resolution and execution
- `pkg/runner/expression.go` — expression evaluation in workflow contexts
- `pkg/runner/run_context.go` — job execution state management
21 changes: 5 additions & 16 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ endif

ACT ?= go run main.go

HAS_TOKEN = $(if $(test -e ~/.config/github/token),true,false)
HAS_TOKEN = $(if $(shell test -e ~/.config/github/token && echo 1),true,false)
ifeq (true,$(HAS_TOKEN))
export GITHUB_TOKEN := $(shell cat ~/.config/github/token)
endif
Expand Down Expand Up @@ -54,7 +54,7 @@ lint-md:

.PHONY: lint-rest
lint-rest:
docker run --rm -it \
docker run --rm \
-v $(PWD):/tmp/lint \
-e GITHUB_STATUS_REPORTER=false \
-e GITHUB_COMMENT_REPORTER=false \
Expand All @@ -80,11 +80,6 @@ install: build
@chmod 755 $(PREFIX)/bin/act
@act --version

.PHONY: installer
installer:
@GO111MODULE=off go get github.com/goreleaser/godownloader
godownloader -r nektos/act -o install.sh

.PHONY: promote
promote:
@git fetch --tags
Expand Down Expand Up @@ -115,15 +110,9 @@ snapshot:

.PHONY: upgrade
upgrade:
go get -u
go get -u=patch
go mod tidy

# "$(shell go env GOROOT)/bin/go" allows us to use an outdated global go tool and use the build toolchain defined by the project
# go build auto upgrades to the same toolchain version as defined in the go.mod file
.PHONY: deps-tools
deps-tools: ## install tool dependencies
"$(shell go env GOROOT)/bin/go" install $(GOVULNCHECK_PACKAGE)

.PHONY: security-check
security-check: deps-tools
GOEXPERIMENT= "$(shell go env GOROOT)/bin/go" run $(GOVULNCHECK_PACKAGE) -show color ./...
security-check:
go run $(GOVULNCHECK_PACKAGE) -show color ./...
Copy link
Copy Markdown
Contributor

@ChristopherHX ChristopherHX Mar 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

BTW, the old code did use go 1.26 in this example

  • go 1.24 on path
  • act needs go 1.26 security check fails just because go run does not care about go.mod

Loading