-
Notifications
You must be signed in to change notification settings - Fork 0
134 lines (134 loc) · 4.46 KB
/
build-service.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
name: rekisterointi
on:
workflow_dispatch:
push:
branches: [master]
pull_request:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout source
uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "18.x"
cache: "npm"
cache-dependency-path: rekisterointi-ui/package-lock.json
- name: Install app dependencies
run: npm ci
working-directory: rekisterointi-ui
- name: Build react app
run: npm run build
working-directory: rekisterointi-ui
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: "21"
distribution: "corretto"
cache: "maven"
- name: Build
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: mvn clean package -B -Dbranch=$GITHUB_REF_NAME -Drevision=$GITHUB_SHA -DbuildNumber=$GITHUB_RUN_NUMBER/$GITHUB_RUN_ATTEMPT
- name: Upload rekisterointi-jar
uses: actions/upload-artifact@v4
with:
name: rekisterointi-jar
path: target/rekisterointi.jar
sonarcloud:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: "21"
distribution: "corretto"
cache: "maven"
- name: Cache SonarCloud packages
uses: actions/cache@v4
with:
path: ~/.sonar/cache
key: ${{ runner.os }}-sonar
restore-keys: ${{ runner.os }}-sonar
- name: Cache Maven packages
uses: actions/cache@v4
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
- name: Build and analyze
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: mvn -B verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar -Dsonar.projectKey=Opetushallitus_rekisterointi
test:
needs: [build]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Download rekisterointi-jar
uses: actions/download-artifact@v4
with:
name: rekisterointi-jar
- uses: actions/setup-node@v4
with:
node-version: "18.x"
cache: "npm"
cache-dependency-path: rekisterointi-ui/package-lock.json
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: "21"
distribution: "corretto"
cache: "maven"
- name: Install app dependencies
run: npm ci
working-directory: rekisterointi-ui
- name: Install Playwright dependencies
run: npx playwright install-deps chromium
working-directory: rekisterointi-ui
- name: Run playwright tests
run: |
docker compose up &
java -jar -Dspring.profiles.active=dev rekisterointi.jar &
cd mock-api
npm install
npm start &
cd ../rekisterointi-ui
./scripts/ci-wait-for-frontend.sh
HEADLESS=true npm run playwright:test
- uses: actions/upload-artifact@v4
if: always()
with:
name: playwright-results
path: rekisterointi-ui/playwright-results
retention-days: 10
deploy-container:
needs: [build, test]
runs-on: ubuntu-latest
steps:
- name: Checkout source
uses: actions/checkout@v4
- name: Download rekisterointi-jar
uses: actions/download-artifact@v4
with:
name: rekisterointi-jar
- name: Build Docker Conainer
shell: bash
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
run: |
git clone https://github.com/Opetushallitus/ci-tools.git
source ci-tools/common/setup-tools.sh
export BASE_IMAGE="baseimage-fatjar-openjdk21:master"
export ARTIFACT_NAME="rekisterointi"
cp rekisterointi.jar $DOCKER_BUILD_DIR/artifact/$ARTIFACT_NAME.jar
cp -vr oph-configuration $DOCKER_BUILD_DIR/config/
./ci-tools/common/pull-image.sh
./ci-tools/github-build/build-fatjar.sh $ARTIFACT_NAME
./ci-tools/github-build/upload-image.sh $ARTIFACT_NAME