website/.forgejo/workflows/build.yml
Sangelo 387b400d78
All checks were successful
Build and push docker image / publish (push) Successful in 52s
[c] fix build pipeline.. again x2...
2024-06-03 21:05:45 +02:00

55 lines
2 KiB
YAML

name: Build and push docker image
# start workflow every time a tag/release is created
on:
push:
tags:
- '*'
jobs:
publish:
runs-on: ubuntu-latest
container:
image: ghcr.io/catthehacker/ubuntu:act-latest
volumes:
- /var/run/docker.sock:/var/run/docker.sock
defaults:
run:
working-directory: /tmp
# build the docker container
steps:
- name: ✨ Installing just command runner
run: |
# download and extract just to /bin/just
curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --to /bin
just --help || echo "Error: 'just' wasn't found. Maybe the download failed?"
- name: ⬇️ Checkout Repository
uses: actions/checkout@v4
- name: Update debug.json with Git info
run: |
export TAG=$(echo "${{ github.ref }}" | sed 's/refs\/tags\///')
export SHA=$(echo "${{ github.sha }}")
sed -i "s|\"commit\": \"\"|\"commit\": \"$SHA\"|" /workspace/sangelo/website/static/assets/debug.json
sed -i "s|\"tag\": \"\"|\"tag\": \"$TAG\"|" /workspace/sangelo/website/static/assets/debug.json
- name: 🐋 Build Container
run: |
# extract tag name without the prefix
export TAG=$(echo "${{ github.ref }}" | sed 's/refs\/tags\///')
# build the container
just -f /workspace/sangelo/website/Justfile build "${TAG}"
- name: 🐳 Publish Container
run: |
export TAG=$(echo "${{ github.ref }}" | sed 's/refs\/tags\///')
echo "${{ secrets.PUBLISH_TOKEN }}" | docker login gitpot.org -u sangelo --password-stdin
docker push "gitpot.org/sangelo/website:${TAG}"
# publish tag latest as well
if echo "${{ github.ref }}" | grep -q "refs/tags/"; then
docker tag "gitpot.org/sangelo/website:${TAG}" "gitpot.org/sangelo/website:latest"
docker push "gitpot.org/sangelo/website:latest"
fi