Skip to content

build and push docker image #159

build and push docker image

build and push docker image #159

Workflow file for this run

name: build and push docker image
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
on:
push:
branches:
- main
tags:
- 'v*'
workflow_dispatch:
inputs:
invenio-override-branch:
description: 'invenio-override repo branch'
required: false
default: 'main'
jobs:
build-and-push-mug:
runs-on: ubuntu-22.04
permissions:
contents: read
packages: write
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.12'
- name: Install uv package
run: |
pip install uv
- name: Install invenio-override
run: |
mkdir .venv
uv venv .venv
source .venv/bin/activate
if [[ '${{ github.event.inputs.invenio-override-branch }}' == '' ]]; then
INVENIO_OVERRIDE_BRANCH="main"
else
INVENIO_OVERRIDE_BRANCH="${{ github.event.inputs.invenio-override-branch }}"
fi
install_cmd='uv pip install git+https://github.com/sharedRDM/invenio-override@${INVENIO_OVERRIDE_BRANCH}'
eval "$install_cmd"
- name: Change pyproject.toml
if: "${{ github.event.inputs.invenio-override-branch != '' }}"
run: sed -i 's/invenio-override", branch = "main"/invenio-override", branch = "${{ github.event.inputs.invenio-override-branch }}"/g' pyproject.toml
- name: Relock uv
run: |
source .venv/bin/activate
uv lock --upgrade
deactivate
rm -rf .venv
- name: Convert repository name to lowercase
run: echo "IMAGE_NAME=$(echo '${{ github.repository }}' | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV
- name: Determine Docker tag (from tag or branch)
id: get_tag
run: |
if [[ "${{ github.ref }}" == refs/tags/* ]]; then
TAG_NAME="${GITHUB_REF#refs/tags/}"
else
TAG_NAME="${GITHUB_REF#refs/heads/}"
fi
echo "DOCKER_TAG=$TAG_NAME" >> $GITHUB_ENV
- name: Log in to the Container registry
uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
- name: Build and push Mug Docker image
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
with:
context: .
file: Dockerfile.mug
push: true
tags: |
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.DOCKER_TAG }}-mug
labels: ${{ steps.meta.outputs.labels }}
build-and-push-theme:
runs-on: ubuntu-22.04
permissions:
contents: read
packages: write
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Convert repository name to lowercase
run: echo "IMAGE_NAME=$(echo '${{ github.repository }}' | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV
- name: Determine Docker tag (from tag or branch)
id: get_tag
run: |
if [[ "${{ github.ref }}" == refs/tags/* ]]; then
TAG_NAME="${GITHUB_REF#refs/tags/}"
else
TAG_NAME="${GITHUB_REF#refs/heads/}"
fi
echo "DOCKER_TAG=$TAG_NAME" >> $GITHUB_ENV
- name: Log in to the Container registry
uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
- name: Build and push Theme Docker image
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
with:
context: .
file: Dockerfile.theme
push: true
tags: |
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.DOCKER_TAG }}-theme
labels: ${{ steps.meta.outputs.labels }}
trigger-gitlab-pipeline:
name: Trigger GitLab Pipeline
runs-on: ubuntu-latest
needs:
- build-and-push-mug
- build-and-push-theme
steps:
- name: Set Docker tag environment
run: |
if [[ "${{ github.ref }}" == refs/tags/* ]]; then
TAG_NAME="${GITHUB_REF#refs/tags/}"
else
TAG_NAME="${GITHUB_REF#refs/heads/}"
fi
echo "DOCKER_TAG=$TAG_NAME" >> $GITHUB_ENV
- name: Trigger GitLab pipeline
uses: mb-wali/gitlab-cd-trigger@main
with:
URL: ${{ secrets.HOST }}
GITLB_TRIGGER_TOKEN: ${{ secrets.GITLB_TRIGGER_TOKEN }}
PROJECT_ID: 45464
REF_NAME: 'main'
PIPELINE_VARIABLES: '{"DOCKER_IMAGE_TAG":"${{ env.DOCKER_TAG }}", "DOCKER_IMAGE_TAG_INSTANCE":"mug"}'