Skip to content

chore(config): migrate Renovate config #71

chore(config): migrate Renovate config

chore(config): migrate Renovate config #71

Workflow file for this run

name: Build, Test & Publish
on:
push:
branches:
- "main"
- "dev"
tags:
- 'v*.*.*'
pull_request:
branches:
- 'main'
jobs:
docker:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
-
name: Docker meta
id: meta
uses: docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf # v6.0.0
with:
# list of Docker images to use as base name for tags
images: |
${{ github.repository_owner }}/haproxy
ghcr.io/${{ github.repository_owner }}/haproxy
labels: |
org.opencontainers.image.authors=the pygmy stack, The HAProxy Community (HAProxy)
org.opencontainers.image.description=dnsmasq DNS proxy, configured for use with the pygmy stack
-
name: Set up QEMU
uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4.0.0
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
-
name: Login to DockerHub
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Login to GHCR
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
-
name: Build and push
uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
with:
context: .
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
test:
needs: docker
runs-on: ubuntu-latest
steps:
-
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
# Establish some SSH keys.
-
name: Setup SSH
run: |
eval "$(ssh-agent)";
ssh-keygen -t rsa -q -f "$HOME/.ssh/id_rsa" -N "";
ssh-keygen -t rsa -q -f "$HOME/.ssh/id_pwd" -N "passphrase";
ssh-add;
ssh-add -l;
-
name: Docker meta
id: meta
uses: docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf # v6.0.0
with:
# list of Docker images to use as base name for tags
images: |
ghcr.io/${{ github.repository_owner }}/haproxy
flavor: |
latest=false
-
name: Set single image tag
id: single_tag
run: |
echo "tag=$(echo '${{ steps.meta.outputs.tags }}' | head -n1)" >> "$GITHUB_OUTPUT"
-
name: Find and Replace
env:
IMAGE_TAG: ${{ steps.single_tag.outputs.tag }}
run: |
find examples/ -type f -exec sed -i.bak "s|ghcr.io/pygmystack/haproxy:main|${IMAGE_TAG}|g" {} \;
find examples/ -name "*.bak" -delete
grep -n ghcr examples/*
-
name: Set up Homebrew
uses: Homebrew/actions/setup-homebrew@59e6b20d96df1a3c9ccb0aa402676e01a4cc6ff3 # main
-
name: Install homebrew packages
env:
HOMEBREW_NO_AUTO_UPDATE: 1
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
HOMEBREW_NO_ENV_HINTS: 1
run: |
brew install bats-core;
brew install dockerize;
brew install pygmystack/pygmy/pygmy;
pygmy version;
-
name: Pull image for tests
run: docker pull ${{ steps.single_tag.outputs.tag }}
-
name: Run BATS tests
env:
IMAGE_NAME: ${{ steps.single_tag.outputs.tag }}
run: |
bats --tap tests/image_structure.bats
bats --tap tests/runtime.bats
-
name: Switch pygmy configs from vanilla to basic
run: |
pygmy status;
pygmy clean;
pygmy --config examples/pygmy.basic.yml pull;
pygmy --config examples/pygmy.basic.yml up;
sleep 10;
pygmy --config examples/pygmy.basic.yml status;
-
name: Show pygmy image versions
run: |
docker ps -a --filter "label=pygmy.name"
-
name: Export and show configuration - pygmy.basic.yml
run: |
pygmy --config examples/pygmy.basic.yml export -o ./exported-config.yml
cat ./exported-config.yml
echo "Checking image references in started containers...";
docker container inspect amazeeio-haproxy | jq '.[].Config.Image' | grep -F '${{ steps.single_tag.outputs.tag }}';
-
name: Resolv file test
run: |
stat /usr/lib/systemd/resolved.conf.d/docker.amazee.io.conf;
grep "127.0.0.1" /usr/lib/systemd/resolved.conf.d/docker.amazee.io.conf;
grep "docker.amazee.io" /usr/lib/systemd/resolved.conf.d/docker.amazee.io.conf;
-
name: haproxy test
run: |
curl http://docker.amazee.io/stats | grep 'class=px' | grep 'mailhog.docker.amazee.io';
curl http://docker.amazee.io/stats | grep 'HAProxy version';
-
name: mailhog test
run: |
curl http://mailhog.docker.amazee.io | grep 'mailhog/MailHog';
-
name: dnsmasq version
run: |
docker exec amazeeio-dnsmasq sh -c 'dnsmasq -v' | grep 'Dnsmasq version'
-
name: ssh version
run: |
docker exec amazeeio-ssh-agent sh -c 'ssh -V'
-
name: Test the amazeeio-network for expected results
run: |
docker network inspect amazeeio-network | jq '.[].Name' | grep "amazeeio-network";
docker network inspect amazeeio-network | jq '.[].Containers' | jq '.[].Name' | grep "amazeeio-haproxy";
docker network inspect amazeeio-network | jq '.[].Containers' | jq '.[].Name' | grep "amazeeio-mailhog";
docker network inspect amazeeio-network | jq '.[].Containers' | jq '.[].IPv4Address';
docker network inspect amazeeio-network | jq '.[].Containers' | jq '.[].IPv4Address' | grep "10.99.99.";
-
name: Test for configured container tags.
run: |
docker inspect amazeeio-dnsmasq | jq '.[].Config.Labels["pygmy.hocuspocus"]' | grep "42";
docker inspect amazeeio-dnsmasq | jq '.[].Config.Labels["pygmy.abracadabra"]' | grep "1";
docker inspect amazeeio-dnsmasq | jq '.[].Config.Labels["pygmy.opensesame"]' | grep "correct";
docker inspect amazeeio-haproxy | jq '.[].Config.Labels["pygmy.hocuspocus"]' | grep "42";
docker inspect amazeeio-haproxy | jq '.[].Config.Labels["pygmy.abracadabra"]' | grep "1";
docker inspect amazeeio-haproxy | jq '.[].Config.Labels["pygmy.opensesame"]' | grep "correct";
docker inspect amazeeio-ssh-agent | jq '.[].Config.Labels["pygmy.hocuspocus"]' | grep "42";
docker inspect amazeeio-ssh-agent | jq '.[].Config.Labels["pygmy.abracadabra"]' | grep "1";
docker inspect amazeeio-ssh-agent | jq '.[].Config.Labels["pygmy.opensesame"]' | grep "correct";
docker inspect amazeeio-mailhog | jq '.[].Config.Labels["pygmy.hocuspocus"]' | grep "42";
docker inspect amazeeio-mailhog | jq '.[].Config.Labels["pygmy.abracadabra"]' | grep "1";
docker inspect amazeeio-mailhog | jq '.[].Config.Labels["pygmy.opensesame"]' | grep "correct";
-
name: Switch pygmy configs from basic to vanilla
run: |
pygmy --config examples/pygmy.basic.yml status;
pygmy --config examples/pygmy.basic.yml clean;
pygmy --config examples/pygmy.yml pull;
pygmy --config examples/pygmy.yml up;
sleep 10;
pygmy --config examples/pygmy.yml status;
-
name: Export and show configuration - pygmy.yml
run: |
pygmy --config examples/pygmy.yml export -o ./exported-config-2.yml
cat ./exported-config-2.yml
echo "Checking image references in started containers...";
docker container inspect amazeeio-haproxy | jq '.[].Config.Image' | grep -F '${{ steps.single_tag.outputs.tag }}';
-
name: SSH Key test
run: |
pygmy --config examples/pygmy.yml addkey /home/runner/.ssh/id_rsa;
pygmy --config examples/pygmy.yml status;
pygmy --config examples/pygmy.yml status | grep 'RSA';
docker run --rm -i --volumes-from amazeeio-ssh-agent pygmystack/ssh-agent /usr/bin/ssh-add -l | grep 'RSA';
-
name: Clone the official examples
run: |
git clone --recurse-submodules https://github.com/uselagoon/lagoon-examples.git
-
name: "[Example] Drupal Base"
run: |
cd lagoon-examples/drupal-base;
docker compose -p drupal-base up -d;
docker compose -p drupal-base exec -T cli composer install;
dockerize -wait http://drupal-base.docker.amazee.io:80 -timeout 10s;
curl --head http://drupal-base.docker.amazee.io;
curl --head http://drupal-base.docker.amazee.io | grep -i "x-lagoon";
pygmy --config examples/pygmy.yml status | grep '\- http://drupal-base.docker.amazee.io';
docker compose -p drupal-base down;
docker compose -p drupal-base rm -f;
cd ../../;
-
name: Test the stop command
run: |
pygmy --config examples/pygmy.yml down | grep 'Successfully removed amazeeio';
pygmy --config examples/pygmy.yml status | grep '\[ \] amazeeio-' | grep 'is not running';
pygmy --config examples/pygmy.yml status | grep 'Running as container amazeeio-' && false || true;
pygmy --config examples/pygmy.yml up;
pygmy --config examples/pygmy.yml status | grep 'Running as container amazeeio-' && true || false;
-
name: Test the down command
run: |
pygmy --config examples/pygmy.yml stop | grep 'Successfully stopped amazeeio';
pygmy --config examples/pygmy.yml status | grep '\[ \] amazeeio-' | grep 'is not running';
pygmy --config examples/pygmy.yml status | grep 'Running as container amazeeio-' && false || true;
pygmy --config examples/pygmy.yml up;
pygmy --config examples/pygmy.yml status | grep 'Running as container amazeeio-' && true || false;
-
name: Cleanup pygmy
run: |
pygmy --config examples/pygmy.yml clean;
-
name: Cleanup after tests.
run: |
docker system prune --all --force
docker volume prune --force