62 lines
No EOL
2.6 KiB
YAML
62 lines
No EOL
2.6 KiB
YAML
name: build-image-from-tag
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
branches: [main]
|
|
jobs:
|
|
build:
|
|
# Don't build the image if the registry credentials are not set, the ref is not a tag or it doesn't contain '-v'
|
|
if: ${{ vars.REGISTRY_USER != '' && secrets.REGISTRY_PASS != '' && startsWith(github.ref, 'refs/tags/') && contains(github.ref, '-v') }}
|
|
runs-on: docker
|
|
container:
|
|
image: git.badblocks.dev/oci/pkmntrade-club_web:latest
|
|
# Mount the dind socket on the container at the default location
|
|
options: -v /dind/docker.sock:/var/run/docker.sock
|
|
steps:
|
|
- name: Extract image name and tag from git and get registry name from env
|
|
id: job_data
|
|
run: |
|
|
echo "::set-output name=img_name::${GITHUB_REF_NAME%%-v*}"
|
|
echo "::set-output name=img_tag::${GITHUB_REF_NAME##*-v}"
|
|
echo "::set-output name=registry::$(
|
|
echo "${{ github.server_url }}" | sed -e 's%https://%%'
|
|
)"
|
|
echo "::set-output name=oci_registry_prefix::$(
|
|
echo "${{ github.server_url }}/oci" | sed -e 's%https://%%'
|
|
)"
|
|
- name: Checkout the repo
|
|
uses: actions/checkout@v4
|
|
- name: Export build dir and Dockerfile
|
|
id: build_data
|
|
run: |
|
|
img="${{ steps.job_data.outputs.img_name }}"
|
|
build_dir="$(pwd)/${img}"
|
|
dockerfile="${build_dir}/Dockerfile"
|
|
if [ -f "$dockerfile" ]; then
|
|
echo "::set-output name=build_dir::$build_dir"
|
|
echo "::set-output name=dockerfile::$dockerfile"
|
|
else
|
|
echo "Couldn't find the Dockerfile for the '$img' image"
|
|
exit 1
|
|
fi
|
|
- name: Login to the Container Registry
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ${{ steps.job_data.outputs.registry }}
|
|
username: ${{ vars.REGISTRY_USER }}
|
|
password: ${{ secrets.REGISTRY_PASS }}
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
- name: Build and Push
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
push: true
|
|
tags: |
|
|
${{ steps.job_data.outputs.oci_registry_prefix }}/${{ steps.job_data.outputs.img_name }}:${{ steps.job_data.outputs.img_tag }}
|
|
${{ steps.job_data.outputs.oci_registry_prefix }}/${{ steps.job_data.outputs.img_name }}:latest
|
|
context: ${{ steps.build_data.outputs.build_dir }}
|
|
file: ${{ steps.build_data.outputs.dockerfile }}
|
|
build-args: |
|
|
OCI_REGISTRY_PREFIX=${{ steps.job_data.outputs.oci_registry_prefix }}/ |