Skip to content

Ci/CD fix

Ci/CD fix #10

Workflow file for this run

name: CI/CD Pipeline
on:
push:
branches:
- main
- dev
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
# Checkout des Codes
- name: Checkout code
uses: actions/checkout@v3
# Log in to Docker Hub
- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
# Set Docker Tag basierend auf dem Branch
- name: Set Docker Tag
run: |
if [[ "${{ github.ref }}" == "refs/heads/main" ]]; then
echo "IMAGE_TAG=latest" >> $GITHUB_ENV
elif [[ "${{ github.ref }}" == "refs/heads/dev" ]]; then
echo "IMAGE_TAG=dev" >> $GITHUB_ENV
fi
# Build Docker Image
- name: Build Docker Image
run: |
docker build -t ${{ secrets.DOCKER_USERNAME }}/brother_ql_app:${{ env.IMAGE_TAG }} .
# Push Docker Image to Docker Hub
- name: Push Docker Image
run: |
docker push ${{ secrets.DOCKER_USERNAME }}/brother_ql_app:${{ env.IMAGE_TAG }}
release:
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
# Checkout des Codes
- name: Checkout code
uses: actions/checkout@v3
# Git konfigurieren
- name: Configure Git
run: |
git config --global user.email "ci@github-actions.com"
git config --global user.name "GitHub Actions CI"
# Git-Version setzen und neuen Release-Tag erstellen
- name: Set up Git and Release Version
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
git fetch --tags
# Aktuellsten Tag ermitteln
VERSION=$(git describe --tags --abbrev=0)
# Neue Version basierend auf dem aktuellen Tag erstellen
NEW_VERSION=$(echo $VERSION | awk -F. -v OFS=. '{$NF++; print}')
# Überprüfen, ob der neue Tag bereits existiert
if git rev-parse "refs/tags/$NEW_VERSION" >/dev/null 2>&1; then
echo "Tag $NEW_VERSION already exists. Skipping tag creation."
exit 0
fi
echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV
# Neuen Tag erstellen und pushen
git tag -a $NEW_VERSION -m "Release $NEW_VERSION"
git push origin $NEW_VERSION
# GitHub Release erstellen
- name: Create GitHub Release
uses: actions/create-release@v1
with:
tag_name: ${{ env.NEW_VERSION }}
release_name: "Release ${{ env.NEW_VERSION }}"
body: "Automated release of version ${{ env.NEW_VERSION }}."
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}