From c92246a058de06b24d7e4ce5f6adea7ad0bbad31 Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Sat, 25 Mar 2023 16:06:50 +0100 Subject: [PATCH] integration --- .forgejo/workflows/integration.yml | 16 +++++++++++++--- docker.sh | 12 ++++++++++++ forgejo-runner.sh | 2 +- lxc.sh | 23 +++++++++++++++++++++++ testdata/run.sh | 25 ++++++++++++++++++++----- 5 files changed, 69 insertions(+), 9 deletions(-) create mode 100755 docker.sh create mode 100755 lxc.sh diff --git a/.forgejo/workflows/integration.yml b/.forgejo/workflows/integration.yml index 31e1d36..9af179c 100644 --- a/.forgejo/workflows/integration.yml +++ b/.forgejo/workflows/integration.yml @@ -6,8 +6,18 @@ jobs: - uses: actions/checkout@v3 - run: | set -x - echo deb http://deb.debian.org/debian bullseye-backports main | tee /etc/apt/sources.list.d/backports.list && apt-get update - DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends --quiet -y -t bullseye-backports git docker.io + ./lxc.sh + ./docker.sh ./forgejo.sh setup root admin1234 codeberg.org/forgejo/forgejo:1.19 ./forgejo-runner.sh setup - testdata/run.sh main http://root:admin1234@$(cat forgejo-ip):3000 root demo + # + # Can this Forgejo & runner combination... + # + # + # ...run a demo workflow (stage 0) + # + # testdata/run.sh workflow http://root:admin1234@$(cat forgejo-ip):3000 root demo + # + # ...run this integration test (stage 1) + # + testdata/run.sh self http://root:admin1234@$(cat forgejo-ip):3000 root diff --git a/docker.sh b/docker.sh new file mode 100755 index 0000000..bfbee07 --- /dev/null +++ b/docker.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +set -x + +setup() { + if ! systemctl is-active --quiet docker; then + echo deb http://deb.debian.org/debian bullseye-backports main | tee /etc/apt/sources.list.d/backports.list && apt-get update + DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends --quiet -y -t bullseye-backports git docker.io + fi +} + +setup diff --git a/forgejo-runner.sh b/forgejo-runner.sh index 3004bcf..5ef6b54 100755 --- a/forgejo-runner.sh +++ b/forgejo-runner.sh @@ -35,7 +35,7 @@ function build() { function register() { local forgejo="$1" docker exec --user 1000 forgejo forgejo actions --registration-token-admin > forgejo-runner-token - timeout --signal=KILL 30 ./forgejo-runner/forgejo-runner register --no-interactive --instance "$forgejo" --name runner --token $(cat forgejo-runner-token) + timeout --signal=KILL 30 ./forgejo-runner/forgejo-runner register --no-interactive --instance "$forgejo" --name runner --token $(cat forgejo-runner-token) --labels ubuntu-latest:docker://node:16-buster,self-hosted } function run() { diff --git a/lxc.sh b/lxc.sh new file mode 100755 index 0000000..93886c6 --- /dev/null +++ b/lxc.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +set -x + +setup() { + if ! systemctl is-active --quiet lxc-net; then + apt-get update + DEBIAN_FRONTEND=noninteractive apt-get install -y -qq make git libvirt0 libpam-cgfs bridge-utils uidmap dnsmasq-base dnsmasq dnsmasq-utils qemu-user-static + systemctl disable --now dnsmasq + apt-get install -y -qq lxc + systemctl stop lxc-net + cat >> /etc/default/lxc-net <<'EOF' +LXC_ADDR="10.0.7.1" +LXC_NETMASK="255.255.255.0" +LXC_NETWORK="10.0.7.0/24" +LXC_DHCP_RANGE="10.0.7.2,10.0.7.254" +LXC_DHCP_MAX="253" +EOF + systemctl start lxc-net + fi +} + +setup diff --git a/testdata/run.sh b/testdata/run.sh index b090c9a..6f7c4c5 100755 --- a/testdata/run.sh +++ b/testdata/run.sh @@ -39,10 +39,11 @@ function push() { local owner="$2" local workflow="$3" - mkdir -p $DIR/.forgejo/workflows - cp $DATA/$workflow.yml $DIR/.forgejo/workflows + local dir="$DIR/$workflow" + mkdir -p $dir/.forgejo/workflows + cp $DATA/$workflow.yml $dir/.forgejo/workflows ( - cd $DIR + cd $dir git init git checkout -b main git config user.email root@example.com @@ -55,13 +56,27 @@ function push() { ) } -function main() { +function workflow() { local forgejo="${1:-http://root:admin1234@$(forgejo-ip):3000}" local owner="${2:-root}" local workflow="${3:-demo}" push "$forgejo" "$owner" "$workflow" - wait_success "$forgejo" "$owner/$workflow" $(cat $DIR/SHA) + wait_success "$forgejo" "$owner/$workflow" $(cat $DIR/$workflow/SHA) +} + +function self() { + local forgejo="$1" + local owner="$2" + + local dir="$DIR/self" + if git remote | grep -q test-setup-forgejo; then + git remote rm test-setup-forgejo + fi + git remote add test-setup-forgejo $forgejo/$owner/setup-forgejo + git push test-setup-forgejo HEAD:main + + wait_success "$forgejo" "$owner/setup-forgejo" $(git rev-parse HEAD) } "$@"