Merge gitea/act into act/

Merges the `gitea.com/gitea/act` fork into this repository as the `act/`
directory and consumes it as a local package. The `replace github.com/nektos/act
=> gitea.com/gitea/act` directive is removed; act's dependencies are merged
into the root `go.mod`.

- Imports rewritten: `github.com/nektos/act/pkg/...` → `gitea.com/gitea/act_runner/act/...`
  (flattened — `pkg/` boundary dropped to match the layout forgejo-runner adopted).
- Dropped act's CLI (`cmd/`, `main.go`) and all upstream project files; kept
  the library tree + `LICENSE`.
- Added `// Copyright <year> The Gitea Authors ...` / `// Copyright <year> nektos`
  headers to 104 `.go` files.
- Pre-existing act lint violations annotated inline with
  `//nolint:<linter> // pre-existing issue from nektos/act`.
  `.golangci.yml` is unchanged vs `main`.
- Makefile test target: `-race -short` (matches forgejo-runner).
- Pre-existing integration test failures fixed: race in parallel executor
  (atomic counters); TestSetupEnv / command_test / expression_test /
  run_context_test updated to match gitea fork runtime; TestJobExecutor and
  TestActionCache gated on `testing.Short()`.

Full `gitea/act` commit history is reachable via the second parent.

Co-Authored-By: Claude (Opus 4.7) <noreply@anthropic.com>
This commit is contained in:
silverwind
2026-04-22 22:29:06 +02:00
1324 changed files with 294024 additions and 43 deletions

View File

@@ -0,0 +1,97 @@
---
name: "Test Composite Action"
description: "Test action uses composite"
inputs:
test_input_required:
description: "Required input"
required: true
test_input_optional:
description: "optional defaulted input"
required: false
default: "test_input_optional_value"
test_input_optional_with_default_overriden:
description: "optional defaulted input"
required: false
default: "test_input_optional_value"
test_input_required_with_default:
description: "Required with default, due to an old bug of github actions this is allowed"
required: true
default: "test_input_optional_value"
test_input_required_with_default_overriden:
description: "Required with default, due to an old bug of github actions this is allowed"
required: true
default: "test_input_optional_value"
secret_input:
description: test pass a secret as input
outputs:
test_output:
description: "Output value to pass up"
value: ${{ steps.output.outputs.test_output }}
secret_output:
description: test pass a secret as output
value: ${{ format('{0}/{1}', inputs.secret_input, env.secret_input) }}
runs:
using: "composite"
steps:
- name: echo inputs
run: |
echo "#####################################"
echo "Inputs:"
echo "---"
echo "test_input_required=${{ inputs.test_input_required }}"
echo "test_input_optional=${{ inputs.test_input_optional }}"
echo "test_input_optional_with_default_overriden=${{ inputs.test_input_optional_with_default_overriden }}"
echo "test_input_required_with_default=${{ inputs.test_input_required_with_default }}"
echo "test_input_required_with_default_overriden=${{ inputs.test_input_required_with_default_overriden }}"
echo "---"
shell: bash
# Let's test the inputs
- run: |
if [ "${{ inputs.test_input_required }}" != "test_input_required_value" ]; then
exit 1
fi
shell: bash
- run: |
if [ "${{ inputs.test_input_optional }}" != "test_input_optional_value" ]; then
exit 1
fi
shell: bash
- run: |
if [ "${{ inputs.test_input_optional_with_default_overriden }}" != "test_input_optional_with_default_overriden" ]; then
exit 1
fi
shell: bash
- run: |
if [ "${{ inputs.test_input_required_with_default }}" != "test_input_optional_value" ]; then
exit 1
fi
shell: bash
- run: |
if [ "${{ inputs.test_input_required_with_default_overriden }}" != "test_input_required_with_default_overriden" ]; then
exit 1
fi
shell: bash
- run: |
if [ -z "$GITHUB_ACTION_PATH" ]; then
exit 1
fi
if [ -z "${{ github.action_path }}" ]; then
exit 2
fi
shell: bash
# Let's send up an output to test
- run: echo "::set-output name=test_output::test_output_value"
id: output
shell: bash
- run: echo "COMPOSITE_ACTION_ENV_OUTPUT=my test value" >> $GITHUB_ENV
shell: bash

44
act/runner/testdata/uses-composite/push.yml vendored Executable file
View File

@@ -0,0 +1,44 @@
name: uses-docker-url
on: push
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: ./uses-composite/composite_action
id: composite
with:
test_input_required: 'test_input_required_value'
test_input_optional: 'test_input_optional_value'
test_input_optional_with_default_overriden: 'test_input_optional_with_default_overriden'
test_input_required_with_default: 'test_input_optional_value'
test_input_required_with_default_overriden: 'test_input_required_with_default_overriden'
secret_input: ${{secrets.test_input_optional || 'NO SUCH SECRET'}}
env:
secret_input: ${{secrets.test_input_optional || 'NO SUCH SECRET'}}
- if: steps.composite.outputs.test_output != 'test_output_value'
run: |
echo "steps.composite.outputs.test_output=${{ steps.composite.outputs.test_output }}"
exit 1
- run: |
echo "steps.composite.outputs.secret_output=${{ steps.composite.outputs.secret_output }}"
[[ "${{steps.composite.outputs.secret_output == format('{0}/{0}', secrets.test_input_optional || 'NO SUCH SECRET')}}" = "true" ]] || exit 1
shell: bash
- run: |
echo "steps.composite.outputs.secret_output=$COMPOSITE_ACTION_ENV_OUTPUT"
[[ "${{env.COMPOSITE_ACTION_ENV_OUTPUT == 'my test value' }}" = "true" ]] || exit 1
shell: bash
# Now test again with default values
- uses: ./uses-composite/composite_action
id: composite2
with:
test_input_required: 'test_input_required_value'
test_input_optional_with_default_overriden: 'test_input_optional_with_default_overriden'
test_input_required_with_default_overriden: 'test_input_required_with_default_overriden'
- if: steps.composite2.outputs.test_output != 'test_output_value'
run: |
echo "steps.composite.outputs.test_output=${{ steps.composite2.outputs.test_output }}"
exit 1