Categorygithub.com/kolah/github-batch-updater
module
0.0.0-20241209113937-84373d0f8e38
Repository: https://github.com/kolah/github-batch-updater.git
Documentation: pkg.go.dev

# README

github batch updater

This application is a rough tool to help with mundane tasks like updating same GH workflow in multiple repos.

It is able to fetch files from multiple repositories, replace some strings and create a PR with the changes. You can also use yq expressions to modify the yaml files.

Installation

go install github.com/kolah/github-batch-updater/cmd/gbu@latest

Usage

In order to interact with the GitHub API, you need to set the GITHUB_PERSONAL_ACCESS_TOKEN env variable with a personal access token. The token should have the repo scope. If you want to interact with GitHub workflows, you need to add the workflow scope.

gbu run script.yml

Example script

create_pr: true
target_branch: batch-test
# source branch is optional, 
# if not provided, it will be the default branch of the repository
# source_branch: main
repositories:
  - name: github-batch-updater
    owner: kolah
  - name: repo2
    owner: kolah
  - name: repo3
    owner: kolah    
files:
  .github/workflows/build_image.yaml:
    - replace:
        replaces:
          - match: "uses: examplecom/pipelines/.github/workflows/[email protected]"
            replace: "uses: examplecom/pipelines/.github/workflows/[email protected]"
    - yq:
        expressions:
          - 'del(.jobs.success)'
          - 'del(.jobs.error)'
          - 'del(.jobs.* | select(.uses == "owner/repo/.github/workflows/some_workflow.yaml*"))'
          - ".run-name = \"${{ inputs.revision == 'HEAD' && format('{0}: revision {1}', inputs.environment_name, github.sha) || format('{0}: revision {1}', inputs.environment_name, inputs.revision) }}\""
pull_request:
  title: "Automatic PR batch update"
  body: "This PR updates the build image to the latest version."
  reviewers:
    - "kolah"
  team_reviewers:
    - "my-team"

# Packages

No description provided by the author