61 lines
2 KiB
YAML
61 lines
2 KiB
YAML
|
|
name: Publish Container
|
||
|
|
|
||
|
|
on:
|
||
|
|
push:
|
||
|
|
branches:
|
||
|
|
- main
|
||
|
|
workflow_dispatch:
|
||
|
|
|
||
|
|
env:
|
||
|
|
DOTNET_VERSION: 10.0.x
|
||
|
|
REGISTRY: ${{ vars.FORGEJO_REGISTRY }}
|
||
|
|
IMAGE_NAMESPACE: ${{ vars.IMAGE_NAMESPACE }}
|
||
|
|
IMAGE_NAME: ${{ vars.IMAGE_NAME }}
|
||
|
|
|
||
|
|
jobs:
|
||
|
|
publish:
|
||
|
|
runs-on: docker
|
||
|
|
|
||
|
|
steps:
|
||
|
|
- name: Checkout
|
||
|
|
uses: actions/checkout@v4
|
||
|
|
|
||
|
|
- name: Setup .NET
|
||
|
|
uses: actions/setup-dotnet@v4
|
||
|
|
with:
|
||
|
|
dotnet-version: ${{ env.DOTNET_VERSION }}
|
||
|
|
|
||
|
|
- name: Validate workflow variables
|
||
|
|
run: |
|
||
|
|
set -eu
|
||
|
|
if [ -z "${REGISTRY}" ]; then echo "vars.FORGEJO_REGISTRY is required"; exit 1; fi
|
||
|
|
if [ -z "${IMAGE_NAMESPACE}" ]; then echo "vars.IMAGE_NAMESPACE is required"; exit 1; fi
|
||
|
|
if [ -z "${IMAGE_NAME}" ]; then echo "vars.IMAGE_NAME is required"; exit 1; fi
|
||
|
|
|
||
|
|
- name: Validate registry secrets
|
||
|
|
run: |
|
||
|
|
set -eu
|
||
|
|
if [ -z "${{ secrets.FORGEJO_REGISTRY_USERNAME }}" ]; then echo "secrets.FORGEJO_REGISTRY_USERNAME is required"; exit 1; fi
|
||
|
|
if [ -z "${{ secrets.FORGEJO_REGISTRY_TOKEN }}" ]; then echo "secrets.FORGEJO_REGISTRY_TOKEN is required"; exit 1; fi
|
||
|
|
|
||
|
|
- name: Restore and publish app
|
||
|
|
run: dotnet publish src/MaddoScientisto.Web/MaddoScientisto.Web.csproj -c Release -o ./artifacts/publish
|
||
|
|
|
||
|
|
- name: Login to Forgejo registry
|
||
|
|
run: |
|
||
|
|
echo "${{ secrets.FORGEJO_REGISTRY_TOKEN }}" | docker login "${REGISTRY}" -u "${{ secrets.FORGEJO_REGISTRY_USERNAME }}" --password-stdin
|
||
|
|
|
||
|
|
- name: Build image
|
||
|
|
run: |
|
||
|
|
set -eu
|
||
|
|
IMAGE_REF="${REGISTRY}/${IMAGE_NAMESPACE}/${IMAGE_NAME}"
|
||
|
|
SHORT_SHA="$(echo "${GITHUB_SHA}" | cut -c1-12)"
|
||
|
|
docker build -t "${IMAGE_REF}:sha-${SHORT_SHA}" -t "${IMAGE_REF}:latest" .
|
||
|
|
|
||
|
|
- name: Push image tags
|
||
|
|
run: |
|
||
|
|
set -eu
|
||
|
|
IMAGE_REF="${REGISTRY}/${IMAGE_NAMESPACE}/${IMAGE_NAME}"
|
||
|
|
SHORT_SHA="$(echo "${GITHUB_SHA}" | cut -c1-12)"
|
||
|
|
docker push "${IMAGE_REF}:sha-${SHORT_SHA}"
|
||
|
|
docker push "${IMAGE_REF}:latest"
|