146 lines
5.5 KiB
YAML
146 lines
5.5 KiB
YAML
name: 'Build docker container'
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
branch:
|
|
description: "Select branch to build"
|
|
required: true
|
|
type: choice
|
|
options:
|
|
- 9.0-alpine-24
|
|
- 9.0-alpine-23
|
|
- 9.0-alpine-22
|
|
- 9.0-alpine-21
|
|
- 8.0-alpine-22
|
|
- 8.0-alpine-21
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
defaults:
|
|
run:
|
|
working-directory: ${{ GITHUB_WORKSPACE }}
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
- name: Set build variables for docker build
|
|
id: variables-test
|
|
uses: https://git.claeyscloud.com/david/gitea-actions/conditional-variables@main
|
|
context:
|
|
branch=${{ inputs.branch }
|
|
rules:
|
|
- conditions:
|
|
- branch == 9.0-alpine-24
|
|
- branch == 9.0-alpine-23
|
|
set:
|
|
DOTNET_SDK_VERSION=9.0
|
|
DOTNET_RUNTIME_VERSION=9.0.18
|
|
- conditions:
|
|
- branch == 9.0-alpine-24
|
|
set:
|
|
ALPINE_VERSION=24
|
|
- name: Dump contexts
|
|
env:
|
|
GITEA_CONTEXT: ${{ toJson(gitea) }}
|
|
JOB_CONTEXT: ${{ toJson(job) }}
|
|
RUNNER_CONTEXT: ${{ toJson(runner) }}
|
|
STRATEGY_CONTEXT: ${{ toJson(strategy) }}
|
|
MATRIX_CONTEXT: ${{ toJson(matrix) }}
|
|
run: |
|
|
echo "=== ENVIRONMENT VARIABLES ==="8
|
|
env | sort
|
|
echo "$GITEA_CONTEXT"
|
|
echo "$JOB_CONTEXT"
|
|
echo "$RUNNER_CONTEXT"
|
|
echo "$STRATEGY_CONTEXT"
|
|
echo "$MATRIX_CONTEXT"
|
|
- name: Set build variables for docker build
|
|
id: variables
|
|
run: |
|
|
case "${{ inputs.branch }}" in
|
|
9.0-alpine-24)
|
|
echo "DOTNET_SDK_VERSION=9.0" >> $GITHUB_OUTPUT
|
|
echo "DOTNET_RUNTIME_VERSION=9.0.18" >> $GITHUB_OUTPUT
|
|
echo "ALPINE_VERSION=3.24" >> $GITHUB_OUTPUT
|
|
echo "IS_LATEST=true" >> $GITHUB_OUTPUT
|
|
;;
|
|
9.0-alpine-23)
|
|
echo "DOTNET_SDK_VERSION=9.0" >> $GITHUB_OUTPUT
|
|
echo "DOTNET_RUNTIME_VERSION=9.0.18" >> $GITHUB_OUTPUT
|
|
echo "ALPINE_VERSION=3.23" >> $GITHUB_OUTPUT
|
|
echo "IS_LATEST=false" >> $GITHUB_OUTPUT
|
|
;;
|
|
9.0-alpine-22)
|
|
echo "DOTNET_SDK_VERSION=9.0" >> $GITHUB_OUTPUT
|
|
echo "DOTNET_RUNTIME_VERSION=9.0" >> $GITHUB_OUTPUT
|
|
echo "ALPINE_VERSION=3.22" >> $GITHUB_OUTPUT
|
|
echo "IS_LATEST=false" >> $GITHUB_OUTPUT
|
|
;;
|
|
9.0-alpine-21)
|
|
echo "DOTNET_SDK_VERSION=9.0" >> $GITHUB_OUTPUT
|
|
echo "DOTNET_RUNTIME_VERSION=9.0" >> $GITHUB_OUTPUT
|
|
echo "ALPINE_VERSION=3.21" >> $GITHUB_OUTPUT
|
|
echo "IS_LATEST=false" >> $GITHUB_OUTPUT
|
|
;;
|
|
8.0-alpine-22)
|
|
echo "DOTNET_SDK_VERSION=8.0" >> $GITHUB_OUTPUT
|
|
echo "DOTNET_RUNTIME_VERSION=8.0" >> $GITHUB_OUTPUT
|
|
echo "ALPINE_VERSION=3.22" >> $GITHUB_OUTPUT
|
|
echo "IS_LATEST=false" >> $GITHUB_OUTPUT
|
|
;;
|
|
8.0-alpine-21)
|
|
echo "DOTNET_SDK_VERSION=8.0" >> $GITHUB_OUTPUT
|
|
echo "DOTNET_RUNTIME_VERSION=8.0" >> $GITHUB_OUTPUT
|
|
echo "ALPINE_VERSION=3.21" >> $GITHUB_OUTPUT
|
|
echo "IS_LATEST=false" >> $GITHUB_OUTPUT
|
|
;;
|
|
*)
|
|
echo "Unsupported branch"
|
|
exit 1
|
|
;;
|
|
esac
|
|
- name: Install Docker
|
|
run: |
|
|
echo "Checking docker installation"
|
|
if command -v docker &> /dev/null; then
|
|
echo "Docker installation found"
|
|
else
|
|
echo "Docker installation not found. Docker will be installed"
|
|
curl -fsSL https://get.docker.com | sh
|
|
fi
|
|
- name: Set up Docker Buildx
|
|
uses: https://github.com/docker/setup-buildx-action@v3
|
|
- name: Docker login
|
|
uses: https://github.com/docker/login-action@v3
|
|
with:
|
|
registry: git.claeyscloud.com
|
|
username: nologin
|
|
password: ${{ secrets.PACKAGE_TOKEN }}
|
|
- name: Extract metadata (tags, labels) for Docker
|
|
id: meta
|
|
uses: docker/metadata-action@v5
|
|
with:
|
|
labels: |
|
|
org.opencontainers.image.documentation=https://git.claeyscloud.com/david/net-base/README.md
|
|
images: |
|
|
git.claeyscloud.com/david/net-base
|
|
tags: |
|
|
type=raw,value=${{ inputs.branch }}
|
|
type=raw,value=latest,enable=${{ steps.variables.outputs.IS_LATEST == 'true' }}
|
|
type=sha
|
|
- name: Generate random password for certificate
|
|
id: password
|
|
run:
|
|
echo "secret=$(openssl rand -base64 12)" >> $GITHUB_OUTPUT
|
|
- name: Build and push
|
|
uses: https://github.com/docker/build-push-action@v5
|
|
with:
|
|
build-args: |
|
|
CERT_PASSWORD=${{ steps.password.outputs.secret }}
|
|
DOTNET_SDK_VERSION=${{ steps.variables.outputs.DOTNET_SDK_VERSION }}
|
|
DOTNET_RUNTIME_VERSION=${{ steps.variables.outputs.DOTNET_RUNTIME_VERSION }}
|
|
ALPINE_VERSION=${{ steps.variables.outputs.ALPINE_VERSION }}
|
|
context: .
|
|
push: true
|
|
tags: ${{ steps.meta.outputs.tags }}
|
|
labels: ${{ steps.meta.outputs.labels }}
|