ci: feat add semver conven versioning #11

Merged
t.behrendt merged 3 commits from ci-feat-add-semver-conven-versioning into main 2025-09-01 13:13:55 +02:00
2 changed files with 113 additions and 61 deletions

View File

@@ -1,83 +1,111 @@
name: Build and Release Docker Image name: CD
on: on:
push: push:
branches: branches:
- main - main
env:
DOCKER_REGISTRY: gitea.t000-n.de
jobs: jobs:
build_amd64: check-changes:
name: Build and Push amd64 name: Check changes
runs-on: [ubuntu-latest, linux_amd64] runs-on: ubuntu-latest
outputs:
changes: ${{ steps.filter.outputs.code }}
steps: steps:
- name: Checkout repository - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
- name: Log in to registry - name: Get changed files
uses: docker/login-action@v3 id: filter
uses: dorny/paths-filter@v3
with: with:
registry: gitea.t000-n.de filters: |
username: ${{ secrets.REGISTRY_USERNAME }} code:
password: ${{ secrets.REGISTRY_PASSWORD }} - 'src/**'
- 'Dockerfile'
- 'gitea/workflows/**'
- name: Build Docker image for amd64 build_and_push:
run: | name: Build and push
docker build \ needs:
--platform linux/amd64 \ - check-changes
-f Dockerfile \ if: ${{ needs.check-changes.outputs.changes != '0' }}
-t gitea.t000-n.de/t.behrendt/backupsidecar:${{ github.sha }}-amd64 \ strategy:
. matrix:
arch:
- name: Push Docker image for amd64 - amd64
run: | - arm64
docker push gitea.t000-n.de/t.behrendt/backupsidecar:${{ github.sha }}-amd64 runs-on:
- ubuntu-latest
build_arm64: - linux_${{ matrix.arch }}
name: Build and Push arm64
runs-on: [ubuntu-latest, linux_arm64]
steps: steps:
- name: Checkout repository - uses: actions/checkout@v5
uses: actions/checkout@v4 - uses: docker/setup-buildx-action@v3
- uses: docker/login-action@v3
- name: Log in to registry
uses: docker/login-action@v3
with: with:
registry: gitea.t000-n.de registry: ${{ env.DOCKER_REGISTRY }}
username: ${{ secrets.REGISTRY_USERNAME }} username: ${{ secrets.REGISTRY_USER }}
password: ${{ secrets.REGISTRY_PASSWORD }} password: ${{ secrets.REGISTRY_PASSWORD }}
- id: meta
- name: Build Docker image for arm64
run: | run: |
docker build \ echo REPO_NAME=$(echo ${GITHUB_REPOSITORY} | awk -F"/" '{print $2}' | tr '[:upper:]' '[:lower:]') >> $GITHUB_OUTPUT
--platform linux/arm64 \ echo REPO_VERSION=$(git describe --tags --always | sed 's/^v//') >> $GITHUB_OUTPUT
-f Dockerfile \ - uses: docker/build-push-action@v6
-t gitea.t000-n.de/t.behrendt/backupsidecar:${{ github.sha }}-arm64 \ with:
. context: .
file: ./Dockerfile
platforms: linux/${{ matrix.arch }}
push: true
provenance: false
tags: |
${{ env.DOCKER_REGISTRY }}/t.behrendt/${{ steps.meta.outputs.REPO_NAME }}:${{ steps.meta.outputs.REPO_VERSION }}-${{ matrix.arch }}
- name: Push Docker image for arm64 create_tag:
name: Create tag
needs:
- check-changes
if: ${{ needs.check-changes.outputs.changes != '0' }}
runs-on: ubuntu-latest
outputs:
tag: ${{ steps.tag.outputs.new-tag }}
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0
- uses: https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment@0.0.2
id: tag
with:
token: ${{ secrets.GITEA_TOKEN }}
- run: |
git tag ${{ steps.tag.outputs.new-tag }}
git push origin ${{ steps.tag.outputs.new-tag }}
- name: Set output
run: | run: |
docker push gitea.t000-n.de/t.behrendt/backupsidecar:${{ github.sha }}-arm64 echo "tag=${{ steps.tag.outputs.new-tag }}" >> $GITHUB_OUTPUT
manifest: create_manifest:
name: Create and Push Multi-Arch Manifest name: Create manifest
needs: [build_amd64, build_arm64] needs:
- build_and_push
- create_tag
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Log in to registry - uses: actions/checkout@v5
uses: docker/login-action@v3 - id: meta
with:
registry: gitea.t000-n.de
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- name: Create and push manifest with git SHA
run: | run: |
docker manifest create gitea.t000-n.de/t.behrendt/backupsidecar:${{ github.sha }} \ echo REPO_NAME=$(echo ${GITHUB_REPOSITORY} | awk -F"/" '{print $2}' | tr '[:upper:]' '[:lower:]') >> $GITHUB_OUTPUT
gitea.t000-n.de/t.behrendt/backupsidecar:${{ github.sha }}-amd64 \ echo REPO_VERSION=$(git describe --tags --always | sed 's/^v//') >> $GITHUB_OUTPUT
gitea.t000-n.de/t.behrendt/backupsidecar:${{ github.sha }}-arm64 - uses: docker/login-action@v3
docker manifest push gitea.t000-n.de/t.behrendt/backupsidecar:${{ github.sha }} with:
registry: ${{ env.DOCKER_REGISTRY }}
username: ${{ secrets.REGISTRY_USER }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- run: |
docker manifest create ${{ env.DOCKER_REGISTRY }}/t.behrendt/${{ steps.meta.outputs.REPO_NAME }}:${{ needs.create_tag.outputs.tag }} \
${{ env.DOCKER_REGISTRY }}/t.behrendt/${{ steps.meta.outputs.REPO_NAME }}:${{ steps.meta.outputs.REPO_VERSION }}-amd64 \
${{ env.DOCKER_REGISTRY }}/t.behrendt/${{ steps.meta.outputs.REPO_NAME }}:${{ steps.meta.outputs.REPO_VERSION }}-arm64
docker manifest create gitea.t000-n.de/t.behrendt/backupsidecar:latest \ docker manifest push ${{ env.DOCKER_REGISTRY }}/t.behrendt/${{ steps.meta.outputs.REPO_NAME }}:${{ needs.create_tag.outputs.tag }}
gitea.t000-n.de/t.behrendt/backupsidecar:${{ github.sha }}-amd64 \
gitea.t000-n.de/t.behrendt/backupsidecar:${{ github.sha }}-arm64
docker manifest push gitea.t000-n.de/t.behrendt/backupsidecar:latest

24
.gitea/workflows/ci.yaml Normal file
View File

@@ -0,0 +1,24 @@
name: CI
on:
pull_request:
jobs:
build:
name: Build Docker image
runs-on:
- ubuntu-latest
- linux_amd64
steps:
- uses: actions/checkout@v5
- uses: docker/setup-buildx-action@v3
- name: Build image
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile
platforms: linux/amd64
push: false
provenance: false
tags: |
backupsidecar:ci-test