149 lines
4.7 KiB
YAML
149 lines
4.7 KiB
YAML
name: release
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v*.*.*' # Triggert auf Semantic Versioning Tags (v1.0.0, v2.1.3, etc.)
|
|
|
|
permissions:
|
|
contents: write
|
|
packages: write
|
|
|
|
jobs:
|
|
release:
|
|
runs-on: ubuntu-22.04
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
submodules: recursive
|
|
fetch-depth: 0
|
|
|
|
- name: Load versions from .env.versions
|
|
id: versions
|
|
run: |
|
|
set -a
|
|
source .env.versions
|
|
set +a
|
|
|
|
echo "node_version=${NODE_VERSION}" >> "$GITHUB_OUTPUT"
|
|
echo "go_version=${GO_VERSION}" >> "$GITHUB_OUTPUT"
|
|
echo "hugo_version=${HUGO_VERSION}" >> "$GITHUB_OUTPUT"
|
|
|
|
echo "Node: ${NODE_VERSION}"
|
|
echo "Go: ${GO_VERSION}"
|
|
echo "Hugo: ${HUGO_VERSION}"
|
|
|
|
- name: Extract version from tag
|
|
id: version
|
|
run: |
|
|
VERSION=${GITHUB_REF#refs/tags/v}
|
|
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
|
|
echo "Version: ${VERSION}"
|
|
|
|
- name: Repository meta
|
|
id: repository
|
|
run: |
|
|
registry=${{ github.server_url }}
|
|
registry=${registry##http*://}
|
|
echo "registry=${registry}" >> "$GITHUB_OUTPUT"
|
|
echo "registry=${registry}"
|
|
repository="$(echo "${{ github.repository }}" | tr '[:upper:]' '[:lower:]')"
|
|
echo "repository=${repository}" >> "$GITHUB_OUTPUT"
|
|
echo "repository=${repository}"
|
|
|
|
- name: Docker meta
|
|
uses: docker/metadata-action@v5
|
|
id: docker
|
|
with:
|
|
images: ${{ steps.repository.outputs.registry }}/${{ steps.repository.outputs.repository }}
|
|
tags: |
|
|
type=semver,pattern={{version}}
|
|
type=semver,pattern={{major}}.{{minor}}
|
|
type=semver,pattern={{major}}
|
|
type=raw,value=latest
|
|
|
|
- name: Login to registry
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ${{ steps.repository.outputs.registry }}
|
|
username: "${{ secrets.PACKAGES_USER }}"
|
|
password: "${{ secrets.PACKAGES_TOKEN }}"
|
|
|
|
- name: Set up QEMU
|
|
uses: docker/setup-qemu-action@v3
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
with:
|
|
buildkitd-flags: '--allow-insecure-entitlement network.host'
|
|
driver-opts: network=host
|
|
|
|
- name: Build and push release images
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: .
|
|
push: true
|
|
allow: network.host
|
|
network: host
|
|
platforms: linux/amd64,linux/arm64
|
|
tags: ${{ steps.docker.outputs.tags }}
|
|
labels: ${{ steps.docker.outputs.labels }}
|
|
build-args: |
|
|
NODE_VERSION=${{ steps.versions.outputs.node_version }}
|
|
GO_VERSION=${{ steps.versions.outputs.go_version }}
|
|
HUGO_VERSION=${{ steps.versions.outputs.hugo_version }}
|
|
|
|
- name: Generate changelog
|
|
id: changelog
|
|
run: |
|
|
# Finde vorheriges Tag
|
|
PREVIOUS_TAG=$(git describe --abbrev=0 --tags ${GITHUB_REF}^ 2>/dev/null || echo "")
|
|
|
|
if [ -z "$PREVIOUS_TAG" ]; then
|
|
echo "Erster Release - Changelog von Anfang an"
|
|
CHANGELOG=$(git log --pretty=format:"- %s (%h)" --no-merges)
|
|
else
|
|
echo "Changelog seit ${PREVIOUS_TAG}"
|
|
CHANGELOG=$(git log ${PREVIOUS_TAG}..${GITHUB_REF} --pretty=format:"- %s (%h)" --no-merges)
|
|
fi
|
|
|
|
# Schreibe in Output-Datei (multiline)
|
|
{
|
|
echo 'changelog<<EOF'
|
|
echo "$CHANGELOG"
|
|
echo 'EOF'
|
|
} >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Create Forgejo/Gitea Release
|
|
uses: actions/forgejo-release@v2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
direction: upload
|
|
release-dir: .
|
|
title: "Release ${{ steps.version.outputs.version }}"
|
|
tag: ${{ github.ref_name }}
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
release-notes: |
|
|
# Release ${{ steps.version.outputs.version }}
|
|
|
|
## Docker Images
|
|
|
|
Multi-platform images (linux/amd64, linux/arm64) sind verfügbar:
|
|
|
|
```bash
|
|
docker pull ${{ steps.repository.outputs.registry }}/${{ steps.repository.outputs.repository }}:${{ steps.version.outputs.version }}
|
|
docker pull ${{ steps.repository.outputs.registry }}/${{ steps.repository.outputs.repository }}:latest
|
|
```
|
|
|
|
## Build Versions
|
|
|
|
- Node.js: ${{ steps.versions.outputs.node_version }}
|
|
- Go: ${{ steps.versions.outputs.go_version }}
|
|
- Hugo: ${{ steps.versions.outputs.hugo_version }}
|
|
|
|
## Changes
|
|
|
|
${{ steps.changelog.outputs.changelog }}
|