-
Notifications
You must be signed in to change notification settings - Fork 7
134 lines (111 loc) · 4.63 KB
/
pr-build.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
#
# Copyright contributors to the Galasa project
#
# SPDX-License-Identifier: EPL-2.0
#
name: PR build
on:
pull_request:
branches: [main]
env:
REGISTRY: ghcr.io
NAMESPACE: galasa-dev
IMAGE_TAG: main
jobs:
build-cli:
name: Build the Galasa CLI
runs-on: ubuntu-latest
steps:
- name: Checkout CLI
uses: actions/checkout@v4
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
with:
gradle-version: 8.9
cache-disabled: true
# Pull down dependencies with Gradle and put them in the right places.
- name: Gather dependencies using Gradle
run : |
set -o pipefail
gradle -b build.gradle installJarsIntoTemplates --info \
--no-daemon --console plain \
-PsourceMaven=https://development.galasa.dev/main/maven-repo/obr \
-PcentralMaven=https://repo.maven.apache.org/maven2/ \
-PtargetMaven=${{ github.workspace }}/repo 2>&1 | tee build.log
- name: Upload Gradle installJarsIntoTemplates log
if: failure()
uses: actions/upload-artifact@v4
with:
name: gradle-installJarsIntoTemplates-log
path: build.log
retention-days: 7
# Generate client code so galasactl can communicate with the API server.
- name: Generate Go client code using openapi.yaml
run : |
docker run --rm -v ${{ github.workspace }}:/var/workspace ghcr.io/galasa-dev/openapi:main java -jar /opt/openapi/openapi-generator-cli.jar generate -i /var/workspace/build/dependencies/openapi.yaml -g go -o /var/workspace/pkg/galasaapi --additional-properties=packageName=galasaapi --global-property=apiTests=false
# The go.mod and go.sum are out of date, as they do not include the generated code so they are deleted here. They get re-generated when we compile.
# Due to permissions, deleting the go.mod and go.sum must be done by the openapi image as the image generated those files.
- name: Clear go.mod
run : |
docker run --rm -v ${{ github.workspace }}:/var/workspace ghcr.io/galasa-dev/openapi:main rm /var/workspace/pkg/galasaapi/go.mod
- name: Clear go.sum
run : |
docker run --rm -v ${{ github.workspace }}:/var/workspace ghcr.io/galasa-dev/openapi:main rm /var/workspace/pkg/galasaapi/go.sum
# The go code needs to know which version of Galasa it is part of, so substitute an eye-catcher with the correct value.
- name: Update version
run : |
version=$(cat VERSION) &&
cat pkg/cmd/root.go | sed "s/unknowncliversion-unknowngithash/${version}/1" > temp.txt &&
mv -f temp.txt pkg/cmd/root.go &&
cat pkg/cmd/root.go
# Invoke the make command to build the go code, run unit tests and gather code coverage stats.
- name: Build Go code with the Makefile
run : |
make all
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'semeru'
- name: Chmod local test script
run: |
chmod +x test-galasactl-local.sh
- name: Run local test script with Maven
run : |
./test-galasactl-local.sh --buildTool maven
- name: Run local test script with Gradle
run : |
./test-galasactl-local.sh --buildTool gradle
# Commenting out for now as we cannot reach the prod1 ecosystem from GitHub Actions.
# - name: Chmod ecosystem test script
# run : |
# chmod +x test-galasactl-ecosystem.sh
# - name: Run ecosystem test script
# run : |
# ./test-galasactl-ecosystem.sh --bootstrap https://prod1-galasa-dev.cicsk8s.hursley.ibm.com/api/bootstrap
- name: Build Docker image with galasactl executable
uses: docker/build-push-action@v5
with:
context: .
file: dockerfiles/dockerfile.galasactl
load: true
tags: galasactl-x86_64:test
build-args: |
platform=linux-x86_64
- name: Build Docker image with galasactl executable and IBM certificates
uses: docker/build-push-action@v5
with:
context: dockerfiles/certs
file: dockerfiles/dockerfile.galasactl-ibm
load: true
tags: galasactl-ibm-x86_64:test
build-args: |
dockerRepository=ghcr.io
tag=main
- name: Build Docker image for development download site
uses: docker/build-push-action@v5
with:
context: .
file: dockerfiles/dockerfile.galasactl-executables
load: true
tags: galasactl-executables:test