forgejo-runner

git clone git://git.lin.moe/forgejo-runner.git

 1# Copyright 2024 The Forgejo Authors.
 2# SPDX-License-Identifier: MIT
 3
 4services:
 5
 6  demo-workflow:
 7    image: code.forgejo.org/oci/alpine:3.19
 8    links:
 9      - forgejo
10    command: >-
11      sh -ec '
12      apk add --quiet git curl jq ;
13      mkdir -p /srv/demo ;
14      cd /srv/demo ;
15      git init --initial-branch=main ;
16      mkdir -p .forgejo/workflows ;
17      echo "{ on: [push], jobs: { test: { runs-on: docker, steps: [ {uses: actions/checkout@v4}, { run: echo All Good } ] } } }" > .forgejo/workflows/demo.yml ;
18      echo "{ on: [push], jobs: { test_docker: { runs-on: ubuntu-22.04, steps: [ { run: docker info } ] } } }" > .forgejo/workflows/demo_docker.yml ;
19      git add . ;
20      git config user.email root@example.com ;
21      git config user.name username ;
22      git commit -m demo ;
23      while : ; do
24        git push --set-upstream --force http://root:{ROOT_PASSWORD}@forgejo:3000/root/test main && break ;
25        sleep 5 ;
26      done ;
27      sha=`git rev-parse HEAD` ;
28      for delay in 1 1 1 1 2 5 5 10 10 10 15 30 30 30 30 30 30 30 ; do
29        curl -sS -f http://forgejo:3000/api/v1/repos/root/test/commits/$$sha/status | jq --raw-output .state | tee status ;
30        if grep success status ; then echo DEMO WORKFLOW SUCCESS && break ; fi ;
31        if grep failure status ; then echo DEMO WORKFLOW FAILURE && break ; fi ;
32        sleep $$delay ;
33      done ;
34      grep success status || echo DEMO WORKFLOW FAILURE
35      '