Merge pull request #79 from galasa-dev/jade-fix-typo #36
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
# | |
# Copyright contributors to the Galasa project | |
# | |
# SPDX-License-Identifier: EPL-2.0 | |
# | |
name: Main build | |
on: | |
workflow_dispatch: | |
push: | |
branches: [main] | |
env: | |
REGISTRY: ghcr.io | |
NAMESPACE: ${{ github.repository_owner }} | |
BRANCH: ${{ github.ref_name }} | |
jobs: | |
check-secrets: | |
name: Check for required secrets | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check if WRITE_GITHUB_PACKAGES_USERNAME is set in this repository | |
run: | | |
if [ -z "${{ secrets.WRITE_GITHUB_PACKAGES_USERNAME }}" ]; then | |
echo "WRITE_GITHUB_PACKAGES_USERNAME is not set. Please configure it in the repository secrets. \ | |
It must contain the GitHub username you want to use to log into GitHub Container Registry." | |
exit 1 | |
else | |
echo "WRITE_GITHUB_PACKAGES_USERNAME is set." | |
fi | |
- name: Check if WRITE_GITHUB_PACKAGES_TOKEN is set in this repository | |
run: | | |
if [ -z "${{ secrets.WRITE_GITHUB_PACKAGES_TOKEN }}" ]; then | |
echo "WRITE_GITHUB_PACKAGES_TOKEN is not set. Please configure it in the repository secrets. \ | |
It must contain a GitHub Personal Access Token with write:packages scope \ | |
that you want to use to log into GitHub Container Registry." | |
exit 1 | |
else | |
echo "WRITE_GITHUB_PACKAGES_TOKEN is set." | |
fi | |
build-webui: | |
name: Build the Galasa Web UI | |
runs-on: ubuntu-latest | |
needs: check-secrets | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Setup JDK | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '17' | |
distribution: 'semeru' | |
- name: Setup Gradle | |
uses: gradle/actions/setup-gradle@v3 | |
with: | |
gradle-version: 8.9 | |
cache-disabled: true | |
- name: Generate typescript openapi client using Gradle | |
run: | | |
gradle generateTypeScriptClient --info \ | |
--no-daemon --console plain \ | |
-PsourceMaven=https://development.galasa.dev/main/maven-repo/obr 2>&1 | tee build.log | |
- name: Upload Gradle build log | |
if: failure() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: gradle-build-log | |
path: build.log | |
retention-days: 7 | |
- name: Fix openapi client | |
run: | | |
mkdir -p temp && | |
promiseApiFile="galasa-ui/src/generated/galasaapi/types/PromiseAPI.ts" && | |
cat ${promiseApiFile} | sed "s/const result =/const apiResult =/g" > temp/PromiseAPI-temp.ts && | |
cat temp/PromiseAPI-temp.ts | sed "s/return result\.toPromise/return apiResult\.toPromise/g" > temp/PromiseAPI.ts && | |
cp temp/PromiseAPI.ts ${promiseApiFile} && | |
indexFile="galasa-ui/src/generated/galasaapi/index.ts" && | |
cat ${indexFile} | sed "s/export { Configuration/export { type Configuration/1" > temp/index-temp.ts && | |
cat temp/index-temp.ts | sed "s/export { PromiseMiddleware/export { type PromiseMiddleware/1" > temp/index.ts && | |
cp temp/index.ts ${indexFile} | |
- name: Setup Nodejs | |
uses: actions/setup-node@v3 | |
with: | |
node-version: "20.10.0" | |
- name: Installing webui's dependencies using npm | |
working-directory: ./galasa-ui | |
run: | | |
npm install | |
- name: Running webui's unit tests using npm | |
working-directory: ./galasa-ui | |
run: | | |
npm test -- --watchAll=false | |
- name: Building webui using npm | |
working-directory: ./galasa-ui | |
run: | | |
npm run build | |
- name: Login to Github Container Registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ${{ env.REGISTRY }} | |
username: ${{ secrets.WRITE_GITHUB_PACKAGES_USERNAME }} | |
password: ${{ secrets.WRITE_GITHUB_PACKAGES_TOKEN }} | |
- name: Extract metadata for webui image | |
id: metadata | |
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 | |
with: | |
images: ${{ env.REGISTRY }}/${{ env.NAMESPACE }}/webui | |
- name: Build Webui image | |
id: build | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
file: dockerfiles/dockerfile.webui | |
push: true | |
tags: ${{ steps.metadata.outputs.tags }} | |
labels: ${{ steps.metadata.outputs.labels }} | |
trigger-workflow: | |
# Skip this job for forks | |
if: ${{ github.repository_owner == 'galasa-dev' }} | |
name: Recycle ecosystem1 | |
needs: build-webui | |
runs-on: ubuntu-latest | |
steps: | |
- name: Trigger Helm workflow using GitHub CLI | |
env: | |
GH_TOKEN: ${{ secrets.GALASA_TEAM_GITHUB_TOKEN }} | |
run: | | |
gh workflow run build-helm.yaml --repo https://github.com/galasa-dev/automation | |
report-failure: | |
# Skip this job for forks | |
if: ${{ failure() && github.repository_owner == 'galasa-dev' }} | |
name: Report workflow failure into Slack channel | |
runs-on: ubuntu-latest | |
needs: build-webui | |
steps: | |
- name: Report workflow failure into Slack channel | |
env: | |
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} | |
run : | | |
docker run --rm -v ${{ github.workspace }}:/var/workspace ghcr.io/galasa-dev/galasabld-ibm:main slackpost workflows --repo "webui" --workflowName "${{ github.workflow }}" --workflowRunNum "${{ github.run_id }}" --ref "${{ env.BRANCH }}" --hook "${{ env.SLACK_WEBHOOK }}" |