Automate registration of runner #27
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: ci | |
'on': | |
pull_request: | |
push: | |
branches: | |
- main | |
defaults: | |
run: | |
working-directory: 'bcook254.actrunner' | |
jobs: | |
lint: | |
name: Lint | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out the codebase. | |
uses: actions/checkout@v4 | |
with: | |
path: 'bcook254.actrunner' | |
- name: Set up Python 3. | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.x' | |
- name: Install test dependencies. | |
run: python -m pip install yamllint | |
- name: Lint code. | |
run: yamllint . | |
molecule: | |
name: ${{ matrix.platform.title }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
- name: ubuntu2404 | |
title: Ubuntu 24.04 | |
image: docker.io/geerlingguy/docker-ubuntu2404-ansible:latest | |
- name: ubuntu2204 | |
title: Ubuntu 22.04 | |
image: docker.io/geerlingguy/docker-ubuntu2204-ansible:latest | |
- name: ubuntu2004 | |
title: Ubuntu 20.04 | |
image: docker.io/geerlingguy/docker-ubuntu2004-ansible:latest | |
- name: debian12 | |
title: Debian Bookworm | |
image: docker.io/geerlingguy/docker-debian12-ansible:latest | |
- name: debian11 | |
title: Debian Bullseye | |
image: docker.io/geerlingguy/docker-debian11-ansible:latest | |
- name: debian10 | |
title: Debian Buster | |
image: docker.io/geerlingguy/docker-debian10-ansible:latest | |
- name: fedora40 | |
title: Fedora 40 | |
image: docker.io/geerlingguy/docker-fedora40-ansible:latest | |
- name: fedora39 | |
title: Fedora 39 | |
image: docker.io/geerlingguy/docker-fedora39-ansible:latest | |
- name: fedora38 | |
title: Fedora 38 | |
image: docker.io/geerlingguy/docker-fedora38-ansible:latest | |
- name: centosstream9 | |
title: CentOS Stream 9 | |
image: ghcr.io/bcook254/docker-centosstream9-ansible:latest | |
- name: centosstream8 | |
title: CentOS Stream 8 | |
image: ghcr.io/bcook254/docker-centosstream8-ansible:latest | |
steps: | |
- name: Check out the codebase. | |
uses: actions/checkout@v4 | |
with: | |
path: 'bcook254.actrunner' | |
- name: Set up Python 3. | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.x' | |
- name: Install test dependencies. | |
run: python -m pip install ansible molecule molecule-plugins[docker] docker | |
- name: Run Molecule tests. | |
run: molecule test --driver-name docker | |
env: | |
PLATFORM_NAME: ${{ matrix.platform.name }} | |
PLATFORM_IMAGE: ${{ matrix.platform.image }} | |
PY_COLORS: '1' | |
ANSIBLE_FORCE_COLOR: '1' | |
integration: | |
name: Integration Test | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out the codebase. | |
uses: actions/checkout@v4 | |
with: | |
path: 'bcook254.actrunner' | |
- name: Set up Python 3. | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.x' | |
- name: Install test dependencies. | |
run: python -m pip install ansible molecule molecule-plugins[docker] docker | |
- name: Start Gitea instance | |
id: setup-gitea | |
run: | | |
docker-compose -f molecule/integration/docker-compose.yml up -d | |
args=("exec" "--user" "1000" "gitea") | |
command=("gitea" "admin" "user" "create" "--admin" "--username" "root" "--password" "password1234" "--email" "[email protected]") | |
if ! (r=3; while ! docker ${args[*]} ${command[*]}; do ((--r))||exit;sleep 2;done) ; then | |
exit 1 | |
fi | |
docker ps | |
RUNNER_TOKEN=$(curl -s -X 'GET' \ | |
-H "Authorization: Basic $(echo -n root:password1234 | base64)" \ | |
-H "accept: application/json" \ | |
--max-time 2 \ | |
--retry 3 \ | |
--retry-delay 1 \ | |
--retry-all-errors \ | |
'http://localhost:3000/api/v1/admin/runners/registration-token' | \ | |
jq -r ".token") | |
echo "gitea_runner_token=${RUNNER_TOKEN}" >> $GITHUB_OUTPUT | |
- name: Run Molecule tests. | |
run: molecule test --scenario-name integration --driver-name docker | |
env: | |
RUNNER_TOKEN: '${{ steps.setup-gitea.outputs.gitea_runner_token }}' | |
PY_COLORS: '1' | |
ANSIBLE_FORCE_COLOR: '1' | |