-
Notifications
You must be signed in to change notification settings - Fork 1
159 lines (147 loc) · 5.08 KB
/
ci.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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
name: CI
# This has two steps:
# 1. Run unit tests - on any push to main, develop or release/* branches
# 2. Build and push docker images, if:
# a. repo is IN-CORE/incore-services (excludes forked repos) AND
# b. Unit tests pass AND
# c. if a PR to main, develop or release/* branch is created/updated OR
# d. If a push is made to main, develop or release/* branch branch.
# TODO: post an alert to incore-alerts slack channel when there is a failure on develop or main branches
on:
push:
branches:
- main
- develop
- 'release/*'
pull_request:
branches:
- main
- develop
- 'release/*'
env:
MAIN_REPO: IN-CORE/incore-services
jobs:
unit_tests:
name: Build and Run Tests
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v2
- name: Setup Java
uses: actions/setup-java@v2
with:
distribution: 'zulu'
java-version: '11'
- name: Build and Test Farm
run: |
java --version
cd server/
./gradlew clean
./gradlew assemble
./gradlew test
- name: 'Upload Artifact'
uses: actions/upload-artifact@v3 # Updated to version 3
with:
name: incore-services-build-files
path: |
server/build.gradle
server/*/build/libs/*.war
./Dockerfile.*
docker/**
clear_cache.sh
clear_cache_cron
retention-days: 1
docker:
runs-on: ubuntu-latest
needs: unit_tests
strategy:
fail-fast: true
matrix:
name:
- data
- dfr3
- hazard
- semantics
- space
- project
include:
- name: data
dockerfile: Dockerfile.data
hub_project: incore/data-jetty
- name: hazard
dockerfile: Dockerfile.hazard
hub_project: incore/hazard-jetty
- name: dfr3
dockerfile: Dockerfile.dfr3
hub_project: incore/dfr3-jetty
- name: semantics
dockerfile: Dockerfile.semantics
hub_project: incore/semantics-jetty
- name: space
dockerfile: Dockerfile.space
hub_project: incore/space-jetty
- name: project
dockerfile: Dockerfile.project
hub_project: incore/project-jetty
steps:
- name: Download build files
uses: actions/download-artifact@v3
with:
name: incore-services-build-files
- name: version information and set envs
run: |
if [ "${{ github.event.release.target_commitish }}" != "" ]; then
BRANCH="${{ github.event.release.target_commitish }}"
elif [[ "${{github.event_name}}" == "pull_request" ]]; then
BRANCH="PR-${{github.event.pull_request.number}}"
else
if [[ $GITHUB_REF =~ "release/" ]]; then
BRANCH="release"
else
BRANCH=${GITHUB_REF##*/}
fi
fi
echo "GITHUB_BRANCH=${BRANCH}" >> $GITHUB_ENV
version=$(cat ./server/build.gradle | grep "archiveVersion" | head -1 | awk -F= "{ print $2 }" | sed "s/[archiveVersion =,',]//g")
if [ "$BRANCH" == "main" ]; then
tags="latest"
oldversion=""
while [ "${oldversion}" != "${version}" ]; do
oldversion="${version}"
tags="${tags},${version}"
version=${version%.*}
done
echo "VERSION=${version}" >> $GITHUB_ENV
echo "TAGS=${tags}" >> $GITHUB_ENV
elif [ "$BRANCH" == "release" ]; then
echo "VERSION=${version}-rc" >> $GITHUB_ENV
echo "TAGS=${version}-rc" >> $GITHUB_ENV
elif [ "$BRANCH" == "develop" ]; then
echo "VERSION=develop" >> $GITHUB_ENV
echo "TAGS=develop" >> $GITHUB_ENV
else
echo "VERSION=testing" >> $GITHUB_ENV
STRIPPED_TAGS=${BRANCH/\#/_}
echo "TAGS=${STRIPPED_TAGS}" >> $GITHUB_ENV
fi
- name: Build docker image
if: |
github.repository == env.MAIN_REPO &&
(github.event_name == 'pull_request' || env.GITHUB_BRANCH == 'develop' || env.GITHUB_BRANCH == 'main' || env.GITHUB_BRANCH == 'release')
uses: elgohr/[email protected]
with:
dockerfile: ${{ matrix.dockerfile }}
name: ${{ matrix.hub_project }}
no_push: true
- name: Publish docker image to NCSA hub
if: |
github.repository == env.MAIN_REPO &&
(github.event_name == 'pull_request' || env.GITHUB_BRANCH == 'develop' || env.GITHUB_BRANCH == 'main'|| env.GITHUB_BRANCH == 'release')
uses: elgohr/[email protected]
with:
dockerfile: ${{ matrix.dockerfile }}
registry: hub.ncsa.illinois.edu
name: ${{ matrix.hub_project }}
username: ${{ secrets.HUB_USERNAME }}
password: ${{ secrets.HUB_PASSWORD }}
tags: "${{ env.TAGS }}"