1
0
Fork 0
mirror of https://code.forgejo.org/forgejo/runner.git synced 2025-10-05 19:30:59 +00:00
Commit graph

462 commits

Author SHA1 Message Date
Earl Warren
bcddcef2b9
chore: import the ACT test workflow
- remove go vet and build as they are now redundant
- replace ./pkg with ./act
- rename the workflow from test to act to distinguish it from the
  runner workflow

cleanup and factorization with the runner workflow is left for later
2025-07-28 19:47:12 +02:00
Earl Warren
ebc7758c1f
chore: s|github.com/nektos/act/pkg|code.forgejo.org/forgejo/runner/act| 2025-07-28 19:23:07 +02:00
Earl Warren
c377159121 chore: use the same .golangci.yml as the runner & gofumpt over gofmt (#206)
To prepare for a smooth merge in the runner codebase.

- run with --fix for gofumpt and golangci
- manual edits for
  - disabling useless package naming warning
  - rename variables that had underscore in their name
  - remove trailing else at the end of a few functions

Reviewed-on: https://code.forgejo.org/forgejo/act/pulls/206
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
2025-07-28 12:26:41 +00:00
Earl Warren
ed98625ae9 chore: remove tests for node12 and node16 (#205)
Reviewed-on: https://code.forgejo.org/forgejo/act/pulls/205
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
2025-07-28 10:05:01 +00:00
Earl Warren
87d973b894 chore(tests): add coverage for ./pkg/runner (#202)
Only changes test files.

---

- remove tests specific to running on a host with no container
  they are the same as with the containers (TestRunEventHostEnvironment)
- prefix the name of the tests with a distinctive name to
  more easily run them together
- use code.forgejo.org/oci images whereever possible
- remove some tests that are either
  - difficult to understand (ancient bugs)
  - not yet well understood (related to reusable workflows)
  - depend on github (generation of workflows to be run on the fly
    e.g. updateTestIfWorkflow)
- fix the TestSanitizeNetworkAlias tests that were not run
  and make them easier to debug
- disable tests of options that are forbidden in Forgejo Actions
  (testdata/container-hostname/push.yml)

Reviewed-on: https://code.forgejo.org/forgejo/act/pulls/202
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
2025-07-28 06:18:46 +00:00
Earl Warren
28c639e48b fix: sanitize network aliases to be valid DNS names (part 2) (#197)
- prefer the lowercase version of the DNS name which is more common they are case insensitive anyway
- fix the inverted information when sanitation happens

Reviewed-on: https://code.forgejo.org/forgejo/act/pulls/197
Reviewed-by: msrd0 <msrd0@noreply.code.forgejo.org>
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
2025-07-26 11:31:05 +00:00
Earl Warren
53e26e56b1 fix: sum256 the container name so derivations do not overflow (#191)
For instance, the volume name derived from the workflow name may exceed the file system limit when the container name it is derived from is too long.

Fixes forgejo/runner#152

Reviewed-on: https://code.forgejo.org/forgejo/act/pulls/191
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
2025-07-25 09:44:25 +00:00
Earl Warren
2be7a6f1a5 fix: sanitize network aliases to be valid DNS names (#190)
- s/[^A-Z0-9-]/_/g
- add a log line in case the name is sanitized

Closes forgejo/runner#226

---

It is breaking because it will fail jobs that rely on service names that contain characters that are sanitized

Reviewed-on: https://code.forgejo.org/forgejo/act/pulls/190
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
2025-07-22 07:54:10 +00:00
Earl Warren
4a8d6556c7 chore(cleanup): delete a network scheduled for deletion even if there is no service (#189)
In the current implementation, the network will only be created and be scheduled to be deleted when there is a service:

```go
func (rc *RunContext) networkName() (string, bool) {
	if len(rc.Run.Job().Services) > 0 || rc.Config.ContainerNetworkMode == "" {
		return fmt.Sprintf("%s-%s-network", rc.jobContainerName(), rc.Run.JobID), true
	}
	return string(rc.Config.ContainerNetworkMode), false
}
```

Therefore it does not currently make a difference. However, in case the network creation logic changes and a network is created even if a service is not present, it would be incorrect not to delete it.

Reviewed-on: https://code.forgejo.org/forgejo/act/pulls/189
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
2025-07-22 06:08:31 +00:00
earl-warren
a157d24741 feat: use hashed uses string as cache dir name (#186)
Port of https://gitea.com/gitea/act/pulls/117

Refs forgejo/act#100

Co-authored-by: Jason Song <i@wolfogre.com>
Reviewed-on: https://code.forgejo.org/forgejo/act/pulls/186
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
2025-07-21 21:08:46 +00:00
Earl Warren
13ed94f5b7 feat!: add the validate argument to reading workflows (#180)
This is a followup of https://code.forgejo.org/forgejo/act/pulls/170 so that it is possible to read a workflow without validation. It is not uncommon for Forgejo to read a workflow just to extract a few information from it, knowing it has been validated before. It would be a performance regression if schema validation happened in these cases.

This is a port of https://github.com/nektos/act/pull/2717/files

It is a breaking change in the context of Forgejo and Forgejo runner because it will need to add the new `validate` argument when reading workflows.

Co-authored-by: ChristopherHX <christopher.homberger@web.de>
Reviewed-on: https://code.forgejo.org/forgejo/act/pulls/180
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
2025-07-16 08:46:36 +00:00
Earl Warren
c2f91f63df fix: image credentials for services must not override container image credentials (#181)
- do not override username and password when looping over services
- split prepareJobContainer out of startJobContainer
- split getNetworkName out as it is used by both
- add unit tests for prepareJobContainer
- make containre.NewContainer mockable
- add MockVariable helper

Closes forgejo/runner#575

---

Note to reviewers: do not show whitespace change, the refactor will show in  a minimal way. When the fix is reverted the tests fail as follows:

```
        	            	Diff:
        	            	--- Expected
        	            	+++ Actual
        	            	@@ -81,4 +81,4 @@
        	            	   Image: (string) (len=10) "some:image",
        	            	-  Username: (string) (len=17) "containerusername",
        	            	-  Password: (string) (len=17) "containerpassword",
        	            	+  Username: (string) (len=16) "service2username",
        	            	+  Password: (string) (len=16) "service2password",
        	            	   Entrypoint: ([]string) (len=3) {
        	Test:       	TestStartJobContainer/Overlapping
```

Reviewed-on: https://code.forgejo.org/forgejo/act/pulls/181
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
2025-07-15 20:55:38 +00:00
Earl Warren
6620cc1d18 fix: allow overriding RUNNER_TOOL_CACHE from the config file (#178)
- rc.getToolCache(ctx) is used to figure out RUNNER_TOOL_CACHE and  returns RUNNER_TOOL_CACHE if it is found in the runner config, e.g.
  ```yaml
  container:
    env:
	  RUNNER_TOOL_CACHE: /srv/toolcache
  ```
- store the value in the new `toolCache` data member for containers,  in the same way it is done for host
- GetRunnerContext for containers return `toolCache` instead of a  hard coded string
- add integration test

Closes forgejo/runner#184

Reviewed-on: https://code.forgejo.org/forgejo/act/pulls/178
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
2025-07-13 21:55:02 +00:00
earl-warren
d2f668c880 fix!: fallback to sh if bash does not exist (#177)
Reviewed-on: https://code.forgejo.org/forgejo/act/pulls/177
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
2025-07-13 15:59:34 +00:00
Earl Warren
c1892b6398 fix!: fallback to sh if bash does not exist
It is a breaking change because it changes how the shell is
determined.

Before, if `jobs.<job_id>.container.image` is set and the shell is not
specified, it defaults to `sh` instead of `bash`.

After, regardless of `jobs.<job_id>.container.image`, if the shell is
not specified, it defaults to `bash` if available, otherwise it
defaults to `sh`.

Rework the shell integration tests:

- Remove container specific tests because the special behavior related
  to shell being set differently when a container image is present is
  removed
- Modify the defaults test case to verify the fallback logic
- Use container images from code.forgejo.org to escape rate limiting
  in the CI
- Add the missing node test
- Use
      container:
        image: code.forgejo.org/oci/node:22-bookworm
  instead of
      container: code.forgejo.org/oci/node:22-bookworm
  because it silently failed to run (with no exit code)
- Prefer `-z "${BASH}"` because `-z ${BASH+x}` reads obscure

Closes forgejo/runner#150
2025-07-12 19:01:14 +02:00
Earl Warren
6e59f129c1 chore(refactor): add common.RandName to keep name generation DRY 2025-07-12 18:54:17 +02:00
ChristopherHX
65ae238f17 feat: Validate GitHub Actions schema (#2416)
* feat: Validate GitHub Actions schema

**BREAKING** previously accepted workflows are now invalid

* update code

* fix tests

* Bump docker / fix lint

* fix test action due to moving the file

* remove unused function

* fix parsing additional functions

* fix allow int

* update docker dep, due to linter

(cherry picked from commit 64219df0f2155d75ffc4423dc93c1e80bb4740bc)

Conflicts:
	go.mod
	go.sum
	pkg/model/workflow.go

	trivial context conflict & go.mod upgrades
2025-07-11 14:12:22 +02:00
Earl Warren
7eb547faa5 fix: do not fail the job when if: false (#172)
- log job result as info not as debug
- add test

---

v6.4.0 regression introduced in 4880b091a2

It did not fail a test because the [original fix](https://code.forgejo.org/forgejo/act/pulls/67/files)  has tests only for the case where a step is skipped, not when a job is skipped.

Closes forgejo/runner#660

Reviewed-on: https://code.forgejo.org/forgejo/act/pulls/172
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
2025-07-07 12:11:57 +00:00
Earl Warren
aaf05691c0 feat: add FORGEJO_* for each GITHUB_* in the environment & contexts (#171)
Blocking for

- https://code.forgejo.org/actions/setup-forgejo/pulls/461
- forgejo/end-to-end#758

Tested locally with both of them.

```
$ ./end-to-end.sh actions_teardown
$ ( cd ../runner ; make --always-make forgejo-runner ; cp forgejo-runner /tmp/forgejo-end-to-end/forgejo-runner )
$ ./end-to-end.sh actions_setup 12.0
$ ./end-to-end.sh actions_verify_example conext
```

Reviewed-on: https://code.forgejo.org/forgejo/act/pulls/171
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
2025-07-07 06:00:53 +00:00
Earl Warren
1a5cda1a93 Revert "[RDNF #21 updated] fix: make node tool non volatile (#2372) + added 'time import' (#168)"
This reverts commit 6e1377c2b0.

Refs https://code.forgejo.org/forgejo/act/pulls/168/files#issuecomment-45317
2025-07-06 22:27:04 +02:00
Andrii Chyrva
6e1377c2b0 [RDNF #21 updated] fix: make node tool non volatile (#2372) + added 'time import' (#168)
https://github.com/nektos/act/pull/2372

+ fix: make node tool non volatile
Currently downgrading node via setup-node can break later actions

+ fix it and lookup on startup

+ fix problems

Co-authored-by: ChristopherHX <christopher.homberger@web.de>
Reviewed-on: https://code.forgejo.org/forgejo/act/pulls/168
Reviewed-by: earl-warren <earl-warren@noreply.code.forgejo.org>
Co-authored-by: Andrii Chyrva <andrii.s.chyrva@hotmail.com>
Co-committed-by: Andrii Chyrva <andrii.s.chyrva@hotmail.com>
2025-07-06 16:56:42 +00:00
achyrva
2aef5fdde5 [RDNF #18] Meta-copy-symlinks-new-actions-cache (#2337) (#159)
https://github.com/nektos/act/pull/2337

* meta: copy symlinks

* copy file (old style)

* copy files (new styles)

* avoid spelling error detection

* add error

* fix

---------

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>

Co-authored-by: ChristopherHX <christopher.homberger@web.de>
Reviewed-on: https://code.forgejo.org/forgejo/act/pulls/159
Reviewed-by: earl-warren <earl-warren@noreply.code.forgejo.org>
Co-authored-by: achyrva <achyrva@noreply.code.forgejo.org>
Co-committed-by: achyrva <achyrva@noreply.code.forgejo.org>
2025-07-02 13:48:12 +00:00
Earl Warren
8826f7c6e9 fix: services do not need WorkingDir (#156)
Closes forgejo/runner#304

Reviewed-on: https://code.forgejo.org/forgejo/act/pulls/156
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
2025-07-02 09:29:10 +00:00
Slatian
5cf8d53087 Feature: Added an action type for the action.yaml that uses sh (#141)
Currently the only way to get pre and post actions is to go through the nodejs mechanism, which is quite wasteful when all one wants to do is run a couple of shell commands, I'm trying to get around this with this patch.

It works similar to the node* actions in that it supports `pre`, `main` and `post`.

It is different in that these strings are passed to the system shell using `sh -c` and execute similar to the composite run action with the shell set to `sh`.

Example action to make use of this patch: https://codeberg.org/slatian/test-action/src/branch/main/action.yaml

Reviewed-on: https://code.forgejo.org/forgejo/act/pulls/141
Reviewed-by: earl-warren <earl-warren@noreply.code.forgejo.org>
Co-authored-by: Slatian <baschdel@disroot.org>
Co-committed-by: Slatian <baschdel@disroot.org>
2025-06-14 15:31:32 +00:00
Renovate Bot
dea4525cec Update module github.com/docker/docker to v28 (#146)
Reviewed-on: https://code.forgejo.org/forgejo/act/pulls/146
Reviewed-by: earl-warren <earl-warren@noreply.code.forgejo.org>
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Renovate Bot <bot@kriese.eu>
Co-committed-by: Renovate Bot <bot@kriese.eu>
2025-06-11 14:57:23 +00:00
achyrva
4880b091a2 [RDNF #11] fix: skipped jobs have no result & fix: favor command-line over files & chore: fix some comments (#143)
https://github.com/nektos/act/pull/2274
https://github.com/nektos/act/pull/2276
https://github.com/nektos/act/pull/2279
Co-authored-by: lvyaoting <166296299+lvyaoting@users.noreply.github.com>
Co-authored-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
Co-authored-by: ChristopherHX <christopher.homberger@web.de>
Reviewed-on: https://code.forgejo.org/forgejo/act/pulls/143
Reviewed-by: earl-warren <earl-warren@noreply.code.forgejo.org>
Co-authored-by: achyrva <achyrva@noreply.code.forgejo.org>
Co-committed-by: achyrva <achyrva@noreply.code.forgejo.org>
2025-06-09 10:25:43 +00:00
earl-warren
b6e32cf62f Merge pull request '[RDNF #8] "chore: remove repetitive words" and "Trivial: reduce log spam"' (#139) from achyrva/act:nektos-forgejo-acts-3 into main
Reviewed-on: https://code.forgejo.org/forgejo/act/pulls/139
Reviewed-by: earl-warren <earl-warren@noreply.code.forgejo.org>
2025-06-04 05:37:13 +00:00
James Kang
8c93cd18c8 chore: remove repetitive words (#2259)
Signed-off-by: majorteach <csgcgl@126.com>
Co-authored-by: ChristopherHX <christopher.homberger@web.de>
2025-06-03 17:03:50 +03:00
Andrii Chyrva
3469dfa14e test: use ping to improve network test (#2266) 2025-06-03 15:46:19 +03:00
earl-warren
cade5051a8 Merge pull request 'chore: notify long delays in sync' (#93) from earl-warren/act:wip-cascade into main
Reviewed-on: https://code.forgejo.org/forgejo/act/pulls/93
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
2025-05-27 05:51:58 +00:00
earl-warren
ae25738fac Merge pull request '[RDNF #124] Nektos-Feature: Test writing remote Actions locally' (#125) from achyrva/act:nektos-into-forgejo-4 into main
Reviewed-on: https://code.forgejo.org/forgejo/act/pulls/125
Reviewed-by: earl-warren <earl-warren@noreply.code.forgejo.org>
2025-05-26 05:17:26 +00:00
earl-warren
d90516fdc7 Merge pull request 'PR#6. [RDNF] fix: docker buildx cache restore not working, fix: function name in comment, fix: rootless permission bits (new actions cache)' (#122) from achyrva/act:nektos-into-forgejo-2 into main
Reviewed-on: https://code.forgejo.org/forgejo/act/pulls/122
Reviewed-by: earl-warren <earl-warren@noreply.code.forgejo.org>
2025-05-26 05:15:49 +00:00
Earl Warren
1f85564111 fix: use code.forgejo.org/oci
Otherwise it may get rate limited in the CI verifying it works
2025-05-26 05:11:27 +00:00
ChristopherHX
ff13bafc55 Introduce LocalRepositoryCache for download remote actions, add them to ActionCache and execute as well 2025-04-28 08:42:10 +00:00
huajin tong
2110aed6c7 fix function name in comment (#2240)
Signed-off-by: thirdkeyword <fliterdashen@gmail.com>
(cherry picked from commit 71ae39085eb9ed060ac55b45e55147489faaefa2)
2025-04-24 09:00:54 +00:00
Maxim Slipenko
e97623bbaf feat: add node as shell type 2025-04-18 18:14:21 +03:00
ChristopherHX
f3706ee3ea refactor: simpilfy go-git cache (#2208) 2025-04-12 14:03:12 +00:00
ChristopherHX
7065a7e228 feat: offline mode for new action cache (#2173)
* Try fetch update of the action, otherwise use cached version

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2025-04-12 14:03:12 +00:00
Earl Warren
4df32aa3df fix: ensure the LXC template does not have obsolete APT
Upgrade to lxc-helper 1.0.1
2025-01-29 10:30:14 +01:00
Earl Warren
50aec4962b chore(upgrade): sync lxc-helpers v1.0.3 2025-01-29 10:30:12 +01:00
Earl Warren
790d1776e7 fix: do not ignore the config container.options when starting a job 2025-01-11 08:45:08 +01:00
Earl Warren
fc518884f9 chore(refactor): split Options into ConfigOptions & JobOptions
They are both command line options to be parsed as if provided to
docker-run, but they are not to be trusted in the same way.
2025-01-09 12:10:21 +01:00
xtex
606d8701ed feat: export runtime token as FORGEJO_TOKEN 2025-01-04 20:01:43 +08:00
Earl Warren
58966f5a8a chore(lint): fix lint errors
- upgrade to golangci-lint@v1.62.2
- make it renovate friendly
- remove most frequent lint check that are not of consequence (unused
  args, etc.)
- fix remaining lint errors
- add renovate custom manager to update the Makefile variable
2024-12-30 21:11:02 +00:00
Earl Warren
ef243fbf2f fix: log skipped job and step result as info instead of debug
This allows the Forgejo runner to obtain the job result from the
logs even when it is not in debug mode.
2024-11-21 12:18:04 +00:00
Earl Warren
c42fa5f412 fix: [FORGEJO] do not share the act-toolcache volume
In the context of Forgejo the act-toolcache must not be mounted
otherwise independent workflows will race against each other when
writing to it. For instance if a setup-go action is run at the same
time as another, there is a probability that they both write the same
file at the same time, which could lead to a truncated or invalid
content.
2024-11-20 09:42:15 +00:00
Earl Warren
eb76c80193 [FORGEJO] a network of "" is not the same as "host"
The comment that introduced this change suggests it was motivated by a
border case by which the image would be empty. It is however unclear
why it should have any impact on how the network name is determined.

The hunk is reverted.

https://github.com/nektos/act/pull/1949/files#r1315163582
2024-03-24 12:09:40 +01:00
Earl Warren
18b78d6299 [FORGEJO] Revert "Don't set GITHUB_TOKEN (#2089)"
It is a breaking change.

This reverts commit d2b2ed2d66.
2024-03-11 17:46:38 +07:00
s3lph
0d8856b0ce [FORGEJO] feat(docker): Add flag to enable IPv6 in auto-created networks (#24)
Implements one part of forgejo/runner#119. The other part is a corresponding PR in forgejo/runner: forgejo/runner#120.

Reviewed-on: https://code.forgejo.org/forgejo/act/pulls/24
Reviewed-by: earl-warren <earl-warren@noreply.code.forgejo.org>
Co-authored-by: s3lph <codeberg@s3lph.me>
Co-committed-by: s3lph <codeberg@s3lph.me>
2024-03-11 17:10:33 +07:00
Earl Warren
e9bb483fb8 [LXC] global lock on start
Since the start script may create LXC templates that are shared, they
may race against each other when running for the first time. A lock
global to the host needs to be used to guarantee that does not happen.
2024-03-11 15:30:55 +07:00