diff --git a/README.md b/README.md index cdcf5db0..1ffc60c1 100644 --- a/README.md +++ b/README.md @@ -82,6 +82,7 @@ admin permissions. But they do not need to run as root and must work fine when run as a regular user. ```sh +export FORGEJO_RUNNER_LOGS=/tmp/forgejo-end-to-end/forgejo-runner.log ./end-to-end.sh run dependencies ./end-to-end.sh actions_setup 10.0 firefox 0.0.0.0:3000 # user root / admin1234 diff --git a/actions/actions.sh b/actions/actions.sh index 5df95569..04629063 100755 --- a/actions/actions.sh +++ b/actions/actions.sh @@ -133,7 +133,7 @@ function test_actions() { done fi - if dpkg --compare-versions $runner_version gt 6.0.1; then + if dpkg --compare-versions $runner_version gt 10.0.0; then run actions_verify_example force-rebuild fi diff --git a/actions/example-force-rebuild/.forgejo/local-docker-action/Dockerfile b/actions/example-force-rebuild/.forgejo/local-docker-action/Dockerfile deleted file mode 100644 index 2339a39d..00000000 --- a/actions/example-force-rebuild/.forgejo/local-docker-action/Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM code.forgejo.org/oci/debian:bookworm -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" ] diff --git a/actions/example-force-rebuild/.forgejo/local-docker-action/action.yml b/actions/example-force-rebuild/.forgejo/local-docker-action/action.yml deleted file mode 100644 index e53d6279..00000000 --- a/actions/example-force-rebuild/.forgejo/local-docker-action/action.yml +++ /dev/null @@ -1,6 +0,0 @@ -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 deleted file mode 100755 index e2ee36ad..00000000 --- a/actions/example-force-rebuild/.forgejo/local-docker-action/entrypoint.sh +++ /dev/null @@ -1,3 +0,0 @@ -#! /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 deleted file mode 100644 index 5a944794..00000000 --- a/actions/example-force-rebuild/.forgejo/local-docker-action/input.txt +++ /dev/null @@ -1 +0,0 @@ -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 index 41510651..ee6a9bb4 100644 --- a/actions/example-force-rebuild/.forgejo/workflows/test.yml +++ b/actions/example-force-rebuild/.forgejo/workflows/test.yml @@ -1,10 +1,11 @@ ---- -on: - push: +on: [push] + jobs: - test: + ls: runs-on: docker steps: - - name: Checkout repository - uses: actions/checkout@v4 - - uses: ./.forgejo/local-docker-action + - uses: https://code.forgejo.org/forgejo/test-setup-forgejo-docker@main + with: + args: ${{ forge.workspace }}/SOMEFILE + - run: | + test -f ${{ forge.workspace }}/SOMEFILE diff --git a/actions/example-force-rebuild/run.sh b/actions/example-force-rebuild/run.sh index d82890a3..b783b3a2 100755 --- a/actions/example-force-rebuild/run.sh +++ b/actions/example-force-rebuild/run.sh @@ -19,24 +19,51 @@ function run() { forgejo-test-helper.sh wait_$expected $url $repo $sha } +function get_remote_image() { + docker image ls --format='{{ .Repository }}' | grep '^runner-remote-docker-action' +} + +function remove_remote_images() { + docker image ls --format='{{ .Repository }}' | grep '^runner-remote-docker-action' | while read image; do + docker rmi $image + done +} + +function was_built() { + grep --quiet 'docker build -t runner-remote-docker-action' $FORGEJO_RUNNER_LOGS +} + function main() { local dir=$TMPDIR/repository cp -a $EXAMPLE_DIR $dir - # set up passing docker action - echo "0" >$dir/.forgejo/local-docker-action/input.txt - setup_with_rebuild - run $dir success + remove_remote_images - # change docker action to fail - echo "1" >$dir/.forgejo/local-docker-action/input.txt - # ... but without a rebuild, it should still pass + : + : Run one + : setup_without_rebuild run $dir success + local image="$(get_remote_image)" + test "$image" + was_built - # now the action should fail + : + : Run two: verify the image was not rebuilt + : + setup_without_rebuild # resets the logs + run $dir success + test "$image" = "$(get_remote_image)" + ! was_built + + : + : Run two: verify the image was rebuilt and + : the image name stayed the same + : setup_with_rebuild - run $dir failure + run $dir success + test "$image" = "$(get_remote_image)" + was_built } main diff --git a/actions/example-force-rebuild/runner-config-with-rebuild.yml b/actions/example-force-rebuild/runner-config-with-rebuild.yml index c99a2300..6dee7b32 100644 --- a/actions/example-force-rebuild/runner-config-with-rebuild.yml +++ b/actions/example-force-rebuild/runner-config-with-rebuild.yml @@ -1,5 +1,6 @@ log: - level: debug + level: trace + job_level: trace runner: file: .runner diff --git a/actions/example-force-rebuild/runner-config-without-rebuild.yml b/actions/example-force-rebuild/runner-config-without-rebuild.yml index 793fbcd6..8d9f71bb 100644 --- a/actions/example-force-rebuild/runner-config-without-rebuild.yml +++ b/actions/example-force-rebuild/runner-config-without-rebuild.yml @@ -1,5 +1,6 @@ log: - level: debug + level: trace + job_level: trace runner: file: .runner