summaryrefslogtreecommitdiffstats
path: root/.forgejo/workflows/test.yml
diff options
context:
space:
mode:
Diffstat (limited to '.forgejo/workflows/test.yml')
-rw-r--r--.forgejo/workflows/test.yml108
1 files changed, 108 insertions, 0 deletions
diff --git a/.forgejo/workflows/test.yml b/.forgejo/workflows/test.yml
new file mode 100644
index 0000000..677ab68
--- /dev/null
+++ b/.forgejo/workflows/test.yml
@@ -0,0 +1,108 @@
+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
+
+ services:
+ forgejo:
+ image: codeberg.org/forgejo/forgejo:1.21
+ 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/setup-go@v3
+ with:
+ go-version: '1.21'
+
+ - uses: actions/checkout@v4
+
+ - 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
+ 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 <<EOF
+ {
+ "ipv6": true,
+ "experimental": true,
+ "ip6tables": true,
+ "fixed-cidr-v6": "fd05:d0ca:1::/64",
+ "default-address-pools": [
+ {
+ "base": "172.19.0.0/16",
+ "size": 24
+ },
+ {
+ "base": "fd05:d0ca:2::/104",
+ "size": 112
+ }
+ ]
+ }
+ EOF
+ apt --quiet install --yes -qq docker.io
+
+ - name: forgejo-runner exec --enable-ipv6
+ run: |
+ set -x
+ chmod +x forgejo-runner
+ ./forgejo-runner exec --enable-ipv6 --workflows .forgejo/testdata/ipv6.yml
+ if ./forgejo-runner exec --workflows .forgejo/testdata/ipv6.yml >& /tmp/out ; then
+ cat /tmp/out
+ echo "IPv6 not enabled, should fail"
+ exit 1
+ fi