diff --git a/.forgejo/workflows/integration-nested.yml b/.forgejo/workflows/integration-nested.yml new file mode 100644 index 0000000..4710f50 --- /dev/null +++ b/.forgejo/workflows/integration-nested.yml @@ -0,0 +1,23 @@ +on: [ push, pull_request ] +jobs: + integration: + runs-on: self-hosted + steps: + - uses: actions/checkout@v3 + - run: | + set -x + LXC_IP_PREFIX=10.0.9 ./forgejo-dependencies.sh + ./forgejo.sh setup root admin1234 codeberg.org/forgejo/forgejo 1.19 + # + # Uncomment the following for a shortcut to debugging the Forgejo runner. + # It will build the runner from a designated repository and branch instead of + # downloading it from a canonical release. + # + # ./forgejo-test-helper.sh build_runner http://code.forgejo.org/forgejo/runner branch-under-debug + # export PATH=$(pwd)/forgejo-runner:$PATH + # + ./forgejo-runner.sh setup + export FORGEJO_RUNNER_LOGS=forgejo-runner.log + echo "============================ sanity-check ===================" + ./forgejo-test-helper.sh push_self_action http://root:admin1234@$(cat forgejo-ip):3000 root setup-forgejo vTest + ./forgejo-test-helper.sh run_workflow testdata/sanity-checks http://root:admin1234@$(cat forgejo-ip):3000 root sanity-check setup-forgejo $(cat forgejo-token) diff --git a/.forgejo/workflows/integration.yml b/.forgejo/workflows/integration.yml index fc0e253..23104e8 100644 --- a/.forgejo/workflows/integration.yml +++ b/.forgejo/workflows/integration.yml @@ -6,19 +6,14 @@ jobs: - uses: actions/checkout@v3 - run: | set -x - LXC_IP_PREFIX=10.0.9 ./forgejo-dependencies.sh + LXC_IP_PREFIX=10.0.10 ./forgejo-dependencies.sh ./forgejo.sh setup root admin1234 codeberg.org/forgejo/forgejo 1.19 - # - # Uncomment the following for a shortcut to debugging the Forgejo runner. - # It will build the runner from a designated repository and branch instead of - # downloading it from a canonical release. - # - # ./forgejo-test-helper.sh build_runner http://code.forgejo.org/forgejo/runner branch-under-debug - # export PATH=$(pwd)/forgejo-runner:$PATH - # ./forgejo-runner.sh setup export FORGEJO_RUNNER_LOGS=forgejo-runner.log + for example in echo container ; do + echo "============================ example-$example ===================" + ./forgejo-test-helper.sh run_workflow testdata/example-$example http://root:admin1234@$(cat forgejo-ip):3000 root example-$example setup-forgejo $(cat forgejo-token) + done + echo "============================ demo ===================" ./forgejo-test-helper.sh run_workflow testdata/demo http://root:admin1234@$(cat forgejo-ip):3000 root demo setup-forgejo $(cat forgejo-token) > /tmp/output grep '^sha=' /tmp/output - ./forgejo-test-helper.sh push_self_action http://root:admin1234@$(cat forgejo-ip):3000 root setup-forgejo vTest - ./forgejo-test-helper.sh run_workflow testdata/sanity-checks http://root:admin1234@$(cat forgejo-ip):3000 root sanity-check setup-forgejo $(cat forgejo-token) diff --git a/forgejo-runner.sh b/forgejo-runner.sh index 0c2def7..a42254e 100755 --- a/forgejo-runner.sh +++ b/forgejo-runner.sh @@ -3,6 +3,8 @@ set -ex +: ${FORGEJO_RUNNER_CONFIG:=$(pwd)/runner-config.yaml} + function dependencies() { if ! which curl daemon > /dev/null ; then apt-get install -y -qq curl daemon @@ -27,7 +29,7 @@ function register() { function run() { rm -f forgejo-runner.log - daemon --chdir=$(pwd) --unsafe --env="TERM=$TERM" --env="HOME=$HOME" --env="PATH=$PATH" --env="USER=$USER" --env="TERM=dumb" --env="USERNAME=$USERNAME" --env="LANG=$LANG" --pidfile=$(pwd)/forgejo-runner-pid --errlog=$(pwd)/forgejo-runner.log --output=$(pwd)/forgejo-runner.log -- forgejo-runner --config $(pwd)/runner-config.yaml daemon + daemon --chdir=$(pwd) --unsafe --env="TERM=$TERM" --env="HOME=$HOME" --env="PATH=$PATH" --env="USER=$USER" --env="TERM=dumb" --env="USERNAME=$USERNAME" --env="LANG=$LANG" --pidfile=$(pwd)/forgejo-runner-pid --errlog=$(pwd)/forgejo-runner.log --output=$(pwd)/forgejo-runner.log -- forgejo-runner --config $FORGEJO_RUNNER_CONFIG daemon sleep 1 cat forgejo-runner.log } diff --git a/testdata/example-container/.forgejo/workflows/test.yml b/testdata/example-container/.forgejo/workflows/test.yml new file mode 100644 index 0000000..f4903a3 --- /dev/null +++ b/testdata/example-container/.forgejo/workflows/test.yml @@ -0,0 +1,8 @@ +on: [push] +jobs: + test: + runs-on: ubuntu-latest + container: + image: alpine:3.18 + steps: + - run: grep Alpine /etc/os-release diff --git a/testdata/example-echo/.forgejo/workflows/test.yml b/testdata/example-echo/.forgejo/workflows/test.yml new file mode 100644 index 0000000..6010460 --- /dev/null +++ b/testdata/example-echo/.forgejo/workflows/test.yml @@ -0,0 +1,6 @@ +on: [push] +jobs: + test: + runs-on: ubuntu-latest + steps: + - run: echo All Good diff --git a/testdata/example-service/.forgejo/workflows/test.yml b/testdata/example-service/.forgejo/workflows/test.yml new file mode 100644 index 0000000..68e6505 --- /dev/null +++ b/testdata/example-service/.forgejo/workflows/test.yml @@ -0,0 +1,19 @@ +on: [push] + +jobs: + test: + runs-on: ubuntu-latest + + services: + pgsql: + image: postgres:15 + env: + POSTGRES_DB: test + POSTGRES_PASSWORD: postgres + ports: + - "5432:5432" + steps: + - run: | + apt-get update -qq + apt-get install -y -qq postgresql-client-11 + PGPASSWORD=postgres psql -h pgsql -U postgres -c '\dt' test