GitHub Actions workflows for CLI #22
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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: Checkout Framework | |
uses: actions/checkout@v4 | |
with: | |
repository: ${{env.NAMESPACE}}/framework | |
path: framework | |
- name: Setup Gradle | |
uses: gradle/actions/setup-gradle@v3 | |
with: | |
gradle-version: 6.9.2 | |
# Pull down dependencies with Gradle and put them in the right places. | |
- name: Gather dependencies using Gradle | |
run : | | |
gradle -b build.gradle installJarsIntoTemplates --info \ | |
-PsourceMaven=https://development.galasa.dev/gh/maven-repo/maven \ | |
-PcentralMaven=https://repo.maven.apache.org/maven2/ \ | |
-PtargetMaven=${{ github.workspace }}/repo \ | |
# 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: '11' | |
distribution: 'semeru' | |
cache: maven | |
- 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: Setup Gradle | |
uses: gradle/actions/setup-gradle@v3 | |
with: | |
gradle-version: 6.9.2 | |
- name: Run local test script with Gradle | |
run : | | |
./test-galasactl-local.sh --buildTool gradle | |
- name: Chmod ecosystem test script | |
run : | | |
chmod +x test-galasactl-ecosystem.sh | |
# Commenting out for now as we cannot reach the prod1 ecosystem from GitHub Actions. | |
# - 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 | |
# Commenting for now as the image is not yet available on GHCR. | |
# - 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: cli-executables:test | |