Skip to content

Commit

Permalink
Merge pull request #28 from it-at-m/461_Deployment
Browse files Browse the repository at this point in the history
461 Deployment Workflows
  • Loading branch information
mirrodi authored Mar 18, 2024
2 parents d1dd9d6 + 852998c commit e5a5b92
Show file tree
Hide file tree
Showing 7 changed files with 312 additions and 4 deletions.
9 changes: 6 additions & 3 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
name: build and test
name: Compliance check and build test

on: [push]
on:
push:
pull_request:
types: [ opened, reopened ]

jobs:
compliance:
Expand Down Expand Up @@ -32,4 +35,4 @@ jobs:
cache: "maven"

- name: Build with Maven
run: mvn --update-snapshots -f pom.xml verify
run: mvn --update-snapshots -f pom.xml verify
70 changes: 70 additions & 0 deletions .github/workflows/publish-demo.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
name: Build and publish to demo

on:
workflow_dispatch: # execute manually
schedule: # it's important that the hour in the cron-job is after the hour of project_start_date in step calculate-time-passed
- cron: '0 13 * * 6' # execute automatically every Saturday at 13:00, change!! day of week if needed

env:
SPRINT_LENGTH_IN_WEEKS: 3

jobs:
build-and-docker-push:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Get seconds passed since project start # project_start_date needs to be changed!! if different dispatch day is preferred
id: calculate-time-passed
run: | # 2023-10-28 is a Saturday and is used as the base for calculating the weeks passed
project_start_date=$(echo -n "2023-10-28 10:00") # it's important that the hour in this step is before the hour given in the cron-job
project_start_epoch_seconds=$(date -d "$project_start_date" +%s)
time_passed=$(($(date +"%s")-$project_start_epoch_seconds))
echo "::set-output name=time_passed::$time_passed"
- name: Get number of weeks passed
id: get-number-of-weeks
run: | # 604800 is 1 week in seconds
num_weeks_mod_sprint=$(((${{ steps.calculate-time-passed.outputs.time_passed }}/604800)%${{ env.SPRINT_LENGTH_IN_WEEKS }}))
echo "::set-output name=num_weeks_mod_sprint::$num_weeks_mod_sprint"
- name: Check if job should be run # the automatically triggered actions should only be executed at the end of a sprint
if: github.event_name != 'workflow_dispatch' && steps.get-number-of-weeks.outputs.num_weeks_mod_sprint != 0
run: | # canceling the job if the conditions weren't met, https://stackoverflow.com/a/75809743
gh run cancel ${{ github.run_id }}
gh run watch ${{ github.run_id }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Git checkout to main branch # the workflow is triggered in the default branch, which doesn't have to be MAIN
uses: actions/checkout@v4
with: { ref: main } # this also serves as a safeguard for workflows triggered manually

- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'

- name: Build with Maven
run: mvn --update-snapshots -f pom.xml verify

- name: Set up QEMU
uses: docker/setup-qemu-action@v2

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- name: Login to Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push image
uses: docker/build-push-action@v4
with:
context: .
push: true
tags: ghcr.io/it-at-m/mobidam-s3-eai:demo
37 changes: 37 additions & 0 deletions .github/workflows/publish-feature.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Build and publish to dev

on: [workflow_dispatch]

jobs:
build-and-docker-push:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'

- name: Build with Maven
run: mvn --update-snapshots -f pom.xml verify

- name: Set up QEMU
uses: docker/setup-qemu-action@v2

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- name: Login to Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push image
uses: docker/build-push-action@v4
with:
context: .
push: true
tags: ghcr.io/it-at-m/mobidam-s3-eai:dev
49 changes: 49 additions & 0 deletions .github/workflows/publish-prod.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: Build and publish to prod

on:
workflow_dispatch:
inputs:
version:
description: 'Which version should be deployed to production?'
required: true
default: '0.0.1'

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Git checkout to specific version
uses: actions/checkout@v4
with:
ref: refs/tags/${{ github.event.inputs.version }}

- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: "17"
distribution: "temurin"
cache: "maven"

- name: Build with Maven
run: mvn -B verify -f pom.xml -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN

- name: Set up QEMU
uses: docker/setup-qemu-action@v2

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- name: Login to Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push image
uses: docker/build-push-action@v4
with:
context: .
push: true
tags: ghcr.io/it-at-m/mobidam-s3-eai:prod
40 changes: 40 additions & 0 deletions .github/workflows/publish-test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Build and publish to test

on:
push:
branches:
- 'sprint'

jobs:
build-and-docker-push:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'

- name: Build with Maven
run: mvn --update-snapshots -f pom.xml verify

- name: Set up QEMU
uses: docker/setup-qemu-action@v2

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- name: Login to Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push image
uses: docker/build-push-action@v4
with:
context: .
push: true
tags: ghcr.io/it-at-m/mobidam-s3-eai:test
108 changes: 108 additions & 0 deletions .github/workflows/release-build.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
name: Build release

on: [workflow_dispatch]

jobs:
release:
name: Release to registry
runs-on: ubuntu-latest
steps:
- name: Git checkout to main branch # Releases are published on main branch
uses: actions/checkout@v4
with: { ref: main }

- name: Install Java and Maven
uses: actions/setup-java@v3
with:
java-version: "17"
distribution: "temurin"
cache: "maven"

- name: Clean Maven Project Version
id: set-version
run: |
current_version=$(mvn help:evaluate -f pom.xml -Dexpression=project.version -q -DforceStdout)
echo "Current version: $current_version"
new_version=$(echo $current_version | sed 's/-SNAPSHOT//')
echo "New version: $new_version"
mvn -B versions:set -f pom.xml -DnewVersion=$new_version
git config --global user.email "[email protected]"
git config --global user.name "GitHub Actions"
git add pom.xml
git commit -m "Bump main version to $new_version"
git push
echo "new_version=$new_version" >> $GITHUB_OUTPUT
- name: Build with Maven
run: mvn -B verify -f pom.xml -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN

- name: Set up QEMU
uses: docker/setup-qemu-action@v2

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- name: Login to Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push image
uses: docker/build-push-action@v4
with:
context: .
push: true
tags: ghcr.io/it-at-m/mobidam-s3-eai:${{ steps.set-version.outputs.new_version }}, ghcr.io/it-at-m/mobidam-s3-eai:demo

github-release:
needs: release
name: Create github release
runs-on: ubuntu-latest
steps:
- name: Git checkout to main branch # Releases are published on main branch
uses: actions/checkout@v4
with: { ref: main }

- name: Get New Project Version
id: get-version
run: |
current_version=$(mvn help:evaluate -f pom.xml -Dexpression=project.version -q -DforceStdout)
new_version=$(echo $current_version | sed 's/-SNAPSHOT//')
echo "New version: $new_version"
echo "new_version=$new_version" >> $GITHUB_OUTPUT
- name: Create GitHub Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.get-version.outputs.new_version }}
release_name: Release ${{ steps.get-version.outputs.new_version }}
draft: false
prerelease: false

