Skip to content

Merge pull request #28 from pygmystack/dev #14

Merge pull request #28 from pygmystack/dev

Merge pull request #28 from pygmystack/dev #14

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@v4
-
name: Docker meta
id: meta
uses: docker/metadata-action@v5
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@v3
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
-
name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Login to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
-
name: Build and push
uses: docker/build-push-action@v5
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-22.04
steps:
-
uses: actions/checkout@v4
# 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@v5
with:
# list of Docker images to use as base name for tags
images: |
ghcr.io/${{ github.repository_owner }}/haproxy
flavor: |
latest=false
-
name: Find and Replace
uses: jacobtomlinson/gha-find-replace@v3
with:
find: "ghcr.io/pygmystack/haproxy:main"
replace: ${{ steps.meta.outputs.tags }}
include: "examples/**"
-
name: Show changes
run: |
grep -n ghcr examples/*
-
name: Install pygmy and dockerize via brew
run: |
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)";
brew tap pygmystack/pygmy;
brew install pygmy;
brew install dockerize;
echo "/home/linuxbrew/.linuxbrew/bin" >> $GITHUB_PATH;
pygmy version;
-
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 '${{ steps.meta.outputs.tags }}';
-
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 '${{ steps.meta.outputs.tags }}';
-
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;
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