The `vars.ROLE` in each repository was set as follows: - https://code.forgejo.org/forgejo/runner => forgejo-coding - https://code.forgejo.org/forgejo-integration/runner => forgejo-integration - https://invisible.forgejo.org/forgejo/runner => forgejo-release It reflects how Forgejo roles are dispatched. Update all workflows to use the ROLE to determine if it is relevant for them to run. It is more straightforward than the previous approach based on the name of the owner. There were cases where the logic was wrong and workflows ran needlessly, for instance because the runner release is now published from an organization that is forgejo and not forgejo-release. <!--start release-notes-assistant--> <!--URL:https://code.forgejo.org/forgejo/runner--> - other - [PR](https://code.forgejo.org/forgejo/runner/pulls/790): <!--number 790 --><!--line 0 --><!--description Y2hvcmUoY2xlYW51cCk6IGRpc3BhdGNoIHdvcmtmbG93cyBhY2NvcmRpbmcgdG8gdGhlIHJvbGUgb2YgdGhlIHJlcG9zaXRvcnk=-->chore(cleanup): dispatch workflows according to the role of the repository<!--description--> <!--end release-notes-assistant--> Reviewed-on: https://code.forgejo.org/forgejo/runner/pulls/790 Reviewed-by: Michael Kriese <michael.kriese@gmx.de> Co-authored-by: Earl Warren <contact@earl-warren.org> Co-committed-by: Earl Warren <contact@earl-warren.org>
72 lines
2.6 KiB
YAML
72 lines
2.6 KiB
YAML
# SPDX-License-Identifier: MIT
|
|
on:
|
|
push:
|
|
branches:
|
|
- 'main'
|
|
pull_request:
|
|
paths:
|
|
- examples/docker-compose/**
|
|
- .forgejo/workflows/example-docker-compose.yml
|
|
|
|
enable-email-notifications: true
|
|
|
|
jobs:
|
|
example-docker-compose:
|
|
if: vars.ROLE == 'forgejo-coding'
|
|
runs-on: lxc-bookworm
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Install docker
|
|
run: |
|
|
apt-get update -qq
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
apt-get install -qq -y ca-certificates curl gnupg
|
|
install -m 0755 -d /etc/apt/keyrings
|
|
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
|
echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /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
|