Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
248 changes: 8 additions & 240 deletions .github/workflows/build_and_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,243 +12,11 @@ on:
- '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
ci:
uses: pygmystack/.github/.github/workflows/container-build-test-publish.yml@main
with:
image_name: haproxy
replace_source: ghcr.io/pygmystack/haproxy:main
oc_authors: the pygmy stack, The HAProxy Community (HAProxy)
oc_description: HAProxy reverse proxy, configured for use with the pygmy stack
secrets: inherit
6 changes: 0 additions & 6 deletions renovate.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,5 @@
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:recommended"
],
"packageRules": [
{
"matchManagers": ["github-actions"],
"groupName": "GitHub actions"
}
]
}