Main build #5
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: Main build | |
on: | |
workflow_dispatch: | |
push: | |
branches: [main] | |
env: | |
REGISTRY: ghcr.io | |
NAMESPACE: galasa-dev | |
BRANCH: ${{ github.ref_name }} | |
jobs: | |
log-github-ref: | |
name: Log the GitHub ref this workflow is running on (Branch or tag that received dispatch) | |
runs-on: ubuntu-latest | |
steps: | |
- name: Log GitHub ref of workflow | |
run: | | |
echo "This workflow is running on GitHub ref ${{ env.BRANCH }}" | |
build-simplatform: | |
name: Building Simplatform web application and tests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Set up JDK | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '17' | |
distribution: 'semeru' | |
- name: Print Githash | |
run: | | |
echo $GITHUB_SHA > ./simplatform.githash | |
- name: Building galasa-simplatform-application using maven | |
run: | | |
set -o pipefail | |
mvn -f galasa-simplatform-application/pom.xml deploy -X \ | |
-Dgalasa.source.repo=https://development.galasa.dev/${{ env.BRANCH }}/maven-repo/obr \ | |
-Dgalasa.central.repo=https://repo.maven.apache.org/maven2/ \ | |
-Dgalasa.release.repo=file:${{ github.workspace }}/repo \ | |
--batch-mode --errors --fail-at-end \ | |
--settings ${{ github.workspace }}/settings.xml 2>&1 | tee galasa-simplatform-application-build.log | |
- name: Upload galasa-simplatform-application Maven Build Log | |
if: failure() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: galasa-simplatform-application-build-log | |
path: galasa-simplatform-application-build.log | |
retention-days: 7 | |
- name: Building galasa-simbank-tests using maven | |
run: | | |
set -o pipefail | |
mvn -f galasa-simbank-tests/pom.xml deploy -X \ | |
-Dgalasa.source.repo=https://development.galasa.dev/${{ env.BRANCH }}/maven-repo/obr \ | |
-Dgalasa.central.repo=https://repo.maven.apache.org/maven2/ \ | |
-Dgalasa.release.repo=file:${{ github.workspace }}/repo \ | |
--batch-mode --errors --fail-at-end \ | |
--settings ${{ github.workspace }}/settings.xml 2>&1 | tee galasa-simbank-tests-build.log | |
- name: Upload galasa-simbank-tests Maven Build Log | |
if: failure() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: galasa-simbank-tests-build-log | |
path: galasa-simbank-tests-build.log | |
retention-days: 7 | |
- name: Login to Github Container Registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ${{ env.REGISTRY }} | |
username: galasa-team | |
password: ${{ secrets.GALASA_TEAM_WRITE_PACKAGES_TOKEN }} | |
- name: Extract metadata for Simplatform maven artefacts image | |
id: metadata-simplatform | |
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 | |
with: | |
images: ${{ env.REGISTRY }}/${{ env.NAMESPACE }}/simplatform-maven-artefacts | |
- name: Build Simplatform image for development Maven registry | |
id: build-simplatform | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
file: dockerfiles/dockerfile.simplatform | |
push: true | |
tags: ${{ steps.metadata-simplatform.outputs.tags }} | |
labels: ${{ steps.metadata-simplatform.outputs.labels }} | |
build-args: | | |
baseVersion=latest | |
dockerRepository=ghcr.io | |
branch=${{ env.BRANCH }} | |
- name: Extract metadata for Simplatform jar image | |
id: metadata-simplatform-jar | |
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 | |
with: | |
images: ${{ env.REGISTRY }}/${{ env.NAMESPACE }}/simplatform-jar | |
- name: Build simplatform jar image | |
id: build-simplatform-jar | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
file: dockerfiles/dockerfile.simplatform-amd64 | |
push: true | |
tags: ${{ steps.metadata-simplatform-jar.outputs.tags }} | |
labels: ${{ steps.metadata-simplatform-jar.outputs.labels }} | |
- name: Recycle application in ArgoCD | |
env: | |
ARGOCD_AUTH_TOKEN: ${{ secrets.ARGOCD_TOKEN }} | |
run: | | |
docker run --env ARGOCD_AUTH_TOKEN=${{ env.ARGOCD_AUTH_TOKEN }} --rm -v ${{ github.workspace }}:/var/workspace ghcr.io/galasa-dev/argocdcli:main app actions run ${{ env.BRANCH }}-simplatform restart --kind Deployment --resource-name simplatform-${{ env.BRANCH }} --server argocd.galasa.dev | |
- name: Wait for app health in ArgoCD | |
env: | |
ARGOCD_AUTH_TOKEN: ${{ secrets.ARGOCD_TOKEN }} | |
run: | | |
docker run --env ARGOCD_AUTH_TOKEN=${{ env.ARGOCD_AUTH_TOKEN }} --rm -v ${{ github.workspace }}:/var/workspace ghcr.io/galasa-dev/argocdcli:main app wait ${{ env.BRANCH }}-simplatform --resource apps:Deployment:simplatform-${{ env.BRANCH }} --health --server argocd.galasa.dev | |
report-failure: | |
name: Report failure in workflow | |
runs-on: ubuntu-latest | |
needs: [log-github-ref, build-simplatform] | |
if: failure() | |
steps: | |
- name: Report failure in workflow to Slack | |
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 "simplatform" --workflowName "${{ github.workflow }}" --workflowRunNum "${{ github.run_id }}" --ref "${{ env.BRANCH }}" --hook "${{ env.SLACK_WEBHOOK }}" |