add env test files
This commit is contained in:
parent
8fe93693db
commit
16dc5855a5
2 changed files with 166 additions and 0 deletions
66
.forgejo/workflows/example-docker-compose-envs.yml
Normal file
66
.forgejo/workflows/example-docker-compose-envs.yml
Normal file
|
@ -0,0 +1,66 @@
|
|||
# SPDX-License-Identifier: MIT
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'main'
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
example-docker-compose:
|
||||
if: github.repository_owner != 'forgejo-integration' && github.repository_owner != 'forgejo-experimental' && github.repository_owner != 'forgejo-release'
|
||||
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 "$([ -n "$VERSION_CODENAME" ] && 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: Test Environment Example
|
||||
run: |
|
||||
set -x
|
||||
cd examples/docker-compose
|
||||
secret=$(openssl rand -hex 20)
|
||||
sed -i -e "s/{SHARED_SECRET}/$secret/" compose-forgejo-and-runner-with-envs.yml
|
||||
cli="docker compose --progress quiet -f compose-forgejo-and-runner-with-envs.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
|
100
examples/docker-compose/compose-forgejo-and-runner-with-envs.yml
Normal file
100
examples/docker-compose/compose-forgejo-and-runner-with-envs.yml
Normal file
|
@ -0,0 +1,100 @@
|
|||
# Copyright 2024 The Forgejo Authors.
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
#
|
||||
# Create a secret with:
|
||||
#
|
||||
# openssl rand -hex 20
|
||||
#
|
||||
# Replace all occurences of {SHARED_SECRET} below with the output.
|
||||
#
|
||||
# NOTE: a token obtained from the Forgejo web interface cannot be used
|
||||
# as a shared secret.
|
||||
#
|
||||
# Replace {ROOT_PASSWORD} with a secure password
|
||||
#
|
||||
|
||||
volumes:
|
||||
docker_certs:
|
||||
|
||||
services:
|
||||
|
||||
docker-in-docker:
|
||||
image: code.forgejo.org/oci/docker:dind
|
||||
hostname: docker # Must set hostname as TLS certificates are only valid for docker or localhost
|
||||
privileged: true
|
||||
environment:
|
||||
DOCKER_TLS_CERTDIR: /certs
|
||||
DOCKER_HOST: docker-in-docker
|
||||
volumes:
|
||||
- docker_certs:/certs
|
||||
|
||||
forgejo:
|
||||
image: codeberg.org/forgejo/forgejo:1.21
|
||||
command: >-
|
||||
bash -c '
|
||||
/bin/s6-svscan /etc/s6 &
|
||||
sleep 10 ;
|
||||
su -c "forgejo forgejo-cli actions register --secret {SHARED_SECRET}" git ;
|
||||
su -c "forgejo admin user create --admin --username root --password {ROOT_PASSWORD} --email root@example.com" git ;
|
||||
sleep infinity
|
||||
'
|
||||
environment:
|
||||
FORGEJO__security__INSTALL_LOCK: "true"
|
||||
FORGEJO__log__LEVEL: "debug"
|
||||
FORGEJO__repository__ENABLE_PUSH_CREATE_USER: "true"
|
||||
FORGEJO__repository__DEFAULT_PUSH_CREATE_PRIVATE: "false"
|
||||
FORGEJO__repository__DEFAULT_REPO_UNITS: "repo.code,repo.actions"
|
||||
volumes:
|
||||
- /srv/forgejo-data:/data
|
||||
ports:
|
||||
- 8080:3000
|
||||
|
||||
runner-register:
|
||||
image: code.forgejo.org/forgejo/runner:3.4.1
|
||||
links:
|
||||
- docker-in-docker
|
||||
- forgejo
|
||||
environment:
|
||||
DOCKER_HOST: tcp://docker-in-docker:2376
|
||||
volumes:
|
||||
- /srv/runner-data:/data
|
||||
user: 0:0
|
||||
command: >-
|
||||
bash -ec '
|
||||
while : ; do
|
||||
forgejo-runner create-runner-file --connect --instance http://forgejo:3000 --name runner --secret {SHARED_SECRET} && break ;
|
||||
sleep 1 ;
|
||||
done ;
|
||||
sed -i -e "s|\"labels\": null|\"labels\": [\"docker:docker://code.forgejo.org/oci/node:20-bookworm\", \"ubuntu-22.04:docker://catthehacker/ubuntu:act-22.04\"]|" .runner ;
|
||||
forgejo-runner generate-config > config.yml ;
|
||||
chown -R 1000:1000 /data
|
||||
'
|
||||
|
||||
runner-daemon-envs:
|
||||
image: code.forgejo.org/forgejo/runner:3.4.1
|
||||
links:
|
||||
- docker-in-docker
|
||||
- forgejo
|
||||
environment:
|
||||
DOCKER_HOST: tcp://docker:2376
|
||||
DOCKER_CERT_PATH: /certs/client
|
||||
DOCKER_TLS_VERIFY: "1"
|
||||
RUNNER__runner__ENVS: |
|
||||
DOCKER_HOST=tcp://docker:2376
|
||||
DOCKER_TLS_VERIFY=1
|
||||
DOCKER_CERT_PATH=/certs/client
|
||||
RUNNER__runner__LABELS: |
|
||||
docker:docker://code.forgejo.org/oci/node:20-bookworm
|
||||
ubuntu-22.04:docker://catthehacker/ubuntu:act-22.04
|
||||
RUNNER__container__NETWORK: host
|
||||
RUNNER__container__OPTIONS: -v /certs/client:/certs/client
|
||||
RUNNER__container__VALID_VOLUMES: |
|
||||
/certs/client
|
||||
volumes:
|
||||
- /srv/runner-data:/data
|
||||
- docker_certs:/certs
|
||||
command: >-
|
||||
bash -c '
|
||||
while : ; do test -w .runner && forgejo-runner --config config.yml daemon ; sleep 1 ; done
|
||||
'
|
Loading…
Reference in a new issue