diff --git a/actions/actions.sh b/actions/actions.sh index 230f3b4..0311d68 100755 --- a/actions/actions.sh +++ b/actions/actions.sh @@ -140,6 +140,10 @@ function test_actions() { done fi + if dpkg --compare-versions $runner_version gt 6.0.1; then + run actions_verify_example force-rebuild + fi + if dpkg --compare-versions $version ge 7.0 && dpkg --compare-versions $runner_version gt 3.3.0; then for example in artifacts-v4; do run actions_verify_example $example diff --git a/actions/example-force-rebuild/.forgejo/local-docker-action/Dockerfile b/actions/example-force-rebuild/.forgejo/local-docker-action/Dockerfile new file mode 100644 index 0000000..23e027e --- /dev/null +++ b/actions/example-force-rebuild/.forgejo/local-docker-action/Dockerfile @@ -0,0 +1,5 @@ +FROM debian:bookworm-slim +COPY entrypoint.sh /run/entrypoint.sh +# if we rebuild, we should notice this file change +COPY input.txt /run/input.txt +ENTRYPOINT [ "/run/entrypoint.sh" ] \ No newline at end of file diff --git a/actions/example-force-rebuild/.forgejo/local-docker-action/action.yml b/actions/example-force-rebuild/.forgejo/local-docker-action/action.yml new file mode 100644 index 0000000..e53d627 --- /dev/null +++ b/actions/example-force-rebuild/.forgejo/local-docker-action/action.yml @@ -0,0 +1,6 @@ +name: local docker action +description: local docker action, build depends on "input.txt" + +runs: + using: 'docker' + image: 'Dockerfile' diff --git a/actions/example-force-rebuild/.forgejo/local-docker-action/entrypoint.sh b/actions/example-force-rebuild/.forgejo/local-docker-action/entrypoint.sh new file mode 100755 index 0000000..e2ee36a --- /dev/null +++ b/actions/example-force-rebuild/.forgejo/local-docker-action/entrypoint.sh @@ -0,0 +1,3 @@ +#! /usr/bin/env bash +set -x +exit "$(< /run/input.txt)" \ No newline at end of file diff --git a/actions/example-force-rebuild/.forgejo/local-docker-action/input.txt b/actions/example-force-rebuild/.forgejo/local-docker-action/input.txt new file mode 100644 index 0000000..5a94479 --- /dev/null +++ b/actions/example-force-rebuild/.forgejo/local-docker-action/input.txt @@ -0,0 +1 @@ +this file will be filled by the test \ No newline at end of file diff --git a/actions/example-force-rebuild/.forgejo/workflows/test.yml b/actions/example-force-rebuild/.forgejo/workflows/test.yml new file mode 100644 index 0000000..4151065 --- /dev/null +++ b/actions/example-force-rebuild/.forgejo/workflows/test.yml @@ -0,0 +1,10 @@ +--- +on: + push: +jobs: + test: + runs-on: docker + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - uses: ./.forgejo/local-docker-action diff --git a/actions/example-force-rebuild/run.sh b/actions/example-force-rebuild/run.sh new file mode 100755 index 0000000..2f2cb7e --- /dev/null +++ b/actions/example-force-rebuild/run.sh @@ -0,0 +1,34 @@ +function setup_with_rebuild() { + FORGEJO_RUNNER_CONFIG=$EXAMPLE_DIR/runner-config-with-rebuild.yml forgejo-runner.sh reload +} + +function setup_without_rebuild() { + FORGEJO_RUNNER_CONFIG=$EXAMPLE_DIR/runner-config-without-rebuild.yml forgejo-runner.sh reload +} + +function run() { + local expected="$1" + local repo=root/example-$example + forgejo-test-helper.sh push_workflow actions/example-$example $url root example-$example setup-forgejo $token + sha=$(forgejo-test-helper.sh branch_tip $url $repo main) + forgejo-test-helper.sh wait_$expected $url $repo $sha +} + +function main() { + # set up passing docker action + echo "0" > $EXAMPLE_DIR/.forgejo/local-docker-action/input.txt + setup_with_rebuild + run success + + # change docker action to fail + echo "1" > $EXAMPLE_DIR/.forgejo/local-docker-action/input.txt + # ... but without a rebuild, it should still pass + setup_without_rebuild + run success + + # now the action should fail + setup_with_rebuild + run failure +} + +main diff --git a/actions/example-force-rebuild/runner-config-with-rebuild.yml b/actions/example-force-rebuild/runner-config-with-rebuild.yml new file mode 100644 index 0000000..c99a230 --- /dev/null +++ b/actions/example-force-rebuild/runner-config-with-rebuild.yml @@ -0,0 +1,30 @@ +log: + level: debug + +runner: + file: .runner + capacity: 1 + env_file: .env + timeout: 3h + insecure: false + fetch_timeout: 5s + fetch_interval: 2s + labels: ["docker:docker://code.forgejo.org/oci/node:20-bookworm"] + +cache: + enabled: false + dir: "" + host: "" + port: 0 + +container: + network: "bridge" + privileged: false + options: + workdir_parent: + valid_volumes: ["/srv/example"] + docker_host: "" + force_rebuild: true + +host: + workdir_parent: diff --git a/actions/example-force-rebuild/runner-config-without-rebuild.yml b/actions/example-force-rebuild/runner-config-without-rebuild.yml new file mode 100644 index 0000000..793fbcd --- /dev/null +++ b/actions/example-force-rebuild/runner-config-without-rebuild.yml @@ -0,0 +1,30 @@ +log: + level: debug + +runner: + file: .runner + capacity: 1 + env_file: .env + timeout: 3h + insecure: false + fetch_timeout: 5s + fetch_interval: 2s + labels: ["docker:docker://code.forgejo.org/oci/node:20-bookworm"] + +cache: + enabled: false + dir: "" + host: "" + port: 0 + +container: + network: "bridge" + privileged: false + options: + workdir_parent: + valid_volumes: ["/srv/example"] + docker_host: "" + force_rebuild: false + +host: + workdir_parent: diff --git a/actions/example-force-rebuild/teardown.sh b/actions/example-force-rebuild/teardown.sh new file mode 100755 index 0000000..b410c51 --- /dev/null +++ b/actions/example-force-rebuild/teardown.sh @@ -0,0 +1 @@ +forgejo-runner.sh reload