Sobes.tech
Middle

What is your experience in setting up triggers for branch builds?

sobes.tech AI

Answer from AI

Successfully configured triggers for automatic project builds in CI/CD pipelines upon changes in various repository branches. Used Jenkins, GitLab CI, GitHub Actions, and Concourse CI for this.

Main approaches:

  • Push triggers: Initiate a build on every push to a specified branch. Often used for main, master, or develop branches for continuous integration.
  • Pull/Merge Request triggers: Activate a build when creating or updating a pull/merge request for the source branch into the target branch. Critical for code review before merging.
  • Tag triggers: Launch a build when creating or updating a tag. Useful for creating release artifacts.
  • Triggering by comment: In some systems, it is possible to start a pipeline by leaving a comment in a pull request (e.g., /ci build).

Configuration examples:

Jenkins (declarative pipeline)

// Jenkinsfile
pipeline {
    agent any
    triggers {
        githubPush() // Trigger on push to GitHub
        pullRequest() // Trigger on pull request
    }
    stages {
        stage('Build') {
            steps {
                echo 'Building the project...'
                // Build commands
            }
        }
    }
}

GitLab CI (.gitlab-ci.yml)

# .gitlab-ci.yml
stages:
  - build

build_job:
  stage: build
  script:
    - echo "Building on branch $CI_COMMIT_BRANCH"
    - # Build commands
  only: # Trigger only for specific branches or events
    - main
    - merge_requests
    - tags

GitHub Actions (.github/workflows/build.yml)

# .github/workflows/build.yml
name: Build

on:
  push: # Trigger on push
    branches:
      - main
      - develop
  pull_request: # Trigger on pull request
    branches:
      - main
      - develop
  workflow_dispatch: {} # Allows manual trigger from UI

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - name: Build project
        run: |
          echo "Building the project..."
          # Build commands

Important points when setting up:

  • Branch filtering: Specify particular branches or branch patterns to trigger the build.
  • Context consideration: Define which tasks should run for different trigger types (e.g., only linting and testing for PR, full cycle including deployment for main branch).
  • Webhooks: Properly configure webhooks between version control systems (GitLab, GitHub, Bitbucket) and CI servers to receive change notifications.
  • Access rights: Ensure the CI system has necessary permissions to interact with the repository.

Successful experience includes standard push/PR triggers and more complex scenarios, such as triggering builds only when specific files are changed within the repository (path filters). This helps optimize CI resource usage by avoiding unnecessary builds when only documentation or minor files are modified.