Skip to content
cccskills
FreePublished on GitHub

ci-cd

Helps investigate and modify Apache Beam's automated build and test workflows in GitHub Actions. Explains workflow types, failure logs, targeted reruns, local reproduction, and the cloud credentials needed for workflows that access GCP.

OriginalShow the original description

Guides understanding and working with Apache Beam's CI/CD system using GitHub Actions. Use when debugging CI failures, understanding test workflows, or modifying CI configuration.

See how to install

Good for

  • Investigating failed checks on a pull request
  • Rerunning a specific test workflow
  • Reproducing CI test commands locally
  • Reviewing GCP credentials and workflow settings

Files included (1)

  • SKILL.md5.3 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

CI/CD in Apache Beam

Overview

Apache Beam uses GitHub Actions for CI/CD. Workflows are located in .github/workflows/.

Workflow Types

PreCommit Workflows

  • Run on PRs and merges
  • Validate code changes before merge
  • Naming: beam_PreCommit_*.yml

PostCommit Workflows

  • Run after merge and on schedule
  • More comprehensive testing
  • Naming: beam_PostCommit_*.yml

Scheduled Workflows

  • Run nightly on master
  • Check for external dependency impacts
  • Tag master with nightly-master

Key Workflows

PreCommit

WorkflowDescription
beam_PreCommit_Java.ymlJava build and tests
beam_PreCommit_Python.ymlPython tests
beam_PreCommit_Go.ymlGo tests
beam_PreCommit_RAT.ymlLicense header checks
beam_PreCommit_Spotless.ymlCode formatting

PostCommit - Java

WorkflowDescription
beam_PostCommit_Java.ymlFull Java test suite
beam_PostCommit_Java_ValidatesRunner_*.ymlRunner validation tests
beam_PostCommit_Java_Examples_*.ymlExample pipeline tests

PostCommit - Python

WorkflowDescription
beam_PostCommit_Python.ymlFull Python test suite
beam_PostCommit_Python_ValidatesRunner_*.ymlRunner validation
beam_PostCommit_Python_Examples_*.ymlExamples

Load & Performance Tests

WorkflowDescription
beam_LoadTests_*.ymlLoad testing
beam_PerformanceTests_*.ymlI/O performance

Triggering Tests

Automatic

  • PRs trigger PreCommit tests
  • Merges trigger PostCommit tests

Triggering Specific Workflows

Use trigger files to run specific workflows.

Workflow Dispatch

Most workflows support manual triggering via GitHub UI.

Understanding Test Results

Finding Logs

  1. Go to PR → Checks tab
  2. Click on failed workflow
  3. Expand failed job
  4. View step logs

Common Failure Patterns

Flaky Tests

  • Random failures unrelated to change
  • Solution: Use trigger files to re-run the specific workflow.

Timeout

  • Increase timeout in workflow if justified
  • Or optimize test

Resource Exhaustion

  • GCP quota issues
  • Check project settings

GCP Credentials

Workflows requiring GCP access use these secrets:

  • GCP_PROJECT_ID - Project ID (e.g., apache-beam-testing)
  • GCP_REGION - Region (e.g., us-central1)
  • GCP_TESTING_BUCKET - Temp storage bucket
  • GCP_PYTHON_WHEELS_BUCKET - Python wheels bucket
  • GCP_SA_EMAIL - Service account email
  • GCP_SA_KEY - Base64-encoded service account key

Required IAM roles:

  • Storage Admin
  • Dataflow Admin
  • Artifact Registry Writer
  • BigQuery Data Editor
  • Service Account User

Self-hosted vs GitHub-hosted Runners

Self-hosted (majority of workflows)

  • Pre-configured with dependencies
  • GCP credentials pre-configured
  • Naming: beam_*.yml

GitHub-hosted

  • Used for cross-platform testing (Linux, macOS, Windows)
  • May need explicit credential setup

Workflow Structure

name: Workflow Name
on:
  push:
    branches: [master]
  pull_request:
    branches: [master]
  schedule:
    - cron: '0 0 * * *'
  workflow_dispatch:

jobs:
  build:
    runs-on: [self-hosted, ...]
    steps:
      - uses: actions/checkout@v4
      - name: Run Gradle
        run: ./gradlew :task:name

Local Debugging

Run Same Commands as CI

Check workflow file's run commands:

./gradlew :sdks:java:core:test
./gradlew :sdks:python:test

Common Issues

  • Clean gradle cache: rm -rf ~/.gradle .gradle
  • Remove build directory: rm -rf build
  • Check Java version matches CI

Snapshot Builds

Locations

Release Workflows

WorkflowPurpose
cut_release_branch.ymlCreate release branch
build_release_candidate.ymlBuild RC
finalize_release.ymlFinalize release
publish_github_release_notes.ymlPublish notes

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Guides adding metadata, extra information attached to data elements, to Apache Beam's WindowedValue. Maps the changes needed across serialization, storage, processing, and runner interfaces so new fields remain available during pipeline execution.

  • Adding trace context or drain flags to WindowedValue
  • Checking metadata preservation through Windmill storage
  • Reviewing propagation through grouping and timers
apache/beam8.7KUpdated Oct 18, 2026

beam-concepts

FreeSummary

Learn Apache Beam's core concepts through Java and Python examples. Understand distributed datasets, processing steps, pipeline execution, and time windows, with guidance on aggregation, late data, error handling, and sharing processing steps across languages.

  • Learn how Pipeline, PCollection, and PTransform fit together
  • Understand grouping, aggregation, merging, and splitting
  • Study time windows, output timing, and late data
apache/beam8.7KUpdated Oct 18, 2026

contributing

FreeSummary

Navigate Apache Beam contributions from finding an issue to submitting a pull request, a proposed code change, and responding to reviews. Covers environment setup, tests, formatting, licensing requirements, and closer evaluation of changes to core components.

  • Prepare a first Apache Beam contribution
  • Organize a pull request and its related issue
  • Check tests and formatting before submission
apache/beam8.7KUpdated Oct 18, 2026

Build Apache Beam connectors that read and write external data. This guide covers Java implementation, schema support for structured records, access from Python and Go, Managed API integration, and testing.

  • Add a connector for an external data system
  • Make a Java connector available to Python and Go
  • Integrate a connector with Beam YAML and the Managed API
apache/beam8.7KUpdated Oct 18, 2026

gradle-build

FreeSummary

Build and test Apache Beam with Gradle, the system that manages its project tasks. Find relevant configuration files, inspect library dependencies, run formatting checks, publish locally, and investigate build failures.

  • Build or test a specific Apache Beam module
  • Inspect library dependencies and version conflicts
  • Run formatting and pre-commit checks
apache/beam8.7KUpdated Oct 18, 2026

io-connectors

FreeSummary

Work with Apache Beam I/O connectors, components that read and write external data. Get guidance on connector usage, unit and integration tests, troubleshooting data connections, and the basic structure of new connectors.

  • Add BigQuery or Kafka reads and writes to a pipeline
  • Run unit and integration tests for connectors
  • Investigate data source or destination issues
apache/beam8.7KUpdated Oct 18, 2026

See all skills by apache

Report a problem with this skill