-
Notifications
You must be signed in to change notification settings - Fork 0
140 lines (114 loc) · 5.76 KB
/
publish-demo.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
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:
backend-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 mobidam-sst-management-backend/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: Extract Docker metadata
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ github.repository }}-backend
- name: Build and push image
uses: docker/build-push-action@v4
with:
context: ./mobidam-sst-management-backend
push: true
tags: ghcr.io/it-at-m/mobidam-sst-management-backend:demo
frontend-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")
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 mobidam-sst-management-frontend/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: Extract Docker metadata
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ github.repository }}-frontend
- name: Build and push image
uses: docker/build-push-action@v4
with:
context: ./mobidam-sst-management-frontend
push: true
tags: ghcr.io/it-at-m/mobidam-sst-management-frontend:demo