Skip to content

Create Release

Create Release #19

name: Create Release
on:
workflow_dispatch:
jobs:
verify-release-branch:
runs-on: ubuntu-latest
steps:
- name: "Success"
if: ${{ startsWith(github.ref_name, 'release/') }}
run: |
echo "Creating a release for branch '${{ github.ref_name }}'"
exit 0
- name: "Error"
if: ${{ !startsWith(github.ref_name, 'release/') }}
run: |
echo "::error::Cannot create release from branch '${{ github.ref_name }}' since it does not start with 'release/'"
exit 1
create-release-docker:
needs: verify-release-branch
runs-on: ubuntu-latest
timeout-minutes: 10
outputs:
checksum: ${{ steps.get-checksum.outputs.checksum }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Get images
id: get-images
uses: trifork/cheetah-infrastructure-utils/.github/actions/docker/get-images@main
with:
image-name: cheetah-infrastructure-utils-kafka
TRIFORK_GITHUB_PAT: ${{ secrets.WRITE_PACKAGE_PAT }}
KAMSTRUP_GITLAB_PAT: ${{ secrets.KAMSTRUP_GITLAB_PAT }}
KAMSTRUP_AZURE_PAT: ${{ secrets.KAMSTRUP_ACR_SECRET }}
- name: Get version
id: get-version
run: echo version=$(grep -oP 'LABEL version="\K[^"]*' Dockerfile) >> $GITHUB_OUTPUT
- name: Extract metadata (tags, labels) for Docker
id: metadata
uses: docker/metadata-action@879dcbb708d40f8b8679d4f7941b938a086e23a7
with:
images: ${{ steps.get-images.outputs.images }}
labels: |
org.opencontainers.image.vendor=Trifork
org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}
tags: ${{ steps.get-version.outputs.version }}
flavor: latest=true
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3
- name: Build and push Docker image
id: build-image
uses: docker/build-push-action@31159d49c0d4756269a0940a750801a1ea5d7003 # v6
with:
context: .
platforms: linux/amd64,linux/arm64
tags: ${{ steps.metadata.outputs.tags }}
labels: ${{ steps.metadata.outputs.labels }}
push: true
- name: Get checksum
id: get-checksum
run: echo checksum=${{ steps.build-image.outputs.digest }} >> $GITHUB_OUTPUT
create-release-maven:
needs: verify-release-branch
runs-on: ubuntu-latest
timeout-minutes: 5
outputs:
checksum: ${{ steps.get-checksum.outputs.checksum }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: "17"
distribution: "temurin"
cache: maven
- name: Publish Maven package
shell: bash
run: mvn deploy -P trifork -s settings.xml
env:
GITHUB_TOKEN: ${{ secrets.WRITE_PACKAGE_PAT }}
- name: Get checksum
id: get-checksum
run: echo checksum=${{ hashFiles('./target/*.jar') }} >> $GITHUB_OUTPUT
create-github-release:
needs: [create-release-docker, create-release-maven]
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Get version
id: get-version
run: echo version=$(grep -oP 'LABEL version="\K[^"]*' Dockerfile) >> $GITHUB_OUTPUT
- name: Create checksum files
run: |
echo ${{ needs.create-release-docker.outputs.checksum }} >> image-checksum.txt
echo ${{ needs.create-release-maven.outputs.checksum }} >> jar-checksum.txt
- name: Create release
uses: softprops/action-gh-release@v2
with:
generate_release_notes: true
tag_name: ${{ steps.get-version.outputs.version }}
files: |
image-checksum.txt
jar-checksum.txt