Skip to content

Main

Main #11

Workflow file for this run

name: Main
on: [push, pull_request]
env:
app_image: seboknt/gargantua
should_push_image: |-
${{
github.event_name == 'push' && (
startsWith(github.event.ref, 'refs/tags/')
|| endsWith(github.event.ref, '/master')
)
}}
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@master
- name: Compute Docker Tag
if: fromJSON(env.should_push_image)
id: compute_docker_tag
run: |
tag=${GITHUB_REF#refs/tags/}
branch=${GITHUB_REF#refs/heads/}
if [ "$tag" != "$GITHUB_REF" ]; then
tag=$(echo "$tag" | sed -e 's/[^a-zA-Z0-9\-\.]/-/g')
echo ::set-output name=DOCKER_TAG::${tag}
elif [ "$branch" != "$GITHUB_REF" ]; then
branch=$(echo "$branch" | sed -e 's/[^a-zA-Z0-9\-\.]/-/g')
echo ::set-output name=DOCKER_TAG::${branch}
else
echo "unable to determine docker tag" >&2
exit 1
fi
- name: Docker setup env
if: fromJSON(env.should_push_image)
run: |
echo "${{ secrets.DOCKER_HUB_PASSWORD }}" \
| docker login -u "${{ secrets.DOCKER_HUB_USER }}" --password-stdin
docker buildx create --use
- name: Docker build and push
if: fromJSON(env.should_push_image)
run: |
docker buildx build --push --platform linux/amd64,linux/arm64 \
-t $app_image:${{ steps.compute_docker_tag.outputs.DOCKER_TAG }} \
-f cicd/Dockerfile .
- name: Docker build & push latest
if: |
github.event_name == 'push' && (
startsWith(github.event.ref, 'refs/tags/')
)
run: |
docker buildx build --push --platform linux/amd64,linux/arm64 \
-t $app_image:latest \
-f cicd/Dockerfile .