silverwind
b0ec3fa4fc
fmt
2026-02-24 08:17:17 +01:00
silverwind
8d702e75e7
Fix evalBinaryNodeLeft returning errors.ErrUnsupported instead of nil
...
The lint fix in 09d1891 incorrectly changed the default return from
(nil, nil) to (nil, errors.ErrUnsupported) to silence a nilnil lint
warning. This broke all binary expression operations (==, !=, >, <,
&&, ||, etc.) because the caller returns early on any non-nil error.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-24 07:59:27 +01:00
Christopher Homberger
c192d65d18
exclude act pkg from vet
2026-02-23 23:33:02 +01:00
silverwind
1670945af3
Fix all 93 lint-go errors
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-23 13:59:05 +01:00
Christopher Homberger
09d18916bf
more lint errors
2026-02-23 00:30:44 +01:00
Christopher Homberger
bffc600775
fixes
2026-02-22 21:12:25 +01:00
Christopher Homberger
a77f10683d
assert => require
2026-02-22 21:00:42 +01:00
Christopher Homberger
d187ac2fc1
auto adjust code
2026-02-22 20:58:46 +01:00
Christopher Homberger
3413919161
update import path
2026-02-22 20:54:58 +01:00
Christopher Homberger
9fd95d203f
Merge https://github.com/actions-oss/act-cli into act-runner-merged
2026-02-22 20:38:07 +01:00
Christopher Homberger
52eb6e43cd
Merge branch 'main' of gitea.com:gitea/act_runner into act-runner-actions-oss-act
2026-02-22 20:26:32 +01:00
silverwind
658101d9cb
chore(lint): add golangci-lint v2 and fix all lint issues ( #803 )
...
## Summary
- Replace old `.golangci.yml` (v1 format) with v2 format, aligned with gitea's lint config
- Add `lint-go`, `lint-go-fix`, and `lint` Makefile targets using golangci-lint v2.10.1
- Replace `make vet` with `make lint` in CI workflow (lint includes vet)
- Fix all 35 lint issues: modernize (maps.Copy, range over int, any), perfsprint (errors.New), unparam (remove unused parameters), revive (var naming), staticcheck, forbidigo exclusion for cmd/
- Make `security-check` non-fatal (apply https://github.com/go-gitea/gitea/pull/36681 )
- Remove dead gocritic exclusion rules (commentFormatting, exitAfterDefer)
- Remove dead linter exclusions and disabled checks (singleCaseSwitch, ST1003, QF1001, QF1006, QF1008, testifylint go-require/require-error, test file exclusions for dupl/errcheck/staticcheck/unparam)
## Test plan
- [x] `golangci-lint run` passes
- [x] `go build ./...` passes
- [x] `go test ./...` passes
---------
Co-authored-by: ChristopherHX <christopher.homberger@web.de >
Co-authored-by: Christopher Homberger <christopher.homberger@web.de >
Reviewed-on: https://gitea.com/gitea/act_runner/pulls/803
Reviewed-by: ChristopherHX <christopherhx@noreply.gitea.com >
2026-02-22 17:35:08 +00:00
Christopher Homberger
b48c9c29e9
Merge branch 'act-runner-actions-oss-act' of gitea.com:gitea/act_runner into act-runner-actions-oss-act
2026-02-22 17:34:49 +01:00
Christopher Homberger
cfbb124754
Move logging to another file
2026-02-22 17:34:18 +01:00
Christopher Homberger
340e1de2e3
fix GitHubAPIServerURL
2026-02-22 17:28:48 +01:00
silverwind
f98673129b
Merge branch 'main' into act-runner-actions-oss-act
2026-02-22 15:07:57 +00:00
Christopher Homberger
3f008b3310
forget needs
2026-02-22 16:05:39 +01:00
ChristopherHX
f0f9f0c8ab
fix: composite action log result reported as step result ( #801 )
...
Act logs an array of stepID to signal that this is an partial step result within an composite actions, this is the case for years and act_runner never handled it correctly.
Ref: <43e6958fa3/pkg/runner/logger.go (L142) >
Reviewed-on: https://gitea.com/gitea/act_runner/pulls/801
Reviewed-by: silverwind <silverwind@noreply.gitea.com >
2026-02-22 14:56:09 +00:00
silverwind
ae6e5dfcf7
fix: race condition in reporter between RunDaemon and Close ( #796 )
...
## Summary
- Fix data race on `r.closed` between `RunDaemon()` and `Close()` by protecting it with the existing `stateMu` — `closed` is part of the reporter state. `RunDaemon()` reads it under `stateMu.RLock()`, `Close()` sets it inside the existing `stateMu.Lock()` block
- `ReportState` now has a parameter to not report results from runDaemon even if set, from now on `Close` reports the result
- `Close` waits for `RunDaemon()` to signal exit via a closed channel `daemon` before reporting the final logs and state with result, unless something really wrong happens it does not time out
- Add `TestReporter_EphemeralRunnerDeletion` which reproduces the exact scenario from #793 : RunDaemon's `ReportState` racing with `Close`, causing the ephemeral runner to be deleted before final logs are sent
- Add `TestReporter_RunDaemonClose_Race` which exercises `RunDaemon()` and `Close()` concurrently to verify no data race on `r.closed` under `go test -race`
- Enable `-race` flag in `make test` so CI catches data races going forward
Based on #794 , with fixes for the remaining unprotected `r.closed` reads that the race detector catches.
Fixes #793
---------
Co-authored-by: Christopher Homberger <christopher.homberger@web.de >
Co-authored-by: ChristopherHX <christopher.homberger@web.de >
Co-authored-by: rmawatson <rmawatson@hotmail.com >
Reviewed-on: https://gitea.com/gitea/act_runner/pulls/796
Reviewed-by: ChristopherHX <christopherhx@noreply.gitea.com >
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com >
Co-authored-by: silverwind <me@silverwind.io >
Co-committed-by: silverwind <me@silverwind.io >
2026-02-22 14:52:49 +00:00
Christopher Homberger
9f7b881426
fix lint
2026-02-22 15:51:52 +01:00
Christopher Homberger
d4c46e538e
add strategy
2026-02-20 21:44:30 +01:00
Christopher Homberger
ae82ca2e97
adapt
2026-02-20 21:37:36 +01:00
Christopher Homberger
d9948c0df4
fix add more ctx
2026-02-20 21:10:28 +01:00
Christopher Homberger
995551f1aa
experiment
2026-02-20 21:10:28 +01:00
Christopher Homberger
579b7af04f
wip
...
update go mod
2026-02-20 21:10:16 +01:00
Christopher Homberger
17bc93f003
migrate to WithJobLoggerFactory
2026-02-20 14:17:04 +01:00
Christopher Homberger
35df5a61e4
WIP evaluate upgrade
2026-02-20 14:10:55 +01:00
silverwind
aab249000c
chore(deps): update act to v0.261.8 ( #791 )
...
## Summary
- Update `gitea.com/gitea/act` from pseudo-version `v0.261.7-0.20251202193638-5417d3ac6742` to `v0.261.8`
- Update yaml import in `workflow.go` from `gopkg.in/yaml.v3` to `go.yaml.in/yaml/v4` to match act's yaml v4 migration
- Add tests to verify yaml/v4 upgrade works correctly
## Changes included in act v0.261.8
- Recover from panics in parallel executor workers ([gitea/act#153 ](https://gitea.com/gitea/act/pulls/153 ))
- Fix max-parallel support for matrix jobs ([gitea/act#150 ](https://gitea.com/gitea/act/pulls/150 ))
- Fix yaml with prefixed newline broken setjob + yaml v4 ([gitea/act#144 ](https://gitea.com/gitea/act/pulls/144 ))
- Fixed typo ([gitea/act#151 ](https://gitea.com/gitea/act/pulls/151 ))
## Tests added
- **`Test_generateWorkflow`**: 7 new cases (was 1), covering: no needs, needs as list, workflow env/triggers, container+services, matrix strategy, special YAML characters, and invalid YAML error handling
- **`Test_yamlV4NodeRoundTrip`**: Directly exercises `go.yaml.in/yaml/v4` — `yaml.Node` construction, marshal/unmarshal round-trip, and node kind constants
Fixes: https://gitea.com/gitea/act_runner/issues/371
Fixes: https://gitea.com/gitea/act_runner/issues/772
Reviewed-on: https://gitea.com/gitea/act_runner/pulls/791
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com >
Co-authored-by: silverwind <me@silverwind.io >
Co-committed-by: silverwind <me@silverwind.io >
2026-02-18 05:37:21 +00:00
Christopher Homberger
933c4a5bd5
feat: allow configuring gitea schema mode ( #23 )
...
* config entries for schema change
* remove broken/unused syntetic nodejs action
* specify desired schema in model struct that is read by unmarshal
* replace params by config
* allows gitea context + env names
* act --gitea now parses a subset of gitea specific workflows
Reviewed-on: https://gitea.com/actions-oss/act-cli/pulls/23
Co-authored-by: Christopher Homberger <christopher.homberger@web.de >
Co-committed-by: Christopher Homberger <christopher.homberger@web.de >
2026-02-14 16:23:59 +00:00
ChristopherHX
ee2e0135d5
feat: implement case function ( #16 )
...
Follow GitHub Actions
* added unit tests
Closes #15
Reviewed-on: https://gitea.com/actions-oss/act-cli/pulls/16
Co-authored-by: ChristopherHX <christopher.homberger@web.de >
Co-committed-by: ChristopherHX <christopher.homberger@web.de >
2025-12-18 19:27:30 +00:00
DavidToneian
823e9489d6
Fix some typos in internal/pkg/config/config.example.yaml ( #764 )
...
checks / check and test (push) Successful in 14m22s
Reviewed-on: https://gitea.com/gitea/act_runner/pulls/764
Reviewed-by: techknowlogick <techknowlogick@noreply.gitea.com >
Co-authored-by: DavidToneian <davidtoneian@noreply.gitea.com >
Co-committed-by: DavidToneian <davidtoneian@noreply.gitea.com >
2025-11-19 18:16:45 +00:00
DavidToneian
dc38bf1895
Fix URL to documentation of runner images ( #765 )
...
The previous URL, `https://gitea.com/docker.gitea.com/runner-images `, leads to a 404 currently.
Reviewed-on: https://gitea.com/gitea/act_runner/pulls/765
Reviewed-by: techknowlogick <techknowlogick@noreply.gitea.com >
Co-authored-by: DavidToneian <davidtoneian@noreply.gitea.com >
Co-committed-by: DavidToneian <davidtoneian@noreply.gitea.com >
2025-11-19 18:16:08 +00:00
Akkuman
96b866a3a8
chore: update config.example.yaml for https://gitea.com/gitea/act_runner/pulls/724 ( #763 )
...
checks / check and test (push) Successful in 13m56s
for pr https://gitea.com/gitea/act_runner/pulls/724
Reviewed-on: https://gitea.com/gitea/act_runner/pulls/763
Reviewed-by: ChristopherHX <christopherhx@noreply.gitea.com >
Co-authored-by: Akkuman <akkumans@qq.com >
Co-committed-by: Akkuman <akkumans@qq.com >
2025-11-18 07:18:38 +00:00
ChristopherHX
82dccc7820
Replace expressions engine ( #133 )
2025-10-06 13:53:15 +02:00
Christopher Homberger
8920c4a170
Timeout to wait for and optionally require docker always ( #741 )
...
checks / check and test (push) Successful in 15m35s
* do not require docker cli in the runner image for waiting for a sidecar dockerd
* allow to specify that `:host` labels would also only be accepted if docker is reachable
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com >
Reviewed-on: https://gitea.com/gitea/act_runner/pulls/741
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com >
Co-authored-by: Christopher Homberger <christopher.homberger@web.de >
Co-committed-by: Christopher Homberger <christopher.homberger@web.de >
2025-08-28 17:28:08 +00:00
Akkuman
bbf9d7e90f
feat: support github mirror ( #716 )
...
ref: https://github.com/go-gitea/gitea/issues/34858
when github_mirror='https://ghfast.top/https://github.com '
it will clone from the github mirror
However, there is an exception: because the cache is hashed using the string, if the same cache has been used before, it will still be pulled from github, only for the newly deployed act_ruuner
In the following two scenarios, it will solve the problem encountered:
1. some github mirror is https://xxx.com/https://github.com/actions/checkout@v4 , it will report error `Expected format {org}/{repo}[/path]@ref. Actual ‘https://xxx.com/https://github.com/actions/checkout@v4’ Input string was not in a correct format`
2. If I use an action that has a dependency on another action, even if I configure the url of the action I want to use, the action that the action introduces will still pull from github.
for example 02882cc2d9/action.yml (L127-L132)
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com >
Reviewed-on: https://gitea.com/gitea/act_runner/pulls/716
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com >
Co-authored-by: Akkuman <akkumans@qq.com >
Co-committed-by: Akkuman <akkumans@qq.com >
2025-08-28 16:57:01 +00:00
telackey
53329c46ff
Add ubuntu-24.04 label to defaults. ( #724 )
...
checks / check and test (push) Successful in 14m47s
Simple change to include ubuntu-24.04 in the default list. While ubuntu-latest already points to the same image (at this time) it is appropriate to have it by version as well.
Co-authored-by: techknowlogick <techknowlogick@gitea.com >
Reviewed-on: https://gitea.com/gitea/act_runner/pulls/724
Co-authored-by: telackey <telackey@noreply.gitea.com >
Co-committed-by: telackey <telackey@noreply.gitea.com >
2025-07-22 14:47:30 +00:00
lautriva
edec9a8f91
Add a way to specify vars in act_runner exec ( #704 )
...
Before this commit, when running locally `act_runner exec` to test workflows, we could only fill env and secrets but not vars
This commit add a new exec option `--var` based on what is done for env and secret
Example:
`act_runner exec --env MY_ENV=testenv -s MY_SECRET=testsecret --var MY_VAR=testvariable`
workflow
```
name: Gitea Actions test
on: [push]
jobs:
TestAction:
runs-on: ubuntu-latest
steps:
- run: echo "VAR -> ${{ vars.MY_VAR }}"
- run: echo "ENV -> ${{ env.MY_ENV }}"
- run: echo "SECRET -> ${{ secrets.MY_SECRET }}"
```
Will echo var, env and secret values sent in the command line
Fixes gitea/act_runner#692
Co-authored-by: Lautriva <gitlactr@dbn.re >
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com >
Reviewed-on: https://gitea.com/gitea/act_runner/pulls/704
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com >
Co-authored-by: lautriva <lautriva@noreply.gitea.com >
Co-committed-by: lautriva <lautriva@noreply.gitea.com >
2025-06-11 17:38:29 +00:00
Pablo Carranza
6a9a447f86
Report errors by setting raw_output when it's error level ( #645 )
...
checks / check and test (push) Successful in 13m43s
This solves #643 by setting the "raw_output" entry attribute when the log level is error. This results in the log line being shipped to the Gitea UI.
Reviewed-on: https://gitea.com/gitea/act_runner/pulls/645
Reviewed-by: Zettat123 <zettat123@noreply.gitea.com >
Co-authored-by: Pablo Carranza <pcarranza@gmail.com >
Co-committed-by: Pablo Carranza <pcarranza@gmail.com >
2025-06-05 17:53:13 +00:00
Jack Jackson
5302c25feb
Add environment variables for OIDC token service ( #674 )
...
checks / check and test (push) Successful in 1m52s
Resurrecting [this PR](https://gitea.com/gitea/act_runner/pulls/272 ) (a dependency of [this one](https://github.com/go-gitea/gitea/pull/33945 )) after the original author [lost motivation](https://github.com/go-gitea/gitea/pull/25664#issuecomment-2737099259 ) - though, to be clear, all credit belongs to them, and all blame for mistakes or misunderstandings to me.
Co-authored-by: Søren L. Hansen <sorenisanerd@gmail.com >
Reviewed-on: https://gitea.com/gitea/act_runner/pulls/674
Reviewed-by: ChristopherHX <christopherhx@noreply.gitea.com >
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com >
Co-authored-by: Jack Jackson <scubbojj@gmail.com >
Co-committed-by: Jack Jackson <scubbojj@gmail.com >
2025-05-08 01:58:31 +00:00
Christopher Homberger
a616ed1a10
feat: register interactive with values from cli ( #682 )
...
I used to be able to do something like `./act_runner register --instance https://gitea.com --token testdcff --name test` on GitHub Actions Runners, but act_runner always asked me to enter instance, token etc. again and requiring me to use `--no-interactive` including passing everything per cli.
My idea was to extract the preset input of some stages to skip the prompt for this value if it is a non empty string. Labels is the only question that has been asked more than once if validation failed, in this case the error path have to unset the values of the input structure to not end in a non-interactive loop.
_I have written this initially for my own gitea runner, might be useful to everyone using the official runner as well_
Reviewed-on: https://gitea.com/gitea/act_runner/pulls/682
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com >
Co-authored-by: Christopher Homberger <christopher.homberger@web.de >
Co-committed-by: Christopher Homberger <christopher.homberger@web.de >
2025-05-08 01:57:53 +00:00
Christopher Homberger
f0b5aff3bb
fix: invalid label NoInteractive exit code ( #683 )
...
checks / check and test (push) Successful in 1m47s
* add test
* return validation error not nil from function
Closes #665
Reviewed-on: https://gitea.com/gitea/act_runner/pulls/683
Reviewed-by: techknowlogick <techknowlogick@noreply.gitea.com >
Co-authored-by: Christopher Homberger <christopher.homberger@web.de >
Co-committed-by: Christopher Homberger <christopher.homberger@web.de >
2025-05-07 17:17:26 +00:00
Christopher Homberger
b1ae30dda8
ephemeral act runner ( #649 )
...
checks / check and test (push) Successful in 5m8s
Works for both interactive and non-interactive registration mode.
A further enhancement would be jitconfig support of the daemon command, because after some changes in Gitea Actions the registration token became reusable.
removing runner and fail seems not possible at the current api level
Part of https://github.com/go-gitea/gitea/pull/33570
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com >
Reviewed-on: https://gitea.com/gitea/act_runner/pulls/649
Reviewed-by: Zettat123 <zettat123@noreply.gitea.com >
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com >
Co-authored-by: Christopher Homberger <christopher.homberger@web.de >
Co-committed-by: Christopher Homberger <christopher.homberger@web.de >
2025-03-13 21:57:44 +00:00
techknowlogick
425a570261
use new docker image URLs ( #661 )
...
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com >
Reviewed-on: https://gitea.com/gitea/act_runner/pulls/661
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com >
Co-authored-by: techknowlogick <techknowlogick@gitea.com >
Co-committed-by: techknowlogick <techknowlogick@gitea.com >
2025-03-01 20:21:52 +00:00
garet90
8bc0275e74
feat: add once flag to daemon command ( #19 ) ( #598 )
...
Once flag polls and completes one job then exits.
I use this with Windows Sandbox (and creating users with local brew install on Mac) to create a fresh environment every time.
Co-authored-by: Garet Halliday <garet@pit.dev >
Co-authored-by: Jason Song <wolfogre@noreply.gitea.com >
Reviewed-on: https://gitea.com/gitea/act_runner/pulls/598
Reviewed-by: techknowlogick <techknowlogick@noreply.gitea.com >
Reviewed-by: Jason Song <wolfogre@noreply.gitea.com >
Co-authored-by: garet90 <garet90@noreply.gitea.com >
Co-committed-by: garet90 <garet90@noreply.gitea.com >
2024-11-06 17:16:08 +00:00
rowan-allspice
d1d3cad4b0
feat: allow graceful shutdowns ( #546 )
...
Add a `Shutdown(context.Context) error` method to the Poller. Calling this method will first shutdown all active polling, preventing any new jobs from spawning. It will then wait for either all jobs to finish, or for the context to be cancelled. If the context is cancelled, it will then force all jobs to end, and then exit.
Fixes https://gitea.com/gitea/act_runner/issues/107
Co-authored-by: Rowan Bohde <rowan.bohde@gmail.com >
Reviewed-on: https://gitea.com/gitea/act_runner/pulls/546
Reviewed-by: Jason Song <i@wolfogre.com >
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com >
Co-authored-by: rowan-allspice <rowan-allspice@noreply.gitea.com >
Co-committed-by: rowan-allspice <rowan-allspice@noreply.gitea.com >
2024-05-27 07:38:55 +00:00
rowan-allspice
1735b26e66
Don't log job output when debug logging is not enabled ( #543 )
...
We wanted the ability to disable outputting the logs from the individual job to the console. This changes the logging so that job logs are only output to the console whenever debug logging is enabled in `act_runner`, while still allowing the `Reporter` to receive these logs and forward them to Gitea when debug logging is not enabled.
Co-authored-by: Rowan Bohde <rowan.bohde@gmail.com >
Reviewed-on: https://gitea.com/gitea/act_runner/pulls/543
Reviewed-by: Jason Song <i@wolfogre.com >
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com >
Co-authored-by: rowan-allspice <rowan-allspice@noreply.gitea.com >
Co-committed-by: rowan-allspice <rowan-allspice@noreply.gitea.com >
2024-05-07 05:58:33 +00:00
Jason Song
be2df361ef
Ensure declare to use new labels ( #530 )
...
Ensure "declare" is supported, to use new labels, see https://gitea.com/gitea/act_runner/pulls/529
Reviewed-on: https://gitea.com/gitea/act_runner/pulls/530
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com >
2024-04-02 07:39:40 +00:00
Jason Song
a5085dde0c
Use gitea/runner-images by default ( #529 )
...
See https://gitea.com/gitea/runner-images
Also give up ubuntu-18.04 since it's too old. And enable force_pull by default to check new versions of images.
Reviewed-on: https://gitea.com/gitea/act_runner/pulls/529
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com >
2024-04-02 07:38:14 +00:00
Jason Song
94c45acf6b
Use node 20 by default ( #526 )
...
Because Octokit requires Node 18 or higher now.
See https://github.com/octokit/octokit.js/#fetch-missing .
However, for existing runners, users should manually modify `labels` in the `.runner` file or `runner.labels` in the `config.yaml` file to update. Don't forget to restart.
Reviewed-on: https://gitea.com/gitea/act_runner/pulls/526
Reviewed-by: sillyguodong <sillyguodong@noreply.gitea.com >
2024-03-29 03:03:26 +00:00