Skip to content

GHA structure in WDS

ichengchang edited this page Jul 23, 2024 · 29 revisions

GHA structure in WDS

%%{init: {"flowchart": {"defaultRenderer": "elk"}} }%%
graph LR;
    pr([on PR])
    push([on push])
    dispatch([on dispatch])
    appcontext["compute-app-context.yml(promise)"]
    getappcontext["get-app-context(action)"]
    pacts[publish-pacts.yml]
    buildtest[build-and-test.yml]
    buildint[build-and-integration-test.yml]
    docker[publish-docker.yml]
    python[release-python-client.yml]
    appvers[publish-app-version.yml]
    release[release-drafter.yml]
    subdep[submit-dependencies.yml]
    tagpub[tag-and-publish.yml]
    java[publish-java-client.yml]
    e2e[run-e2e-tests.yml]
    bee["create-bee(action)"]
    landing["landing-zone-attach(action)"]
    pr-->|to main|appcontext
    pr-->|to main, uses|getappcontext
    pr-->|all branches|buildint
    pr-->|all branches|buildtest
    pr-->|all branches|python
    push-->|to main|appcontext
    push-->|to main, uses|getappcontext
    push-->|to main|buildtest
    push-->|to main|release
    push-->|to main|subdep
    dispatch-->|schedule or manual|e2e
    dispatch-->|manual|tagpub
    getappcontext-->pacts
    e2e-->|uses|bee
    e2e-->|uses|landing
    tagpub-->|calls|python
    tagpub-->|calls|java
    tagpub-->|calls|docker
    tagpub-->|calls|appvers
    getappcontext-->buildtest
    buildtest-->|calls|docker
Loading

What each workflow does

Workflow Jobs
compute-app-context.yml This is the standardized app versioning workflow. It computes the App Context and uploads the app version metadata as a dotenv file
get-app-context/actions.yml Retrieve the App Context from artifact
build-and-integration-test.yml ./gradlew integrationTest, upload test reports (only on failure)
build-and-test.yml ./gradlew --build-cache --scan test jacocoTestReport, sonar scan, upload test reports (only on failure), calls tag (only on push to main), call publish docker
publish-app-version.yml create terra-helmfile PR, set version in dev
publish-docker.yml build docker image, tag with new version and/or git hash, push image to GCR and ACR, report version to Sherlock
publish-java-client.yml build, push java client to artifactory
publish-pacts.yml bumps tag, builds consumer contract tests, publish pacts to pact broker, run can-i-deploy
release-drafter.yml updates draft for next release
release-python-client.yml builds python client, runs pytest, publish to pypi (only on main)
run-e2e-tests.yaml create-bee, attach-landing-zone, run e2e test, destroy-bee, report workflow result
submit-dependencies.yml generates and submits dependency graph for dependabot
tag.yml bumps tag to new patch version
tag-and-publish.yml bumps tag to new minor version, call python client, call java client, call docker image, creates a release, call publish app version