name: checks on: push: branches: - 'main' pull_request: env: FORGEJO_HOST_PORT: 'forgejo:3000' FORGEJO_ADMIN_USER: 'root' FORGEJO_ADMIN_PASSWORD: 'admin1234' FORGEJO_RUNNER_SECRET: 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' FORGEJO_SCRIPT: | /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 GOPROXY: https://goproxy.io,direct jobs: build-and-tests: name: build and test if: github.repository_owner != 'forgejo-integration' && github.repository_owner != 'forgejo-experimental' && github.repository_owner != 'forgejo-release' runs-on: docker container: image: 'code.forgejo.org/oci/node:20-bookworm' services: forgejo: image: codeberg.org/forgejo/forgejo:9 env: FORGEJO__security__INSTALL_LOCK: "true" FORGEJO__log__LEVEL: "debug" FORGEJO__actions__ENABLED: "true" FORGEJO_ADMIN_USER: ${{ env.FORGEJO_ADMIN_USER }} FORGEJO_ADMIN_PASSWORD: ${{ env.FORGEJO_ADMIN_PASSWORD }} FORGEJO_RUNNER_SECRET: ${{ env.FORGEJO_RUNNER_SECRET }} cmd: - 'bash' - '-c' - ${{ env.FORGEJO_SCRIPT }} steps: - uses: actions/checkout@v4 - uses: 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 [ "$toolchain" != "$version" ]; then echo "go version mismatch: $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: | apt-get update -qq apt-get install -y -qq jq curl retry 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: needs: [build-and-tests] name: runner exec tests if: github.repository_owner != 'forgejo-integration' && github.repository_owner != 'forgejo-experimental' && github.repository_owner != 'forgejo-release' runs-on: self-hosted steps: - uses: actions/checkout@v4 - uses: https://code.forgejo.org/actions/download-artifact@v3 with: name: 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