@@ -9,107 +9,12 @@ permissions: {}
9
9
10
10
jobs :
11
11
build :
12
- name : Build
13
- runs-on : ubuntu-latest
14
- steps :
15
- - id : checkout
16
- name : Checkout code
17
- uses : actions/checkout@v4
18
-
19
- - id : java
20
- name : Install Java and Maven
21
- uses : actions/setup-java@v4
22
- with :
23
- distribution : zulu
24
- java-version : 17
25
-
26
- - id : vars
27
- name : Get project variables
28
- run : |
29
- echo -n "keycloakVersion=" >> $GITHUB_OUTPUT
30
- mvn -q help:evaluate -Dexpression=keycloak.version -DforceStdout 2> /dev/null | grep -E '^[0-9a-zA-Z.-]+$' >> $GITHUB_OUTPUT
31
- echo -n "artifactId=" >> $GITHUB_OUTPUT
32
- mvn -q help:evaluate -Dexpression=project.artifactId -DforceStdout 2> /dev/null | grep -E '^[0-9a-zA-Z.-]+$' >> $GITHUB_OUTPUT
33
- echo -n "projectName=" >> $GITHUB_OUTPUT
34
- mvn -q help:evaluate -Dexpression=project.name -DforceStdout 2> /dev/null | grep -E '^[0-9a-zA-Z :,.-]+$' >> $GITHUB_OUTPUT
35
- echo -n "projectVersion=" >> $GITHUB_OUTPUT
36
- mvn -q help:evaluate -Dexpression=project.version -DforceStdout 2> /dev/null | grep -E '^[0-9a-zA-Z.-]+$' >> $GITHUB_OUTPUT
37
-
38
- - name : Build project
39
- run : |
40
- mvn -B test package
41
-
42
- - name : Upload artifact
43
- uses : actions/upload-artifact@v4
44
- with :
45
- name : jar
46
- path : target/${{ steps.vars.outputs.artifactId }}-${{ steps.vars.outputs.projectVersion }}.jar
47
- if-no-files-found : error
48
-
49
- outputs :
50
- artifact_id : ${{ steps.vars.outputs.artifactId }}
51
- keycloak_version : ${{ steps.vars.outputs.keycloakVersion }}
52
- project_name : ${{ steps.vars.outputs.projectName }}
53
- project_version : ${{ steps.vars.outputs.projectVersion }}
54
-
55
- test :
56
- name : Test
57
- runs-on : ubuntu-latest
58
- needs : build
59
- steps :
60
- - id : checkout
61
- name : Checkout code
62
- uses : actions/checkout@v4
63
-
64
- - id : download_artifact
65
- name : Download artifact
66
- uses : actions/download-artifact@v4
67
- with :
68
- name : jar
69
-
70
- - id : create_container
71
- name : Create Keycloak container
72
- run : |
73
- docker run -i -t -d -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin -p 8080:8080 --name keycloak "quay.io/keycloak/keycloak:${{ needs.build.outputs.keycloak_version }}" start-dev
74
-
75
- - id : deploy
76
- name : Deploy artifact
77
- run : |
78
- CONTAINER="keycloak"
79
- NAME="${{ needs.build.outputs.artifact_id }}-${{ needs.build.outputs.project_version }}.jar"
80
- FILE="/opt/keycloak/providers/${NAME}"
81
- docker cp "${NAME}" "${CONTAINER}:${FILE}"
82
- docker restart "${CONTAINER}"
83
- for i in {1..60}; do
84
- if curl --silent --max-time 1 -o /dev/null http://localhost:8080; then
85
- echo && echo "Deployment succeeded!" && exit 0
86
- else
87
- sleep 1
88
- echo -n "."
89
- fi
90
- done
91
- echo && echo "Deployment timeout!" && exit 1
92
-
93
- - id : configure_keycloak
94
- name : Configure Keycloak
95
- run : |
96
- CONTAINER="keycloak"
97
- docker exec -i "${CONTAINER}" /bin/bash <<EOF
98
- /opt/keycloak/bin/kcadm.sh config credentials --server http://localhost:8080 --realm master --user admin --password admin
99
- /opt/keycloak/bin/kcadm.sh create clients -r master -s clientId=test -s protocol=cas -s enabled=true -s publicClient=true \
100
- -s 'redirectUris=["http://localhost/*"]' -s baseUrl=http://localhost -s adminUrl=http://localhost
101
- /opt/keycloak/bin/kcadm.sh get serverinfo -r master --fields "providers(login-protocol(providers(cas)))" | grep cas
102
- EOF
103
-
104
- - id : run_tests
105
- name : Run tests
106
- run : |
107
- integrationTest/suite.sh
12
+ uses : ./.github/workflows/test.yml
108
13
109
14
release :
110
15
name : Release
111
16
runs-on : ubuntu-latest
112
- needs : [build, test ]
17
+ needs : [build]
113
18
permissions :
114
19
contents : write
115
20
steps :
0 commit comments