increase-snapshot:
needs: release
name: Increase patch-number of the SNAPSHOT-Version
runs-on: ubuntu-latest
steps:
- name: Git checkout to sprint branch # Snapshots are published on sprint branch
uses: actions/checkout@v4
with: { ref: sprint }

- name: Set Maven Project Version
id: set-version
run: |
current_version=$(mvn help:evaluate -f pom.xml -Dexpression=project.version -q -DforceStdout)
echo "Current version: $current_version"
new_version=$(echo $current_version | awk -F. -v OFS=. '{$3=$3+1; print $0"-SNAPSHOT"}')
echo "New version: $new_version"
mvn -B versions:set -DnewVersion=$new_version -f pom.xml
git config --global user.email "[email protected]"
git config --global user.name "GitHub Actions"
git add pom.xml
git commit -m "Bump version to $new_version"
git push
3 changes: 2 additions & 1 deletion RELEASENOTES.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
# Release-Notes

## Sprint 7 (05.02.2024 - 26.03.2024)
## Sprint 7 (05.03.2024 - 26.03.2024)
### Hinzugefügt
- Url vorsignierte Adresse erstellen
- Workflows erstellt

## Sprint 7 (13.02.2024 - 05.03.2024)
### Hinzugefügt
Expand Down

0 comments on commit e5a5b92

Please sign in to comment.