Align github actions routines between all images #13
Workflow file for this run
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: 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 |