Most workflows will get kicked off automatically when you open a PR, push code, or on a schedule.
If you would like to manually trigger a job, you have 2 options:
Run XYZ PreCommit
). These will appear in statuses of previous PR runs of that check. You can trigger the job on any PR by commenting that trigger phrase in the PR.Run Workflow
.On top of normal Actions workflow steps, all new CI workflows (excluding release workflows or other workflow automation) should have the following:
Each of these is described in more detail below.
Due to specifics on how the comment triggered rerun is handled it is required that all jobs have name and phrase set via matrix elements. See the following example:
jobs: beam_job_name: name: ${{ matrix.job_name }} (${{ matrix.job_phrase }}) strategy: matrix: job_name: [beam_job_name] job_phrase: [Run Job Phrase] if: | github.event_name == 'push' || github.event_name == 'pull_request_target' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || github.event.comment.body == 'Run Job Phrase' steps: - uses: actions/checkout@v3 - name: Setup repository uses: ./.github/actions/setup-action with: comment_phrase: ${{ matrix.job_phrase }} github_token: ${{ secrets.GITHUB_TOKEN }} github_job: ${{ matrix.job_name }} (${{ matrix.job_phrase }})
And in case when the workflow already utilizes matrix do the following:
jobs: beam_job_with_matrix: name: ${{ matrix.job_name }} (${{ matrix.job_phrase }} ${{ matrix.python_version }}) runs-on: [self-hosted, ubuntu-20.04, main] timeout-minutes: 30 strategy: fail-fast: false matrix: job_name: ["beam_job_with_matrix"] job_phrase: ["Run Job With Matrix"] python_version: ['3.8','3.9','3.10','3.11'] if: | github.event_name == 'push' || github.event_name == 'pull_request_target' || github.event_name == 'schedule' || startsWith(github.event.comment.body, 'Run Job With Matrix') steps: - uses: actions/checkout@v3 - name: Setup repository uses: ./.github/actions/setup-action with: comment_phrase: ${{matrix.job_phrase}} github_token: ${{ secrets.GITHUB_TOKEN }} github_job: ${{ matrix.job_name }} (${{ matrix.job_phrase }} ${{ matrix.python_version }})
Notice how the matrix element of python_version
is appended to the name.
GitHub allows workflows to define a set of triggers that dictate when a job should be run. For more info, see documentation here.
For the purposes of Beam, each CI workflow should define the following triggers:
push
triggerpull_request_target
triggerThe push
/pull_request_target
triggers should only run when appropriate paths are modified. See https://github.com/apache/beam/blob/master/.github/workflows/beam_PreCommit_Go.yml#L4 for an example (you can copy and paste this into your workflow, you just need to change the paths).
Because we use the pull_request_target
trigger instead of pull_request
, we need an explicit checkout of the correct commit. This can be done as a step that uses the setup-action
action in your workflow. See https://github.com/apache/beam/blob/0ee2dc73ec6f555a5bf1a643dffd37f4927be67e/.github/workflows/beam_PreCommit_Go.yml#L65-L70 for an example (you can copy and paste this into your workflow). Please make sure that you checkout the code before using the composite action.
You should explicitly define the GitHub Actions token scopes needed by your job. For most jobs, this will be actions: write
(needed for comment triggering support) and read
permissions for all other options. See https://github.com/apache/beam/blob/907c5110163b0efe52e9e12127fd013c7fc455d7/.github/workflows/beam_PreCommit_Go.yml#L16 for an example (you can copy and paste this into your workflow).
Concurrency groups are a way of making sure that no more than one Actions run is running per job/group at any given time (previous ones can be cancelled). To reduce resource usage, you should define the following concurrency group:
concurrency: group: '${{ github.workflow }} @ ${{ github.event.issue.number || github.event.pull_request.head.label || github.sha || github.head_ref || github.ref }}-${{ github.event.schedule || github.event.comment.id || github.event.sender.login}}' cancel-in-progress: true
this defines the following groups:
In order to make it easier for non-committers to interact with workflows, workflows should implement comment triggering support. This requires 3 additional components beyond the ones mentioned above:
setup-action
action in your workflow, which encapsulates the checkout and rerun logic in one place. This should be gated on the comment trigger (example: https://github.com/apache/beam/blob/0ee2dc73ec6f555a5bf1a643dffd37f4927be67e/.github/workflows/beam_PreCommit_Go.yml#L65-L70)New workflows are not added to the UI on the Actions tab until they are merged into the repo's main branch (master for Beam). To test new workflows, we recommend the following pattern:
Run workflow
button.Note: most workflows use self-hosted runners with the main and ubuntu labels to execute (example). If you are testing on a fork, you likely will not have self-hosted runners set up. To work around this, you can start using hosted runners and then switch over when you're ready to create a PR. You can do this by changing runs-on: [self-hosted, ubuntu-20.04, main]
(self-hosted, use in your PR) to runs-on: ubuntu-20.04
(GitHub hosted, use for local testing).
If you need to make more changes to the workflow yaml file after it has been added to the repo, you can develop normally on a branch (using your fork or the main Beam repo if you are a committer). If you are a non-committer, this flow has several caveats mentioned below. To do this:
Note: If you run a workflow from your fork of Beam, it will not have access to secrets stored in the Beam repository. This will cause some things like authenticating to external services to fail, which may cause your workflow to fail. If you run into this issue, you can either:
Additionally, as mentioned above your fork likely will not have self-hosted runners set up. To work around this, you can start using hosted runners and then switch over when you're ready to create a PR. You can do this by changing runs-on: [self-hosted, ubuntu-20.04, main] (self-hosted, use in your PR) to runs-on: ubuntu-20.04 (GitHub hosted, use for local testing).
Please note that jobs with matrix need to have matrix element in the comment. Example: Run Python PreCommit (3.8)
| Workflow name | Matrix | Trigger Phrase | Cron Status | |:-------------:|:------:|:--------------:|:-----------:| | Java InfluxDbIO Integration Test | N/A |Run Java InfluxDbIO_IT
| | Load Tests GBK Dataflow Batch Go | N/A |
Run Load Tests Go GBK Dataflow Batch
| | Load Tests CoGBK Dataflow Streaming Java | N/A |
Run Load Tests Java CoGBK Dataflow Streaming
| | Load Tests Combine Dataflow Batch Python | N/A |
Run Load Tests Python Combine Dataflow Batch
| | Load Tests Combine Dataflow Batch Python | N/A |
Run Load Tests Python Combine Dataflow Batch
| | Load Tests FnApiRunner Microbenchmark Python | N/A |
Run Python Load Tests FnApiRunner Microbenchmark
| | Load Tests ParDo Dataflow Batch Go | N/A |
Run Load Tests Go ParDo Dataflow Batch
| | Performance Tests AvroIOIT HDFS | N/A |
Run Java AvroIO Performance Test HDFS
| | Performance Tests AvroIOIT | N/A |
Run Java AvroIO Performance Test
| | Performance Tests BigQueryIO Batch Java Avro | N/A |
Run BigQueryIO Batch Performance Test Java Avro
| | Performance Tests BigQueryIO Batch Java Json | N/A |
Run BigQueryIO Batch Performance Test Java Json
| | Performance Tests BigQueryIO Streaming Java | N/A |
Run BigQueryIO Streaming Performance Test Java
| | PostCommit BeamMetrics Publish | N/A |
Run Beam Metrics Deployment
| | PostCommit Go | N/A |
Run Go PostCommit
| | | PostCommit Go Dataflow ARM | N/A |
Run Go PostCommit Dataflow ARM
| | | PostCommit Go VR Flink | N/A |
Run Go Flink ValidatesRunner
| | | PostCommit Go VR Samza | N/A |
Run Go Samza ValidatesRunner
| | | PostCommit Go VR Spark | N/A |
Run Go Spark ValidatesRunner
| | | PostCommit Java Avro Versions | N/A |
Run Java Avro Versions PostCommit
| | | PostCommit Java Dataflow V1 | N/A |
Run PostCommit_Java_Dataflow
| | | PostCommit Java Dataflow V2 | N/A |
Run PostCommit_Java_DataflowV2
| | | PostCommit Java Examples Dataflow ARM | [‘8’,‘11’,‘17’] |
Run Java_Examples_Dataflow_ARM PostCommit (matrix_element)
| | | PostCommit Java Examples Dataflow | N/A |
Run Java examples on Dataflow
| | | PostCommit Java Examples Dataflow Java | [‘11’,‘17’] |
Run Java examples on Dataflow Java (matrix_element)
| | | PostCommit Java Examples Direct | N/A |
Run Java Examples_Direct
| | | PostCommit Java Examples Flink | N/A |
Run Java Examples_Flink
| | | PostCommit Java Examples Spark | N/A |
Run Java Examples_Spark
| | | PostCommit Java Hadoop Versions | N/A |
Run PostCommit_Java_Hadoop_Versions
| | | PostCommit Java Jpms Dataflow Java11 | N/A |
Run Jpms Dataflow Java 11 PostCommit
| | | PostCommit Java Jpms Dataflow Java17 | N/A |
Run Jpms Dataflow Java 17 PostCommit
| | | PostCommit Java Jpms Direct Java11 | N/A |
Run Jpms Direct Java 11 PostCommit
| | | PostCommit Java Jpms Direct Java17 | N/A |
Run Jpms Direct Java 17 PostCommit
| | | PostCommit Java Jpms Flink Java11 | N/A |
Run Jpms Flink Java 11 PostCommit
| | | PostCommit Java Jpms Spark Java11 | N/A |
Run Jpms Spark Java 11 PostCommit
| | | PostCommit Java Nexmark Dataflow | N/A |
Run Dataflow Runner Nexmark Tests
| | | PostCommit Java Nexmark Dataflow V2 | N/A |
Run Dataflow Runner V2 Nexmark Tests
| | | PostCommit Java Nexmark Dataflow V2 Java | [‘11’,‘17’] |
Run Dataflow Runner V2 Java (matrix) Nexmark Tests
| | | PostCommit Java Nexmark Direct | N/A |
Run Direct Runner Nexmark Tests
| | | PostCommit Java Nexmark Flink | N/A |
Run Flink Runner Nexmark Tests
| | | PostCommit Java Nexmark Spark | N/A |
Run Spark Runner Nexmark Tests
| | | PostCommit Java PVR Flink Streaming | N/A |
Run Java Flink PortableValidatesRunner Streaming
| | | PostCommit Java PVR Samza | N/A |
Run Java Samza PortableValidatesRunner
| | | PostCommit Java PVR Spark3 Streaming | N/A |
Run Java Spark v3 PortableValidatesRunner Streaming
| | | PostCommit Java PVR Spark Batch | N/A |
Run Java Spark PortableValidatesRunner Batch
| | | PostCommit Java Sickbay | N/A |
Run Java Sickbay
| | | PostCommit Java Tpcds Dataflow | N/A |
Run Dataflow Runner Tpcds Tests
| | | PostCommit Java Tpcds Flink | N/A |
Run Flink Runner Tpcds Tests
| | | PostCommit Java Tpcds Spark | N/A |
Run Spark Runner Tpcds Tests
| | | PostCommit Java ValidatesRunner Dataflow JavaVersions | [‘11’,‘17’] |
Run Dataflow ValidatesRunner Java (matrix_element)
| | | PostCommit Java ValidatesRunner Dataflow Streaming | N/A |
Run Dataflow Streaming ValidatesRunner
| | | PostCommit Java ValidatesRunner Dataflow V2 Streaming | N/A |
Run Java Dataflow V2 ValidatesRunner Streaming
| | | PostCommit Java ValidatesRunner Dataflow V2 | N/A |
Run Java Dataflow V2 ValidatesRunner
| | | PostCommit Java ValidatesRunner Dataflow | N/A |
Run Dataflow ValidatesRunner
| | | PostCommit Java ValidatesRunner Direct JavaVersions | [‘11’,‘17’] |
Run Direct ValidatesRunner Java (matrix_element)
| | | PostCommit Java ValidatesRunner Direct | N/A |
Run Direct ValidatesRunner
| | | PostCommit Java ValidatesRunner Flink Java11 | N/A |
Run Flink ValidatesRunner Java 11
| | | PostCommit Java ValidatesRunner Flink | N/A |
Run Flink ValidatesRunner
| | | PostCommit Java ValidatesRunner Samza | N/A |
Run Samza ValidatesRunner
| | | PostCommit Java ValidatesRunner Spark Java11 | N/A |
Run Spark ValidatesRunner Java 11
| | | PostCommit Java ValidatesRunner Spark | N/A |
Run Spark ValidatesRunner
| | | PostCommit Java ValidatesRunner SparkStructuredStreaming | N/A |
Run Spark StructuredStreaming ValidatesRunner
| | | PostCommit Java ValidatesRunner Twister2 | N/A |
Run Twister2 ValidatesRunner
| | | PostCommit Java ValidatesRunner ULR | N/A |
Run ULR Loopback ValidatesRunner
| | | PostCommit Java | N/A |
Run Java PostCommit
| | | PostCommit Javadoc | N/A |
Run Javadoc PostCommit
| | | PostCommit PortableJar Flink | N/A |
Run PortableJar_Flink PostCommit
| | | PostCommit PortableJar Spark | N/A |
Run PortableJar_Spark PostCommit
| | | PostCommit Python | [‘3.8’,‘3.9’,‘3.10’,‘3.11’] |
Run Python PostCommit (matrix_element)
| | | PostCommit Python Arm | [‘3.8’,‘3.9’,‘3.10’,‘3.11’] |
Run Python PostCommit Arm (matrix_element)
| | | PostCommit Python Examples Dataflow | N/A |
Run Python Examples_Dataflow
| | | PostCommit Python Examples Direct | [‘3.8’,‘3.9’,‘3.10’,‘3.11’] |
Run Python Examples_Direct (matrix_element)
| | | PostCommit Python Examples Flink | [‘3.8’,‘3.11’] |
Run Python Examples_Flink (matrix_element)
| | | PostCommit Python Examples Spark | [‘3.8’,‘3.11’] |
Run Python Examples_Spark (matrix_element)
| | | PostCommit Python MongoDBIO IT | N/A |
Run Python MongoDBIO_IT
| | | PostCommit Python Nexmark Direct | N/A |
Run Python Direct Runner Nexmark Tests
| | | PostCommit Python ValidatesContainer Dataflow | [‘3.8’,‘3.9’,‘3.10’,‘3.11’] |
Run Python Dataflow ValidatesContainer (matrix_element)
| | | PostCommit Python ValidatesContainer Dataflow With RC | [‘3.8’,‘3.9’,‘3.10’,‘3.11’] |
Run Python RC Dataflow ValidatesContainer (matrix_element)
| | | PostCommit Python ValidatesRunner Dataflow | [‘3.8’,‘3.11’] |
Run Python Dataflow ValidatesRunner (matrix_element)
| | | PostCommit Python ValidatesRunner Flink | [‘3.8’,‘3.11’] |
Run Python Flink ValidatesRunner (matrix_element)
| | | PostCommit Python ValidatesRunner Samza | [‘3.8’,‘3.11’] |
Run Python Samza ValidatesRunner (matrix_element)
| | | PostCommit Python ValidatesRunner Spark | [‘3.8’,‘3.9’,‘3.11’] |
Run Python Spark ValidatesRunner (matrix_element)
| | | PostCommit Python Xlang Gcp Dataflow | N/A |
Run Python_Xlang_Gcp_Dataflow PostCommit
| | | PostCommit Python Xlang Gcp Direct | N/A |
Run Python_Xlang_Gcp_Direct PostCommit
| | | PostCommit Python Xlang IO Dataflow | N/A |
Run Python_Xlang_IO_Dataflow PostCommit
| | | PostCommit Sickbay Python | [‘3.8’,‘3.9’,‘3.10’,‘3.11’] |
Run Python (matrix_element) PostCommit Sickbay
| | | PostCommit SQL | N/A |
Run SQL PostCommit
| | | PostCommit TransformService Direct | N/A |
Run TransformService_Direct PostCommit
| | PostCommit Website Publish | N/A | N/A |
| | PostCommit Website Test | N/A |
Run Full Website Test
| | | PostCommit XVR GoUsingJava Dataflow | N/A |
Run XVR_GoUsingJava_Dataflow PostCommit
| | | PostCommit XVR Direct | N/A |
Run XVR_Direct PostCommit
| | | PostCommit XVR Flink | N/A |
Run XVR_Flink PostCommit
| | | PostCommit XVR JavaUsingPython Dataflow | N/A |
Run XVR_JavaUsingPython_Dataflow PostCommit
| | | PostCommit XVR PythonUsingJava Dataflow | N/A |
Run XVR_PythonUsingJava_Dataflow PostCommit
| | | PostCommit XVR PythonUsingJavaSQL Dataflow | N/A |
Run XVR_PythonUsingJavaSQL_Dataflow PostCommit
| | | PostCommit XVR Samza | N/A |
Run XVR_Samza PostCommit
| | | PostCommit XVR Spark3 | N/A |
Run XVR_Spark3 PostCommit
| | | PreCommit Community Metrics | N/A |
Run CommunityMetrics PreCommit
| | | PreCommit Go | N/A |
Run Go PreCommit
| | | PreCommit Java | N/A |
Run Java PreCommit
| | | PreCommit Java Amazon Web Services IO Direct | N/A |
Run Java_Amazon-Web-Services_IO_Direct PreCommit
| | | PreCommit Java Amazon Web Services2 IO Direct | N/A |
Run Java_Amazon-Web-Services2_IO_Direct PreCommit
| | | PreCommit Java Amqp IO Direct | N/A |
Run Java_Amqp_IO_Direct PreCommit
| | | PreCommit Java Azure IO Direct | N/A |
Run Java_Azure_IO_Direct PreCommit
| | | PreCommit Java Cassandra IO Direct | N/A |
Run Java_Cassandra_IO_Direct PreCommit
| | | PreCommit Java Cdap IO Direct | N/A |
Run Java_Cdap_IO_Direct PreCommit
| | | PreCommit Java Clickhouse IO Direct | N/A |
Run Java_Clickhouse_IO_Direct PreCommit
| | | PreCommit Java Csv IO Direct | N/A |
Run Java_Csv_IO_Direct PreCommit
| | | PreCommit Java Debezium IO Direct | N/A |
Run Java_Debezium_IO_Direct PreCommit
| | | PreCommit Java ElasticSearch IO Direct | N/A |
Run Java_ElasticSearch_IO_Direct PreCommit
| | | PreCommit Java Examples Dataflow | N/A |
Run Java_Examples_Dataflow PreCommit
| | | PreCommit Java Flink Versions | N/A |
Run Java_Flink_Versions PreCommit
| | | PreCommit Java GCP IO Direct | N/A |
Run Java_GCP_IO_Direct PreCommit
| | | PreCommit Java Examples Dataflow Java11 | N/A |
Run Java_Examples_Dataflow_Java11 PreCommit
| | | PreCommit Java Examples Dataflow Java17 | N/A |
Run Java_Examples_Dataflow_Java17 PreCommit
| | | PreCommit Java File-schema-transform IO Direct | N/A |
Run Java_File-schema-transform_IO_Direct PreCommit
| | | PreCommit Java Hadoop IO Direct | N/A |
Run Java_Hadoop_IO_Direct PreCommit
| | | PreCommit Java HBase IO Direct | N/A |
Run Java_HBase_IO_Direct PreCommit
| | | PreCommit Java HCatalog IO Direct | N/A |
Run Java_HCatalog_IO_Direct PreCommit
| | | PreCommit Java Kafka IO Direct | N/A |
Run Java_Kafka_IO_Direct PreCommit
| | | PreCommit Java InfluxDb IO Direct | N/A |
Run Java_InfluxDb_IO_Direct PreCommit
| | | PreCommit Java IOs Direct | N/A |
Run Java_IOs_Direct PreCommit
| N/A | | PreCommit Java JDBC IO Direct | N/A |Run Java_JDBC_IO_Direct PreCommit
| | | PreCommit Java Jms IO Direct | N/A |
Run Java_Jms_IO_Direct PreCommit
| | | PreCommit Java Kinesis IO Direct | N/A |
Run Java_Kinesis_IO_Direct PreCommit
| | | PreCommit Java Kudu IO Direct | N/A |
Run Java_Kudu_IO_Direct PreCommit
| | | PreCommit Java MongoDb IO Direct | N/A |
Run Java_MongoDb_IO_Direct PreCommit
| | | PreCommit Java Mqtt IO Direct | N/A |
Run Java_Mqtt_IO_Direct PreCommit
| | | PreCommit Java Neo4j IO Direct | N/A |
Run Java_Neo4j_IO_Direct PreCommit
| | | PreCommit Java Parquet IO Direct | N/A |
Run Java_Parquet_IO_Direct PreCommit
| | | PreCommit Java Pulsar IO Direct | N/A |
Run Java_Pulsar_IO_Direct PreCommit
| | | PreCommit Java PVR Flink Batch | N/A |
Run Java_PVR_Flink_Batch PreCommit
| | | PreCommit Java PVR Flink Docker | N/A |
Run Java_PVR_Flink_Docker PreCommit
| | | PreCommit Java RabbitMq IO Direct | N/A |
Run Java_RabbitMq_IO_Direct PreCommit
| | | PreCommit Java Redis IO Direct | N/A |
Run Java_Redis_IO_Direct PreCommit
| | | PreCommit Java SingleStore IO Direct | N/A |
Run Java_SingleStore_IO_Direct PreCommit
| | | PreCommit Java Snowflake IO Direct | N/A |
Run Java_Snowflake_IO_Direct PreCommit
| | | PreCommit Java Solr IO Direct | N/A |
Run Java_Solr_IO_Direct PreCommit
| | | PreCommit Java Spark3 Versions | N/A |
Run Java_Spark3_Versions PreCommit
| | | PreCommit Java Splunk IO Direct | N/A |
Run Java_Splunk_IO_Direct PreCommit
| | | PreCommit Java Thrift IO Direct | N/A |
Run Java_Thrift_IO_Direct PreCommit
| | | PreCommit Java Tika IO Direct | N/A |
Run Java_Tika_IO_Direct PreCommit
| | | PreCommit Python | [‘3.8’,‘3.9’,‘3.10’,‘3.11’] |
Run Python PreCommit (matrix_element)
| | | PreCommit Python Coverage | N/A |
Run Python_Coverage PreCommit
| | | PreCommit Python Dataframes | [‘3.8’,‘3.9’,‘3.10’,‘3.11’] |
Run Python_Dataframes PreCommit (matrix_element)
| | | PreCommit Python Docker | [‘3.8’,‘3.9’,‘3.10’,‘3.11’] |
Run PythonDocker PreCommit (matrix_element)
| | | PreCommit Python Docs | N/A |
Run PythonDocs PreCommit
| | | PreCommit Python Examples | [‘3.8’,‘3.9’,‘3.10’,‘3.11’] |
Run Python_Examples PreCommit (matrix_element)
| | | PreCommit Python Formatter | N/A |
Run PythonFormatter PreCommit
| | | PreCommit Python Integration | [‘3.8’,‘3.11’] |
Run Python_Integration PreCommit (matrix_element)
| | | PreCommit Python Lint | N/A |
Run PythonLint PreCommit
| | | PreCommit Python PVR Flink | N/A |
Run Python_PVR_Flink PreCommit
| | | PreCommit Python Runners | [‘3.8’,‘3.9’,‘3.10’,‘3.11’] |
Run Python_Runners PreCommit (matrix_element)
| | | PreCommit Python Transforms | [‘3.8’,‘3.9’,‘3.10’,‘3.11’] |
Run Python_Transforms PreCommit (matrix_element)
| | | PreCommit RAT | N/A |
Run RAT PreCommit
| | | PreCommit Spotless | N/A |
Run Spotless PreCommit
| | | PreCommit SQL | N/A |
Run SQL PreCommit
| | | PreCommit SQL Java11 | N/A |
Run SQL_Java11 PreCommit
| | | PreCommit SQL Java17 | N/A |
Run SQL_Java17 PreCommit
| | | PreCommit Typescript | N/A |
Run Typescript PreCommit
| | | PreCommit Website | N/A |
Run Website PreCommit
| | | PreCommit Website Stage GCS | N/A |
Run Website_Stage_GCS PreCommit
| | | PreCommit Whitespace | N/A |
Run Whitespace PreCommit
| | | Python Validates Container Dataflow ARM | [‘3.8’,‘3.9’,‘3.10’,‘3.11’] |
Run Python ValidatesContainer Dataflow ARM (matrix_element)
| | | PreCommit GoPortable | N/A |
Run GoPortable PreCommit
| | | PreCommit Kotlin Examples | N/A |
Run Kotlin_Examples PreCommit
| | | PreCommit Portable Python | [‘3.8’,‘3.11’] |
Run Portable_Python PreCommit
| | | Cancel Stale Dataflow Jobs | N/A |
Run Cancel Stale Dataflow Jobs
| | | Clean Up GCP Resources | N/A |
Run Clean GCP Resources
| | | Clean Up Prebuilt SDK Images | N/A |
Run Clean Prebuilt Images
| |