Merge pull request #28 from cardano-scaling/network-specific-links #33
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This workflow builds docker images on 'master' and for all release tags. The | |
# 'latest' docker tag on the registry will always point to the latest pushed | |
# version, likely the one built from 'master', so referring to the versioned | |
# images is suggested. | |
name: Docker | |
# Limit concurrent runs of this workflow within a single PR | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
on: | |
push: | |
branches: [ "master" ] | |
tags: [ "*.*.*" ] | |
workflow_dispatch: | |
inputs: | |
ref_name: | |
type: string | |
description: 'Point-in-time to build the custom docker images' | |
required: true | |
default: "master" | |
permissions: | |
packages: write | |
jobs: | |
docker: | |
runs-on: ubuntu-latest | |
steps: | |
- name: 📥 Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.inputs.ref_name || '' }} | |
- name: 🐳 Login to GitHub Container Registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: ❄ Prepare nix | |
uses: cachix/install-nix-action@v30 | |
with: | |
extra_nix_config: | | |
accept-flake-config = true | |
log-lines = 1000 | |
- name: ❄ Cachix cache of nix derivations | |
uses: cachix/cachix-action@v15 | |
with: | |
name: cardano-scaling | |
authToken: '${{ secrets.CACHIX_CARDANO_SCALING_AUTH_TOKEN }}' | |
- name: 🔨 Build image using nix | |
run: | | |
IMAGE_NAME=ghcr.io/${{github.repository_owner}}/hydra-explorer | |
echo "IMAGE_NAME=${IMAGE_NAME}" >> $GITHUB_ENV | |
nix build .#docker | |
./result | docker load | |
# Determine whether we are building a tag and if yes, set a VERSION_NAME | |
BUILDING_TAG=${{github.ref_type == 'tag'}} | |
[[ ${BUILDING_TAG} = true ]] && \ | |
VERSION_NAME=${{github.ref_name}} | |
# Use 'FROM' instruction to use docker build with --label | |
echo "FROM hydra-explorer" | docker build \ | |
--label org.opencontainers.image.source=${{github.repositoryUrl}} \ | |
--label org.opencontainers.image.licenses=Apache-2.0 \ | |
--label org.opencontainers.image.created=$(date -Is) \ | |
--label org.opencontainers.image.revision=${{github.sha}} \ | |
--label org.opencontainers.image.version=${VERSION_NAME:-unstable} \ | |
--tag ${IMAGE_NAME}:unstable - | |
# Also tag with semver and 'latest' if we are building a tag | |
[[ ${BUILDING_TAG} = true ]] && \ | |
docker tag ${IMAGE_NAME}:unstable ${IMAGE_NAME}:${{github.ref_name}} | |
[[ ${BUILDING_TAG} = true ]] && \ | |
docker tag ${IMAGE_NAME}:unstable ${IMAGE_NAME}:latest | |
# Tag image with workflow dispatch ref_name | |
[[ ${{github.event_name == 'workflow_dispatch'}} = true ]] && \ | |
docker tag ${IMAGE_NAME}:unstable ${IMAGE_NAME}:${{github.event.inputs.ref_name}} | |
docker images | |
docker inspect ${IMAGE_NAME}:unstable | |
- name: 📤 Push to registry | |
run: | | |
docker push -a ${IMAGE_NAME} |