-
Notifications
You must be signed in to change notification settings - Fork 21
107 lines (92 loc) · 3.41 KB
/
3.rc-test-deploy.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
name: "run tests & deploy to test"
on:
pull_request:
types: [ opened, synchronize, reopened ]
branches: [ main ]
env:
IMAGE_NAME: api
concurrency:
group: ci-deploy-rc-${{ github.ref }}
cancel-in-progress: true
jobs:
rc-test:
if: contains(toJSON(github.head_ref), 'release/') || contains(toJSON(github.head_ref), 'hotfix/')
runs-on: ubuntu-latest
steps:
# 1. Setup
- uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4.5.0
with:
distribution: 'liberica'
java-version: '21'
cache: 'maven'
# 2. Test
- name: Run Unit & Integration Tests
run: mvn clean verify --no-transfer-progress
rc-deploy:
needs: [ rc-test ]
runs-on: ubuntu-latest
environment: test
permissions: # Necessary for workload identity provider
contents: 'read'
id-token: 'write'
steps:
# 1. Setup
- uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4.5.0
with:
distribution: 'liberica'
java-version: '21'
cache: 'maven'
# 2. Sets & print variables
- name: Sets variables
id: variables
run: |
git fetch --prune --prune-tags origin
# 1. Get tags
LATEST_TAG=$(git describe --tags "$(git rev-list --tags --max-count=1)")
TAG_LIST=($(echo $LATEST_TAG | tr '.' ' '))
[[ "${#TAG_LIST[@]}" -ne 2 ]] && echo "$RELEASE_VERSION is not a valid version" && exit 1
# 2. Set release version
if [[ "$GITHUB_HEAD_REF" == release* ]]
then
RELEASE_VERSION=$(( TAG_LIST[0] + 1 )).0;
else
RELEASE_VERSION=${TAG_LIST[0]}.$(( TAG_LIST[1] + 1));
fi
# 3. Set vars
IMAGE_REGISTRY="us-docker.pkg.dev/${{ secrets.PROJECT_ID }}/cloud-diplomats/${{ env.IMAGE_NAME }}"
IMAGE_TAG=${RELEASE_VERSION}-$(git rev-parse --short=4 HEAD)-rc
# 4. Set vars as env
echo "IMAGE_REGISTRY=$IMAGE_REGISTRY" >> $GITHUB_ENV
echo "IMAGE_TAG=$IMAGE_TAG" >> $GITHUB_ENV
- name: Print variables
run: |
echo "IMAGE_TAG=$IMAGE_TAG"
echo "IMAGE_REGISTRY=$IMAGE_REGISTRY"
# # 3. Auth
# - name: Auth via Workload Identity Federation
# id: auth
# uses: google-github-actions/auth@v2.1.3
# with:
# workload_identity_provider: ${{ secrets.WORKLOAD_IDENTITY_PROVIDER }}
# service_account: ${{ secrets.SERVICE_ACCOUNT }} # impersonated SA
#
# # 4. Setup gcloud & configure docker to use gcloud
# - name: Setup gcloud
# uses: google-github-actions/setup-gcloud@v2.1.0
# with:
# project_id: ${{ secrets.PROJECT_ID }}
# - name: Setup docker to authenticate via gcloud
# run: gcloud --quiet auth configure-docker us-docker.pkg.dev
#
# # 5. Build image
# - name: Build image
# run: mvn clean package -DskipTests spring-boot:build-image --no-transfer-progress -Dspring-boot.build-image.imageName=$IMAGE_REGISTRY:$IMAGE_TAG
#
# # 6. Push image
# - name: Push image
# run: docker push $IMAGE_REGISTRY:$IMAGE_TAG
# 7. Notify slack if fails