From 0b3891d166693ce903ad431f388691f9d84b169f Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Thu, 28 Aug 2025 21:47:15 +0200 Subject: [PATCH] debug --- .../workflows/build-release-integration.yml | 94 -------- .forgejo/workflows/build-release.yml | 93 -------- .forgejo/workflows/cascade-forgejo.yml | 109 --------- .../docker-build-push-action-in-lxc.yml | 85 ------- .forgejo/workflows/example-docker-compose.yml | 72 ------ .forgejo/workflows/example-lxc-systemd.yml | 162 ------------- .forgejo/workflows/publish-release.yml | 58 ----- .../workflows/release-notes-assistant.yml | 42 ---- .forgejo/workflows/test.yml | 219 ------------------ 9 files changed, 934 deletions(-) delete mode 100644 .forgejo/workflows/build-release-integration.yml delete mode 100644 .forgejo/workflows/build-release.yml delete mode 100644 .forgejo/workflows/cascade-forgejo.yml delete mode 100644 .forgejo/workflows/docker-build-push-action-in-lxc.yml delete mode 100644 .forgejo/workflows/example-docker-compose.yml delete mode 100644 .forgejo/workflows/example-lxc-systemd.yml delete mode 100644 .forgejo/workflows/publish-release.yml delete mode 100644 .forgejo/workflows/release-notes-assistant.yml delete mode 100644 .forgejo/workflows/test.yml diff --git a/.forgejo/workflows/build-release-integration.yml b/.forgejo/workflows/build-release-integration.yml deleted file mode 100644 index 762cb222..00000000 --- a/.forgejo/workflows/build-release-integration.yml +++ /dev/null @@ -1,94 +0,0 @@ -name: Integration tests for the release process - -on: - push: - paths: - - go.mod - - Dockerfile - - .forgejo/workflows/build-release.yml - - .forgejo/workflows/build-release-integration.yml - branches-ignore: - - renovate/** # they are build via PR - pull_request: - paths: - - go.mod - - Dockerfile - - .forgejo/workflows/build-release.yml - - .forgejo/workflows/build-release-integration.yml - -enable-email-notifications: true - -jobs: - release-simulation: - runs-on: lxc-bookworm - if: vars.ROLE == 'forgejo-coding' - steps: - - uses: actions/checkout@v4 - - - id: forgejo - uses: https://data.forgejo.org/actions/setup-forgejo@v3.0.2 - with: - user: root - password: admin1234 - image-version: 1.20 - lxc-ip-prefix: 10.0.9 - - - name: publish - run: | - set -x - - version=1.2.3 - cat > /etc/docker/daemon.json < $binary$suffix - if test "$suffix" = .xz ; then - unxz --keep $binary$suffix - fi - chmod +x $binary - ./$binary --version | grep $version - curl --fail -L -sS $url/root/runner/releases/download/v$version/$binary$suffix.sha256 > $binary$suffix.sha256 - shasum -a 256 --check $binary$suffix.sha256 - rm $binary$suffix - done - done - - docker pull ${{ steps.forgejo.outputs.host-port }}/root/runner:$version - - docker inspect ${{ steps.forgejo.outputs.host-port}}/root/runner:$version > labels.json - python3 .forgejo/labelscompare.py diff --git a/.forgejo/workflows/build-release.yml b/.forgejo/workflows/build-release.yml deleted file mode 100644 index 6bb6c4b4..00000000 --- a/.forgejo/workflows/build-release.yml +++ /dev/null @@ -1,93 +0,0 @@ -# SPDX-License-Identifier: MIT -# -# https://code.forgejo.org/forgejo/runner -# -# Build the runner binaries and OCI images -# -# ROLE: forgejo-integration -# DOER: forgejo-ci -# TOKEN: -# -name: Build release - -on: - push: - tags: - - 'v*' - -enable-email-notifications: true - -jobs: - release: - runs-on: lxc-bookworm - # root is used for testing, allow it - if: vars.ROLE == 'forgejo-integration' || forge.repository_owner == 'root' - steps: - - uses: actions/checkout@v4 - - - name: Increase the verbosity when there are no secrets - id: verbose - run: | - if test -z "${{ secrets.TOKEN }}"; then - value=true - else - value=false - fi - echo "value=$value" >> "$FORGEJO_OUTPUT" - - - name: Sanitize the name of the repository - id: repository - run: | - echo "value=${FORGEJO_REPOSITORY##*/}" >> "$FORGEJO_OUTPUT" - - - name: create test TOKEN - id: token - if: ${{ secrets.TOKEN == '' }} - run: | - apt-get -qq install -y jq - url="${{ env.FORGEJO_SERVER_URL }}" - hostport=${url##http*://} - hostport=${hostport%%/} - doer=root - api=http://$doer:admin1234@$hostport/api/v1/users/$doer/tokens - curl -sS -X DELETE $api/release - token=$(curl -sS -X POST -H 'Content-Type: application/json' --data-raw '{"name": "release", "scopes": ["all"]}' $api | jq --raw-output .sha1) - echo "value=${token}" >> "$FORGEJO_OUTPUT" - - - name: version from ref_name - id: tag-version - run: | - version=${FORGEJO_REF_NAME##*v} - echo "value=$version" >> "$FORGEJO_OUTPUT" - - - name: build without TOKEN - if: ${{ secrets.TOKEN == '' }} - uses: https://data.forgejo.org/forgejo/forgejo-build-publish/build@v5.4.1 - with: - forgejo: "${{ env.FORGEJO_SERVER_URL }}" - owner: "${{ env.FORGEJO_REPOSITORY_OWNER }}" - repository: "${{ steps.repository.outputs.value }}" - doer: root - sha: "${{ forge.sha }}" - release-version: "${{ steps.tag-version.outputs.value }}" - token: ${{ steps.token.outputs.value }} - platforms: linux/amd64,linux/arm64 - binary-name: forgejo-runner - binary-path: /bin/forgejo-runner - verbose: ${{ steps.verbose.outputs.value }} - - - name: build with TOKEN - if: ${{ secrets.TOKEN != '' }} - uses: https://data.forgejo.org/forgejo/forgejo-build-publish/build@v5.4.1 - with: - forgejo: "${{ env.FORGEJO_SERVER_URL }}" - owner: "${{ env.FORGEJO_REPOSITORY_OWNER }}" - repository: "${{ steps.repository.outputs.value }}" - doer: "${{ secrets.DOER }}" - sha: "${{ forge.sha }}" - release-version: "${{ steps.tag-version.outputs.value }}" - token: "${{ secrets.TOKEN }}" - platforms: linux/amd64,linux/arm64 - binary-name: forgejo-runner - binary-path: /bin/forgejo-runner - verbose: ${{ steps.verbose.outputs.value }} diff --git a/.forgejo/workflows/cascade-forgejo.yml b/.forgejo/workflows/cascade-forgejo.yml deleted file mode 100644 index c1c09565..00000000 --- a/.forgejo/workflows/cascade-forgejo.yml +++ /dev/null @@ -1,109 +0,0 @@ -# Copyright 2025 The Forgejo Authors -# SPDX-License-Identifier: MIT -# -# FORGEJO_CASCADING_PR_ORIGIN_TOKEN is a token from the https://code.forgejo.org/cascading-pr user -# with scope write:issue read:repository read:user -# FORGEJO_CASCADING_PR_DESTINATION_TOKEN is a token from the https://codeberg.org/forgejo-cascading-pr user -# with scope write:issue write:repository read:user -# -# To modify this workflow: -# -# - push it to the wip-cascade branch on the repository -# otherwise it will not have access to the secrets required to push -# the cascading PR -# -# - once it works, open a pull request for the sake of keeping track -# of the change even if the PR won't run it because it will use -# whatever is in the default branch instead -# -# - after it is merged, double check it works by setting the -# label on a pull request (any pull request will do) -# -name: cascade - -on: - push: - branches: - - 'main' - - 'wip-cascade' - pull_request_target: - types: - - synchronize - - labeled - - closed - -enable-email-notifications: true - -jobs: - debug: - if: > - vars.DEBUG == 'yes' - runs-on: docker - container: - image: data.forgejo.org/oci/node:22-bookworm - steps: - - name: event - run: | - cat <<'EOF' - ${{ toJSON(forge.event.pull_request.labels.*.name) }} - EOF - cat <<'EOF' - push => ${{ forge.event_name == 'push' && ( forge.ref_name == 'main' || forge.ref_name == 'wip-cascade') }} - pull_request_target synchornized => ${{ ( forge.event.action == 'synchronized' && contains(forge.event.pull_request.labels.*.name, 'run-forgejo-tests') ) }} - pull_request_target label_updated => ${{ ( forge.event.action == 'label_updated' && forge.event.label.name == 'run-forgejo-tests' ) }} - contains => ${{ contains(forge.event.pull_request.labels.*.name, 'run-forgejo-tests') }} - contains boolean => ${{ contains(forge.event.pull_request.labels.*.name, 'run-forgejo-tests') == true }} - EOF - cat <<'EOF' - ${{ toJSON(forge) }} - EOF - - forgejo: - # - # Always run when a commit is pushed to the main or wip-cascade branch - # If this is a pull request, run - # - when the `run-forgejo-tests` label is set (label_updated) (but not if another label is set or if a label is removed) - # - when a new commit is pushed to the pull request (synchronized) if the `run-forgejo-tests` is already present - # - when the pull request is closed, which also happens when it is merged, so that the Forgejo pull request is closed - # - if: > - vars.ROLE == 'forgejo-coding' && ( - ( - forge.event_name == 'push' && ( forge.ref_name == 'main' || forge.ref_name == 'wip-cascade') - ) || ( - forge.event_name == 'pull_request_target' && ( - forge.event.action == 'closed' || - ( forge.event.action == 'synchronized' && contains(forge.event.pull_request.labels.*.name, 'run-forgejo-tests') ) || - ( forge.event.action == 'label_updated' && forge.event.label.name == 'run-forgejo-tests' ) - ) - ) - ) - - runs-on: docker - container: - image: data.forgejo.org/oci/node:22-bookworm - steps: - - uses: https://data.forgejo.org/actions/checkout@v4 - with: - fetch-depth: '0' - show-progress: 'false' - - uses: actions/setup-go@v5 - with: - go-version-file: go.mod - - uses: https://data.forgejo.org/actions/cascading-pr@v2.2.1 - with: - origin-url: ${{ forge.server_url }} - origin-repo: ${{ forge.repository }} - origin-token: ${{ secrets.FORGEJO_CASCADING_PR_ORIGIN_TOKEN }} - origin-pr: ${{ forge.event.pull_request.number }} - origin-ref: ${{ forge.event_name == 'push' && forge.event.ref || '' }} - destination-url: https://codeberg.org - destination-fork-repo: forgejo-cascading-pr/forgejo - destination-repo: forgejo/forgejo - destination-branch: forgejo - destination-token: ${{ secrets.FORGEJO_CASCADING_PR_DESTINATION_TOKEN }} - prefix: runner - close: true - verbose: ${{ vars.VERBOSE == 'yes' }} - debug: ${{ vars.DEBUG == 'yes' }} - update: .forgejo/cascading-forgejo diff --git a/.forgejo/workflows/docker-build-push-action-in-lxc.yml b/.forgejo/workflows/docker-build-push-action-in-lxc.yml deleted file mode 100644 index dcfb7d88..00000000 --- a/.forgejo/workflows/docker-build-push-action-in-lxc.yml +++ /dev/null @@ -1,85 +0,0 @@ -# -# Example that requires a Forgejo runner with an [LXC backend](https://forgejo.org/docs/latest/admin/actions/runner-installation/#setting-up-the-container-environment). -# -# - Start a Forgejo instance to be used as a container registry -# - Build a container image using the [docker/build-push-action](https://code.forgejo.org/docker/build-push-action) action -# - Push the image to the Forgejo instance -# - Retrieve the image -# -# Runs of this workflow can be seen in [the Forgejo runner](https://code.forgejo.org/forgejo/runner/actions?workflow=docker-build-push-action-in-lxc.yml) logs. -# -name: example -on: - push: - branches: - - 'main' - pull_request: - paths: - - examples/docker-build-push-action/** - - .forgejo/workflows/docker-build-push-action-in-lxc.yml - -enable-email-notifications: true - -env: - FORGEJO_VERSION: 11.0.3 # renovate: datasource=docker depName=code.forgejo.org/forgejo/forgejo - FORGEJO_USER: root - FORGEJO_PASSWORD: admin1234 - -jobs: - docker-build-push-action-in-lxc: - if: vars.ROLE == 'forgejo-coding' - runs-on: lxc-bookworm - - steps: - - - name: install Forgejo so it can be used as a container registry - id: registry - uses: https://data.forgejo.org/actions/setup-forgejo@v3.0.2 - with: - user: ${{ env.FORGEJO_USER }} - password: ${{ env.FORGEJO_PASSWORD }} - binary: https://code.forgejo.org/forgejo/forgejo/releases/download/v${{ env.FORGEJO_VERSION }}/forgejo-${{ env.FORGEJO_VERSION }}-linux-amd64 - lxc-ip-prefix: 10.0.9 - - - name: enable insecure / http uploads to the Forgejo registry - run: |- - set -x - # the docker daemon was implicitly installed when Forgejo was - # installed in the previous step. But it will refuse to connect - # to an insecure / http registry by default and must be told - # otherwise - cat > /etc/docker/daemon.json < /dev/null - apt-get update -qq - apt-get install -qq -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin - docker version - docker compose version - - - name: run the example - run: | - set -x - cd examples/docker-compose - secret=$(openssl rand -hex 20) - sed -i -e "s/{SHARED_SECRET}/$secret/" compose-forgejo-and-runner.yml - cli="docker compose --progress quiet -f compose-forgejo-and-runner.yml" - # - # Launch Forgejo & the runner - # - $cli up -d - for delay in $(seq 60) ; do test -f /srv/runner-data/.runner && break ; sleep 30 ; done - test -f /srv/runner-data/.runner - # - # Run the demo workflow - # - cli="$cli -f compose-demo-workflow.yml" - $cli up -d demo-workflow - # - # Wait for the demo workflow to complete - # - success='DEMO WORKFLOW SUCCESS' - failure='DEMO WORKFLOW FAILURE' - for delay in $(seq 60) ; do - $cli logs demo-workflow > /tmp/out - grep --quiet "$success" /tmp/out && break - grep --quiet "$failure" /tmp/out && break - $cli ps --all - $cli logs --tail=20 runner-daemon demo-workflow - sleep 30 - done - grep --quiet "$success" /tmp/out - $cli logs runner-daemon > /tmp/runner.log - grep --quiet 'Start image=code.forgejo.org/oci/node:20-bookworm' /tmp/runner.log - - - name: full docker compose logs - if: always() - run: | - cd examples/docker-compose - docker compose -f compose-forgejo-and-runner.yml -f compose-demo-workflow.yml logs diff --git a/.forgejo/workflows/example-lxc-systemd.yml b/.forgejo/workflows/example-lxc-systemd.yml deleted file mode 100644 index 5ebdd1a7..00000000 --- a/.forgejo/workflows/example-lxc-systemd.yml +++ /dev/null @@ -1,162 +0,0 @@ -# SPDX-License-Identifier: MIT -on: - push: - branches: - - 'main' - pull_request: - paths: - - examples/lxc-systemd/** - - .forgejo/workflows/example-lxc-systemd.yml - -enable-email-notifications: true - -env: - SERIAL: "30" - LIFETIME: "60" - SYSTEMD_OPTIONS: "--no-pager --full" - -jobs: - example-lxc-systemd: - if: vars.ROLE == 'forgejo-coding' - runs-on: lxc-bookworm - steps: - - uses: https://data.forgejo.org/actions/checkout@v4 - - - name: forgejo-runner-service.sh dependencies - # run before setup-forgejo because it installs LXC and - # this would do nothing (false positive if a bug sneaks in) - run: | - set -x - cd examples/lxc-systemd - VERBOSE=true ./forgejo-runner-service.sh dependencies - lxc-ls - - - name: forgejo-runner-service.sh upgrade - run: | - set -x - - bin=/usr/local/bin - scripts="lxc-helpers.sh lxc-helpers-lib.sh forgejo-runner-service.sh" - - # make the existing scripts different, as if originating from a previous release - rm -f $bin/*.backup - for script in $scripts; do - echo '# something' >> $bin/$script - done - - cd examples/lxc-systemd - VERBOSE=true ./forgejo-runner-service.sh upgrade file://$(pwd)/forgejo-runner-service.sh - - for script in $scripts; do - ! grep --quiet something $bin/$script - grep --quiet something $bin/$script.backup - done - - - id: forgejo - uses: https://data.forgejo.org/actions/setup-forgejo@v3.0.2 - with: - user: root - password: admin1234 - binary: https://code.forgejo.org/forgejo/forgejo/releases/download/v7.0.12/forgejo-7.0.12-linux-amd64 - # must be the same as LXC_IPV4_PREFIX in examples/lxc-systemd/forgejo-runner-service.sh - lxc-ip-prefix: 10.105.7 - - - name: forgejo-runner-service.sh env - run: | - set -x - # this Forgejo instance needs to be reachable from within the LXC - # container created by forgejo-runner-service.sh - url=http://root:admin1234@${{ steps.forgejo.outputs.host-port }} - docker ps --all - export PATH=$(dirname /tmp/*/forgejocli):$PATH - token=$(su -c 'forgejocli -- actions generate-runner-token' forgejo) - cat > /tmp/env <> $env - - service=/etc/systemd/system/forgejo-runner@.service - cat $service - - cache=/var/lib/forgejo-runner/runner-$INPUTS_SERIAL-lxc/.cache/actcache - touch $cache/something - lxc-attach runner-$INPUTS_SERIAL-lxc -- test -f $cache/something - - - name: forgejo-runner-service.sh start / stop - run: | - set -x - serial=${{ env.SERIAL }} - all="${{ env.SYSTEMD_OPTIONS }}" - - systemctl start forgejo-runner@$serial - systemctl $all status forgejo-runner@$serial - started_running=/etc/forgejo-runner/$serial/started-running - killed_gracefully=/etc/forgejo-runner/$serial/killed-gracefully - stopped_gracefully=/etc/forgejo-runner/$serial/stopped-gracefully - retry --delay 5 --times 20 cp -a $started_running /tmp/first-run - retry --delay 1 --times 30 grep --quiet 'Starting runner daemon' /var/log/forgejo-runner/$serial.log - systemctl stop forgejo-runner@$serial - ! systemctl $all status forgejo-runner@$serial - ls -l /etc/forgejo-runner/$serial - test -f $killed_gracefully - test -f $stopped_gracefully - - systemctl start forgejo-runner@$serial - retry --delay 5 --times 20 cp -a $started_running /tmp/second-run - ! test -f $killed_gracefully - ! test -f $stopped_gracefully - lifetime=${{ env.LIFETIME }} - # give it time to restart at least once - ls -l /etc/forgejo-runner/$serial - sleep $lifetime ; sleep $lifetime - ls -l /etc/forgejo-runner/$serial - ! test -f $killed_gracefully - ! test -f $stopped_gracefully - retry --delay 5 --times 20 cp -a $started_running /tmp/third-run - systemctl stop forgejo-runner@$serial - ls -l /etc/forgejo-runner/$serial - test -f $killed_gracefully - test -f $stopped_gracefully - - ls -l /tmp/*-run - test /tmp/first-run -ot /tmp/second-run - test /tmp/second-run -ot /tmp/third-run - - - name: forgejo-runner-service.sh status & destroy - if: always() - run: | - eval $(cat /tmp/env) - set -x - cat /var/log/forgejo-runner/${{ env.SERIAL }}.log || true - journalctl ${{ env.SYSTEMD_OPTIONS }} --unit forgejo-runner@${{ env.SERIAL }} || true - ./examples/lxc-systemd/forgejo-runner-service.sh lxc_destroy diff --git a/.forgejo/workflows/publish-release.yml b/.forgejo/workflows/publish-release.yml deleted file mode 100644 index 5555996a..00000000 --- a/.forgejo/workflows/publish-release.yml +++ /dev/null @@ -1,58 +0,0 @@ -# SPDX-License-Identifier: MIT -# -# https://invisible.forgejo.org/forgejo/runner -# -# Copies & sign a release from code.forgejo.org/forgejo-integration/runner to code.forgejo.org/forgejo/runner -# -# vars.FORGEJO: https://code.forgejo.org -# vars.FROM_OWNER: forgejo-integration -# vars.TO_OWNER: forgejo -# vars.DOER: release-team -# vars.ROLE: forgejo-release -# secrets.TOKEN: -# secrets.GPG_PRIVATE_KEY: -# secrets.GPG_PASSPHRASE: -# -name: publish - -on: - push: - tags: - - 'v*' - -enable-email-notifications: true - -jobs: - publish: - runs-on: lxc-bookworm - if: vars.ROLE == 'forgejo-release' - steps: - - uses: https://data.forgejo.org/actions/checkout@v4 - - - name: copy & sign - uses: https://data.forgejo.org/forgejo/forgejo-build-publish/publish@v5.4.1 - with: - from-forgejo: ${{ vars.FORGEJO }} - to-forgejo: ${{ vars.FORGEJO }} - from-owner: ${{ vars.FROM_OWNER }} - to-owner: ${{ vars.TO_OWNER }} - repo: "runner" - release-notes: | - - [User guide](https://forgejo.org/docs/next/user/actions/overview/) - - [Administrator guide](https://forgejo.org/docs/next/admin/actions/) - - [Container images](https://code.forgejo.org/forgejo/-/packages/container/runner/versions) - - Release Notes - - --- - - release-notes-assistant: true - ref-name: ${{ forge.ref_name }} - sha: ${{ forge.sha }} - container-suffixes: " " - from-token: ${{ secrets.TOKEN }} - to-doer: ${{ vars.DOER }} - to-token: ${{ secrets.TOKEN }} - gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} - gpg-passphrase: ${{ secrets.GPG_PASSPHRASE }} - verbose: ${{ vars.VERBOSE }} diff --git a/.forgejo/workflows/release-notes-assistant.yml b/.forgejo/workflows/release-notes-assistant.yml deleted file mode 100644 index bf63f433..00000000 --- a/.forgejo/workflows/release-notes-assistant.yml +++ /dev/null @@ -1,42 +0,0 @@ -# -# secrets.RELEASE_NOTES_ASSISTANT_TOKEN issued by https://code.forgejo.org/release-notes-assistant-bot with write:issue, write:repository, write:organization and member of the https://code.forgejo.org/org/forgejo/teams/release-notes-assistant team that further tune the access -# -name: issue-labels - -on: - pull_request_target: - types: - - edited - - synchronize - - labeled - -env: - RNA_VERSION: v1.4.0 # renovate: datasource=forgejo-releases depName=forgejo/release-notes-assistant registryUrl=https://code.forgejo.org - -jobs: - release-notes: - if: vars.ROLE == 'forgejo-coding' - runs-on: docker - container: - image: 'data.forgejo.org/oci/ci:1' - steps: - - uses: https://data.forgejo.org/actions/checkout@v4 - - - name: event - run: | - cat <<'EOF' - ${{ toJSON(forge.event.pull_request.labels.*.name) }} - EOF - cat <<'EOF' - ${{ toJSON(forge.event) }} - EOF - - - name: install release-notes-assistant - run: | - set -x - wget -O /usr/local/bin/rna https://code.forgejo.org/forgejo/release-notes-assistant/releases/download/${{ env.RNA_VERSION}}/release-notes-assistant - chmod +x /usr/local/bin/rna - - - name: release-notes-assistant preview - run: | - rna --verbose --storage pr --storage-location ${{ forge.event.pull_request.number }} --forgejo-url $FORGEJO_SERVER_URL --repository $FORGEJO_REPOSITORY --token ${{ secrets.RELEASE_NOTES_ASSISTANT_TOKEN }} preview ${{ forge.event.pull_request.number }} diff --git a/.forgejo/workflows/test.yml b/.forgejo/workflows/test.yml deleted file mode 100644 index d817ae3b..00000000 --- a/.forgejo/workflows/test.yml +++ /dev/null @@ -1,219 +0,0 @@ -name: checks -on: - push: - branches: - - 'main' - pull_request: - -enable-email-notifications: true - -env: - FORGEJO_HOST_PORT: 'forgejo:3000' - FORGEJO_ADMIN_USER: 'root' - FORGEJO_ADMIN_PASSWORD: 'admin1234' - FORGEJO_RUNNER_SECRET: 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' - FORGEJO_SCRIPT: | - /usr/bin/s6-svscan /etc/s6 & sleep 10 ; su -c "forgejo admin user create --admin --username $FORGEJO_ADMIN_USER --password $FORGEJO_ADMIN_PASSWORD --email root@example.com" git && su -c "forgejo forgejo-cli actions register --labels docker --name therunner --secret $FORGEJO_RUNNER_SECRET" git && sleep infinity - -jobs: - build-and-tests: - name: build and test - if: vars.ROLE == 'forgejo-coding' - runs-on: docker - container: - image: 'code.forgejo.org/oci/ci:1' - - services: - forgejo: - image: code.forgejo.org/forgejo/forgejo:11 - env: - FORGEJO__security__INSTALL_LOCK: "true" - FORGEJO__log__LEVEL: "debug" - FORGEJO__actions__ENABLED: "true" - FORGEJO_ADMIN_USER: root - FORGEJO_ADMIN_PASSWORD: admin1234 - FORGEJO_RUNNER_SECRET: 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' - cmd: - - 'bash' - - '-c' - - '/usr/bin/s6-svscan /etc/s6 & sleep 10 ; su -c "forgejo admin user create --admin --username $FORGEJO_ADMIN_USER --password $FORGEJO_ADMIN_PASSWORD --email root@example.com" git && su -c "forgejo forgejo-cli actions register --labels docker --name therunner --secret $FORGEJO_RUNNER_SECRET" git && sleep infinity' - - steps: - - uses: https://data.forgejo.org/actions/checkout@v4 - - - uses: https://data.forgejo.org/actions/setup-go@v5 - with: - go-version-file: go.mod - - - name: validate go version - run: | - set -ex - toolchain=$(grep -oP '(?<=toolchain ).+' go.mod) - version=$(go version | cut -d' ' -f3) - if dpkg --compare-versions ${version#go} lt ${toolchain#go}; then - echo "go version too low: $toolchain >= $version" - exit 1 - fi - - - run: make vet - - - run: make build - - - uses: https://code.forgejo.org/actions/upload-artifact@v3 - with: - name: forgejo-runner - path: forgejo-runner - - - name: check the forgejo server is responding - run: | - sleep 10 # matches the sleep 10 in the bootstrap of the Forgejo instance - # in case of a slow machine, give it time to bootstrap - retry --delay=10 --times=6 bash -c 'test $FORGEJO_ADMIN_USER = $(curl -sS http://$FORGEJO_ADMIN_USER:$FORGEJO_ADMIN_PASSWORD@$FORGEJO_HOST_PORT/api/v1/user | jq --raw-output .login)' - - - run: make FORGEJO_URL=http://$FORGEJO_HOST_PORT test - - runner-exec-tests: - name: runner exec tests - if: vars.ROLE == 'forgejo-coding' - runs-on: lxc-bookworm - needs: [build-and-tests] - steps: - - - uses: actions/checkout@v4 - - - uses: https://code.forgejo.org/actions/download-artifact@v3 - with: - name: forgejo-runner - - - run: chmod +x forgejo-runner - - - name: install docker - run: | - mkdir /etc/docker - cat > /etc/docker/daemon.json <& /tmp/out ; then - cat /tmp/out - echo "IPv6 not enabled, should fail" - exit 1 - fi - - - name: forgejo-runner exec --var - run: | - set -x - ./forgejo-runner exec --var MY_VAR=testvariable --workflows .forgejo/testdata/var.yml |& tee /tmp/var.out - grep --quiet 'Success - Main echo "VAR -> testvariable"' /tmp/var.out - - integration-tests: - name: integration tests - if: vars.ROLE == 'forgejo-coding' - runs-on: lxc-bookworm - steps: - - uses: https://data.forgejo.org/actions/checkout@v4 - - - uses: https://data.forgejo.org/actions/setup-go@v5 - with: - go-version-file: go.mod - - - name: apt install docker.io - run: | - export DEBIAN_FRONTEND=noninteractive - apt-get update -qq - apt-get -q install -qq -y docker.io - - - run: apt-get -q install -qq -y gcc # required for `-race` - - name: integration test - run: | - go test -race ./act/container - go test -race -timeout 30m ./act/runner/... - - runner-integration-tests: - name: runner integration tests - if: vars.ROLE == 'forgejo-coding' - runs-on: lxc-bookworm - needs: [build-and-tests] - - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-go@v5 - with: - go-version-file: go.mod - - - name: install docker - run: | - mkdir /etc/docker - cat > /etc/docker/daemon.json <