Skip to content

Commit

Permalink
Merge pull request #4 from mrc-ide/gh-actions
Browse files Browse the repository at this point in the history
Move docker image build to github actions
  • Loading branch information
r-ash authored Jul 12, 2024
2 parents 93a24f3 + bc82426 commit bec0c00
Show file tree
Hide file tree
Showing 8 changed files with 110 additions and 23 deletions.
1 change: 1 addition & 0 deletions .github/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.html
92 changes: 92 additions & 0 deletions .github/workflows/docker.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
name: Build Docker Image

on:
push:
branches: [main, master]
pull_request:
branches: [main, master]

env:
TAG_LOADBALANCER: mrcide/hintr-loadbalancer
TAG_LOADBALANCER_GHCR: mrc-ide/hintr-loadbalancer

jobs:
docker:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- id: extract_branch
name: Setup Environment
shell: bash
run: |
if [ "${{github.event_name}}" = "pull_request" ];
then
LONG_SHA=${{ github.event.pull_request.head.sha }}
echo "CI_BRANCH=${{ github.head_ref }}" >> $GITHUB_OUTPUT
else
LONG_SHA=${GITHUB_SHA}
echo "CI_BRANCH=${{ github.ref_name }}" >> $GITHUB_OUTPUT
fi
echo "CI_SHA=${LONG_SHA:0:7}" >> $GITHUB_OUTPUT
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Login to GHCR (GitHub Packages)
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build dev loadbalancer container
uses: docker/build-push-action@v6
if: github.event_name == 'pull_request'
with:
load: true
tags: |
${{env.TAG_LOADBALANCER}}:${{steps.extract_branch.outputs.CI_BRANCH}}
ghcr.io/${{env.TAG_LOADBALANCER_GHCR}}:${{steps.extract_branch.outputs.CI_BRANCH}}
- name: Build prod loadbalancer container
uses: docker/build-push-action@v6
if: github.event_name != 'pull_request'
with:
load: true
tags: |
${{env.TAG_LOADBALANCER}}:latest
${{env.TAG_LOADBALANCER}}:${{steps.extract_branch.outputs.CI_BRANCH}}
ghcr.io/${{env.TAG_LOADBALANCER_GHCR}}:latest
ghcr.io/${{env.TAG_LOADBALANCER_GHCR}}:${{steps.extract_branch.outputs.CI_BRANCH}}
- name: Test loadbalancer container
run: ./test
env:
TAG_BRANCH: ${{env.TAG_LOADBALANCER}}:${{steps.extract_branch.outputs.CI_BRANCH}}

- name: Push dev loadbalancer container
uses: docker/build-push-action@v6
if: github.event_name == 'pull_request'
with:
push: true
tags: |
${{env.TAG_LOADBALANCER}}:${{steps.extract_branch.outputs.CI_BRANCH}}
ghcr.io/${{env.TAG_LOADBALANCER_GHCR}}:${{steps.extract_branch.outputs.CI_BRANCH}}
- name: Push prod loadbalancer container
uses: docker/build-push-action@v6
if: github.event_name != 'pull_request'
with:
push: true
tags: |
${{env.TAG_LOADBALANCER}}:latest
${{env.TAG_LOADBALANCER}}:${{steps.extract_branch.outputs.CI_BRANCH}}
ghcr.io/${{env.TAG_LOADBALANCER_GHCR}}:latest
ghcr.io/${{env.TAG_LOADBALANCER_GHCR}}:${{steps.extract_branch.outputs.CI_BRANCH}}
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.idea
3 changes: 2 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@

FROM haproxytech/haproxy-debian:2.6
FROM haproxytech/haproxy-debian:3.0

RUN apt-get update && apt-get install -y \
jq

COPY bin /usr/local/bin
COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg
COPY dataplaneapi.yaml /etc/haproxy/dataplaneapi.yaml
14 changes: 0 additions & 14 deletions buildkite/pipeline.yml

This file was deleted.

12 changes: 12 additions & 0 deletions dataplaneapi.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
dataplaneapi:
host: "0.0.0.0"
port: 5555
userlist:
userlist: "haproxy-dataplaneapi"
haproxy:
reload:
reload_cmd: "kill -SIGUSR2 1"
restart_cmd: "kill -SIGUSR2 1"
reload_delay: 5
config_file: "/usr/local/etc/haproxy/haproxy.cfg"
haproxy_bin: "/usr/sbin/haproxy"
3 changes: 1 addition & 2 deletions haproxy.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ global
defaults
mode http
log global
option httplog
log-format '{"time": "%tr", "server_queue_size": %sq, "backend_queue_size": %bq, "request": %{+Q}r}'
timeout client 60s
timeout connect 5s
Expand All @@ -25,5 +24,5 @@ userlist haproxy-dataplaneapi
user admin insecure-password mypassword

program api
command /usr/bin/dataplaneapi --host 0.0.0.0 --port 5555 --haproxy-bin /usr/sbin/haproxy --config-file /usr/local/etc/haproxy/haproxy.cfg --reload-cmd "kill -SIGUSR2 1" --reload-delay 5 --userlist haproxy-dataplaneapi
command dataplaneapi
no option start-on-reload
7 changes: 1 addition & 6 deletions test
Original file line number Diff line number Diff line change
@@ -1,10 +1,5 @@
#!/usr/bin/env bash
set -ex
HERE=$(dirname $0)
. $HERE/common

# In case we switch agents between steps or tag has been updated
docker pull $TAG_SHA

NAME_NETWORK=hintr_network
NAME_LOADBALANCER=hintr_loadbalancer
Expand Down Expand Up @@ -34,7 +29,7 @@ docker run --rm -d --network=$NAME_NETWORK \
docker run --rm -d --network=$NAME_NETWORK \
-p 8888:8888 \
--name $NAME_LOADBALANCER \
$TAG_SHA
"$TAG_BRANCH"

## Data API is running
sleep 2
Expand Down

0 comments on commit bec0c00

Please sign in to comment.