Skip to content

Commit

Permalink
Merge pull request #26 from pygmystack/dev
Browse files Browse the repository at this point in the history
Add Github Actions test with overridden image
  • Loading branch information
tobybellwood authored Feb 28, 2024
2 parents 96094ff + f1e9a03 commit bc2e855
Show file tree
Hide file tree
Showing 4 changed files with 298 additions and 59 deletions.
59 changes: 0 additions & 59 deletions .github/workflows/build_and_publish.yml

This file was deleted.

213 changes: 213 additions & 0 deletions .github/workflows/build_and_test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,213 @@
name: Build & 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
-
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;
-
name: Basic test
run: |
pygmy --config examples/pygmy.basic.yml pull;
pygmy --config examples/pygmy.basic.yml status;
pygmy --config examples/pygmy.basic.yml up;
pygmy --config examples/pygmy.basic.yml status;
pygmy --config examples/pygmy.basic.yml version;
-
name: Show pygmy image versions
run: |
docker ps -a --filter "label=pygmy.name"
-
name: Export configuration
run: pygmy --config examples/pygmy.basic.yml export -o ./exported-config.yml
-
name: Show configuration
run: cat ./exported-config.yml
# -
# name: SSH Key test
# run: |
# pygmy addkey /home/runner/.ssh/id_rsa.pub;
# pygmy status;
# pygmy status | grep 'id_rsa';
# docker run --rm -i --volumes-from amazeeio-ssh-agent uselagoon/php-7.4-cli /usr/bin/ssh-add -l | grep 'id_rsa';
-
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: 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 '.[].Name' | grep "amazeeio-portainer";
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-portainer | jq '.[].Config.Labels["pygmy.hocuspocus"]' | grep "42";
docker inspect amazeeio-portainer | jq '.[].Config.Labels["pygmy.abracadabra"]' | grep "1";
docker inspect amazeeio-portainer | 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: Cowsay test
run: pygmy --config examples/pygmy.basic.yml up | grep 'holy ship' || true;
-
name: Test the container image overrides configuration
run: |
echo "Checking image references in started containers...";
docker container inspect amazeeio-haproxy | jq '.[].Config.Image' | grep '${{ steps.meta.outputs.tags }}';
pygmy --config examples/pygmy.basic.yml clean;
pygmy --config examples/pygmy.yml up;
echo "Checking image references in started containers...";
docker container inspect amazeeio-haproxy | jq '.[].Config.Image' | grep '${{ steps.meta.outputs.tags }}';
-
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 clean;
-
name: Cleanup after tests.
run: |
docker system prune --all --force
docker volume prune --force
82 changes: 82 additions & 0 deletions examples/pygmy.basic.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
services:

amazeeio-dnsmasq:
Config:
Labels:
- pygmy.hocuspocus: 42
- pygmy.abracadabra: true
- pygmy.opensesame: correct

amazeeio-haproxy:
image: ghcr.io/pygmystack/haproxy:main
Config:
Labels:
- pygmy.hocuspocus: 42
- pygmy.abracadabra: true
- pygmy.opensesame: correct

amazeeio-mailhog:
Config:
Labels:
- pygmy.hocuspocus: 42
- pygmy.abracadabra: true
- pygmy.opensesame: correct

amazeeio-ssh-agent:
Config:
Labels:
- pygmy.hocuspocus: 42
- pygmy.abracadabra: true
- pygmy.opensesame: correct

amazeeio-ssh-agent-add-key:
Config:
Labels:
- pygmy.enable: false

amazeeio-portainer:
Config:
Image: portainer/portainer
Env:
- "AMAZEEIO=AMAZEEIO"
- "AMAZEEIO_URL=portainer.docker.amazee.io"
- "AMAZEEIO_HTTP_PORT=9000"
Labels:
- pygmy.enable: true
- pygmy.name: amazeeio-portainer
- pygmy.network: amazeeio-network
- pygmy.weight: 23
- pygmy.url: http://portainer.docker.amazee.io
- pygmy.hocuspocus: 42
- pygmy.abracadabra: true
- pygmy.opensesame: correct
ExposedPorts:
9000/tcp: {}
HostConfig:
Binds:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
PortBindings:
8000/tcp:
- HostPort: 8200
9000/tcp:
- HostPort: 8100

pygmy-cowsay:
Config:
Image: mbentley/cowsay
Cmd:
- holy
- ship
Labels:
- pygmy.enable: true
- pygmy.discrete: false
- pygmy.name: pygmy-cowsay
- pygmy.output: true
- pygmy.weight: 99
HostConfig:
AutoRemove: true

volumes:
portainer_data:
Name: portainer_data
3 changes: 3 additions & 0 deletions examples/pygmy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
services:
amazeeio-haproxy:
image: ghcr.io/pygmystack/haproxy:main

0 comments on commit bc2e855

Please sign in to comment.