Skip to content

Build Webtrees

Build Webtrees #346

Workflow file for this run

# Build Pipeline for Webtrees
# Behaviour:
# Any commit leads to building the docker container and testing the container
# Handling of tags:
# - v1.2.3-1 -> tagged as dtjs48jkt/webtrees:v1.2.3-1, pushed to docker hub, manifest created with latest
# - v1.2.3-1-test -> (contains test) tagged as dtjs48jkt/webtrees-dev:v1.2.3-1-test, pushed to docker hub, manifest created with test
# - v1.2.3-1-beta -> (contains beta) tagged as dtjs48jkt/webtrees-dev:v1.2.3-1-beta, pushed to docker hub, manifest created with beta
# Supported characters in tag [a-zA-Z0-9\.-]
name: "Build Webtrees"
on:
push:
branches:
- "*"
tags:
- v[0-9]+.[0-9]+.[0-9]+**
pull_request:
branches:
- "*"
# schedule:
# -cron: '0 0 * * 0' # weekly
workflow_dispatch:
branches:
- "*"
env:
QEMU_VERSION: "v5.1.0-7"
DOCKER_FILE: Dockerfile.github
COMMIT_SHA: ${{ github.sha }}
DOCKER_USERNAME: ${{ secrets.DOCKER_USER }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_TOKEN }}
jobs:
build:
runs-on: ubuntu-20.04
strategy:
matrix:
include:
- arch: "amd64"
qemu-arch: "x86_64"
- arch: "arm32v7"
qemu-arch: "arm"
- arch: "arm64v8"
qemu-arch: "aarch64"
- arch: "ppc64le"
qemu-arch: "ppc64le"
- arch: "s390x"
qemu-arch: "s390x"
steps:
- uses: actions/checkout@v3
- name: Preparation
id: prep
run: |
BRANCH=$(echo ${GITHUB_REF} | sed -e "s/refs\/heads\///g")
TAG=$(echo ${GITHUB_REF} | sed -e "s/refs\/tags\///g")
echo "BRANCH: ${BRANCH}"
echo "TAG: ${TAG}"
echo "TARGET=${DOCKER_USERNAME}/webtrees-dev" >> $GITHUB_OUTPUT
echo "BUILD_VERSION=$(echo ${GITHUB_SHA} | cut -c1-8)" >> $GITHUB_OUTPUT
echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT
echo "WT_VERSION=$(grep -oE 'WT_VERSION=(\w*.\w*.\w*)' Dockerfile.github | cut -d= -f2)" >> $GITHUB_OUTPUT
if [[ "${TAG}" =~ ^v[0-9\.-]*$ ]]; then
echo "TARGET=${DOCKER_USERNAME}/webtrees" >> $GITHUB_OUTPUT
fi
if [[ "${TAG}" =~ ^v[0-9\.-]*[a-zA-Z0-9\.-]+$ ]]; then
echo "BUILD_VERSION=${TAG}" >> $GITHUB_OUTPUT
fi
if [[ "${TAG}" =~ ^refs\/pull.*$ ]]; then
echo "BUILD_VERSION=build-pull" >> $GITHUB_OUTPUT
fi
chmod 775 docker.sh
./docker.sh prepare
- name: "Build Docker Image"
env:
ARCH: ${{ matrix.arch }}
QEMU_ARCH: ${{ matrix.qemu-arch }}
BUILD_VERSION: ${{ steps.prep.outputs.BUILD_VERSION }}
BUILD_DATE: ${{ steps.prep.outputs.BUILD_DATE }}
BUILD_REF: ${{ env.COMMIT_SHA }}
TARGET: ${{ steps.prep.outputs.TARGET }}
WT_VERSION: ${{ steps.prep.outputs.WT_VERSION }}
run: |
echo "BUILD_VERSION: $BUILD_VERSION"
echo BUILD_DATE: $BUILD_DATE
echo BUILD_REF: $BUILD_REF
echo TARGET: ${{ env.TARGET }}
echo COMMIT_SHA: ${{ env.COMMIT_SHA }}
echo WT_VERSION: $WT_VERSION
./docker.sh build
- name: "Test Docker Image"
env:
ARCH: ${{ matrix.arch }}
QEMU_ARCH: ${{ matrix.qemu-arch }}
BUILD_VERSION: ${{ steps.prep.outputs.BUILD_VERSION }}
BUILD_DATE: ${{ steps.prep.outputs.BUILD_DATE }}
BUILD_REF: ${{ env.COMMIT_SHA }}
TARGET: ${{ steps.prep.outputs.TARGET }}
WT_VERSION: ${{ steps.prep.outputs.WT_VERSION }}
run: ./docker.sh test
- name: "Push Docker Image"
if: startsWith(github.ref, 'refs/tags/v')
env:
ARCH: ${{ matrix.arch }}
QEMU_ARCH: ${{ matrix.qemu-arch }}
BUILD_VERSION: ${{ steps.prep.outputs.BUILD_VERSION }}
BUILD_DATE: ${{ steps.prep.outputs.BUILD_DATE }}
BUILD_REF: ${{ env.COMMIT_SHA }}
TARGET: ${{ steps.prep.outputs.TARGET }}
WT_VERSION: ${{ steps.prep.outputs.WT_VERSION }}
run: |
if [[ "${{ env.BUILD_VERSION }}" =~ ^v[0-9\.-]*[a-zA-Z0-9\.-]*$ ]]; then
./docker.sh tag
echo "${DOCKER_PASSWORD}" | docker login -u "${DOCKER_USERNAME}" --password-stdin
./docker.sh push
docker logout
fi
manifest:
needs: build
runs-on: ubuntu-20.04
if: startsWith(github.ref, 'refs/tags/v')
steps:
- uses: actions/checkout@v3
- name: Preparation
id: prep
run: |
BRANCH=$(echo ${GITHUB_REF} | sed -e "s/refs\/heads\///g")
TAG=$(echo ${GITHUB_REF} | sed -e "s/refs\/tags\///g")
echo "BRANCH: ${BRANCH}"
echo "TAG: ${TAG}"
echo "TARGET=${DOCKER_USERNAME}/webtrees-dev" >> $GITHUB_OUTPUT
echo "BUILD_VERSION=$(echo ${GITHUB_SHA} | cut -c1-8)" >> $GITHUB_OUTPUT
echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT
echo "WT_VERSION=$(grep -oE 'WT_VERSION=(\w*.\w*.\w*)' Dockerfile.github | cut -d= -f2)" >> $GITHUB_OUTPUT
if [[ "${TAG}" =~ ^v[0-9\.-]*$ ]]; then
echo "TARGET=${DOCKER_USERNAME}/webtrees" >> $GITHUB_OUTPUT
fi
if [[ "${TAG}" =~ ^v[0-9\.-]*[a-zA-Z0-9\.-]+$ ]]; then
echo "BUILD_VERSION=${TAG}" >> $GITHUB_OUTPUT
fi
chmod 775 docker.sh
./docker.sh prepare
- name: "Create and push manifest"
id: manifest
env:
ARCH: ${{ matrix.arch }}
QEMU_ARCH: ${{ matrix.qemu-arch }}
BUILD_VERSION: ${{ steps.prep.outputs.BUILD_VERSION }}
BUILD_DATE: ${{ steps.prep.outputs.BUILD_DATE }}
BUILD_REF: ${{ env.COMMIT_SHA }}
TARGET: ${{ steps.prep.outputs.TARGET }}
WT_VERSION: ${{ steps.prep.outputs.WT_VERSION }}
run: |
echo "BUILD_VERSION: $BUILD_VERSION"
echo BUILD_DATE: $BUILD_DATE
echo BUILD_REF: $BUILD_REF
echo TARGET: ${{ env.TARGET }}
echo COMMIT_SHA: ${{ env.COMMIT_SHA }}
echo WT_VERSION: $WT_VERSION
if [[ "${{ env.BUILD_VERSION }}" =~ ^v[0-9\.-]*[a-zA-Z0-9\.-]*$ ]]; then
echo Writing Manifest.
echo "${DOCKER_PASSWORD}" | docker login -u "${DOCKER_USERNAME}" --password-stdin
./docker.sh manifest-list-version
# ./docker.sh manifest-list-test-beta-latest Deactivated for 2.0.x version
docker logout
else
echo Skipped writing Manifest.
fi