Apache Beam Playground

GitHub Actions

Pull request run

Those runs are results of PR from the forks made by contributors. Most builds for Apache Beam fall into this category. They are executed in the context of the “Fork”, not main Beam Code Repository which means that they have only “read” permission to all the GitHub resources (container registry, code repository). This is necessary as the code in those PRs (including CI job definition) might be modified by people who are not committers for the Apache Beam Code Repository.

The main purpose of those jobs is to check if PR builds cleanly, if the test run properly and if the PR is ready to review and merge.

Direct Push/Merge Run

Those runs are results of direct pushes done by the committers or as result of merge of a Pull Request by the committers. Those runs execute in the context of the Apache Beam Code Repository and have also write permission for GitHub resources (container registry, code repository). The main purpose for the run is to check if the code after merge still holds all the assertions - like whether it still builds, all tests are green.

This is needed because some of the conflicting changes from multiple PRs might cause build and test failures after merge even if they do not fail in isolation.

Workflows

Build And Deploy Playground Backend Application - build_playground_backend.yml

JobDescriptionPull Request RunDirect Push/Merge RunRequires GCP Credentials
Check out the repoGitHub Action used to check-out a repository.YesYesNo
setup-javaInstall Java.YesYesNo
setup-goInstall Go.YesYesNo
maven config cleanClean maven settingsYesYesNo
set up cloud sdk and its componentsSetting up cloud client and its components for testsYesYesNo
playground:backend:precommitPre commit playground.YesYesNo
npm installInstall nmp package.YesYesNo
lint dockerfileInstall and lint docker file.YesYesNo
setup-terraformInstall terraform.YesYesNo
Docker TagAdd tag , if it not set.YesYesNo
GCP accountConnect to Gcp.YesYesYes
Login to DockerLogin to docker repository.YesYesYes
Deploy BackendBuild docker container, push it to repository, deploy it to Gcp.YesYesYes

Build And Deploy Playground Frontend Application - build_playground_frontend.yml

JobDescriptionPull Request RunDirect Push/Merge RunRequires GCP Credentials
Check out the repoGitHub Action used to check-out a repository.YesYesNo
setup-javaInstall Java.YesYesNo
install flutterInstall flutter package.YesYesNo
maven config cleanClean maven settingsYesYesNo
install npmInstall nmp package.YesYesNo
lint dockerfileInstall and lint docker file.YesYesNo
setup-terraformInstall terraform.YesYesNo
Docker TagAdd tag , if it not set.YesYesNo
GCP accountConnect to Gcp.YesYesYes
Login to DockerLogin to docker repository.YesYesYes
Deploy FrontendConfig and build, push docker container to repository, deploy to Gcp.YesYesYes

Collect And Deploy Playground Examples - playground_deploy_examples.yml

JobDescriptionPull Request RunDirect Push/Merge RunRequires GCP Credentials
Check out the repoGitHub Action used to check-out a repository.YesYesNo
setup-pythonInstall Python.YesYesNo
setup-javaInstall Java.YesYesNo
Install kubectlInstall tool kubectl for kubernetes cloudYesYesNo
Install helmInstall Help pluginYesYesNo
Set up Cloud SDKInstall GCP Cloud clientYesYesNo
install depsAdd packages:YesYesNo
grpcio-tools,grpcio,mock,protobuf, pytest,pytest-mock,
PyYAML,google-cloud-storage,tqdm
maven config cleanClean maven settingsYesYesNo
GCP accountConnect to Gcp.YesYesYes
Docker TagAdd tag , if it not set.YesYesNo
Get K8s ConfigGet config for kubectlYesYesYes
Login to DockerLogin to docker repository.YesYesYes
Build And Push AppsBuild and push docker containers for appYesYesYes
Install helm chartDeploy app to kubernetes cloudYesYesYes
Run Python Examples CIPrepare examples for PythonYesYesYes
Run Python Examples CDExecute examples for PythonYesYesYes
Run Go Examples CIPrepare examples for GoYesYesYes
Run Go Examples CDExecute examples for GoYesYesYes
Run Java Examples CIPrepare examples for JavaYesYesYes
Run Java Examples CDExecute examples for JavaYesYesYes
Delete Helm ChartDrop kubernetes cloudYesYesYes

Secrets for action

  • GCP_PLAYGROUND_REGION - gcp main region location cloud (default:us-central1)
  • GCP_PLAYGROUND_SA_EMAIL - gcp service account id (default:playground-deploy@apache-beam-testing.iam.gserviceaccount.com)
  • GCP_PLAYGROUND_PROJECT_ID - gcp project id (default:apache-beam-testing)
  • PLAYGROUND_REGISTRY_NAME - gcp docker registry address (default:us-central1-docker.pkg.dev)
  • GCP_PLAYGROUND_SA_KEY - gcp private key file, it export from service account and encode to Base64