Skip to content

Global workflow to rule them all #146

Global workflow to rule them all

Global workflow to rule them all #146

name: Global workflow to rule them all
on:
push:
branches: [master]
paths:
- ".github/workflows/**"
- "CODE_OF_CONDUCT.md"
- "CONTRIBUTING.md"
workflow_dispatch:
inputs:
repo_name:
description: |
You can specify the repository's name where workflows should be pushed manually, as long as workflow settings do not ignore the repository.
If you do not specify the exact repository name, the workflow will try to replicate all missing changes to all repositories.
required: false
jobs:
replicate_coc:
if: startsWith(github.repository, 'asyncapi/')
name: Replicate Code of Conduct in all repositories
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Replicating file
uses: derberg/manage-files-in-multiple-repositories@beecbe897cf5ed7f3de5a791a3f2d70102fe7c25
with:
github_token: ${{ secrets.GH_TOKEN }}
patterns_to_include: CODE_OF_CONDUCT.md
repos_to_ignore: shape-up-process,glee-hello-world,saunter
committer_username: asyncapi-bot
committer_email: [email protected]
commit_message: "ci: update of files from global .github repo"
bot_branch_name: bot/update-files-from-global-repo
replicate_contributing:
if: startsWith(github.repository, 'asyncapi/')
name: Replicate CONTRIBUTING guide to all repositories
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Replicating file
uses: derberg/manage-files-in-multiple-repositories@beecbe897cf5ed7f3de5a791a3f2d70102fe7c25
with:
github_token: ${{ secrets.GH_TOKEN }}
patterns_to_include: CONTRIBUTING.md
repos_to_ignore: shape-up-process,glee-hello-world,spec,community,php-template,tck,modelina,dotnet-nats-template,ts-nats-template,extensions-catalog,saunter,website
committer_username: asyncapi-bot
committer_email: [email protected]
commit_message: "ci: update of files from global .github repo"
bot_branch_name: bot/update-files-from-global-repo
replicate_go_workflows:
if: startsWith(github.repository, 'asyncapi/')
name: Replicate workflows for Go projects
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Replicating file
uses: derberg/manage-files-in-multiple-repositories@beecbe897cf5ed7f3de5a791a3f2d70102fe7c25
with:
github_token: ${{ secrets.GH_TOKEN }}
patterns_to_include: .github/workflows/if-go-pr-testing.yml
topics_to_include: golang
committer_username: asyncapi-bot
committer_email: [email protected]
commit_message: "ci: update of files from global .github repo"
bot_branch_name: bot/update-files-from-global-repo
replicate_nodejs_workflows:
if: startsWith(github.repository, 'asyncapi/')
name: Replicate workflows for Nodejs projects
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Replicating file
uses: derberg/manage-files-in-multiple-repositories@beecbe897cf5ed7f3de5a791a3f2d70102fe7c25
with:
github_token: ${{ secrets.GH_TOKEN }}
patterns_to_include: .github/workflows/if-nodejs-pr-testing.yml
topics_to_include: nodejs
committer_username: asyncapi-bot
committer_email: [email protected]
commit_message: "ci: update of files from global .github repo"
bot_branch_name: bot/update-files-from-global-repo
replicate_nodejs_release_workflows:
if: startsWith(github.repository, 'asyncapi/')
name: Replicate release workflows for Nodejs projects
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Replicating file
uses: derberg/manage-files-in-multiple-repositories@beecbe897cf5ed7f3de5a791a3f2d70102fe7c25
with:
github_token: ${{ secrets.GH_TOKEN }}
patterns_to_include: .github/workflows/if-nodejs-release.yml,.github/workflows/if-nodejs-version-bump.yml,.github/workflows/bump.yml
topics_to_include: get-global-node-release-workflows
committer_username: asyncapi-bot
committer_email: [email protected]
commit_message: "ci: update of files from global .github repo"
bot_branch_name: bot/update-files-from-global-repo
# release config file must be managed separately
# some projects may still use GH Action workflow for releases, but with different semantic-release config
replicate_semantic_release_config:
if: startsWith(github.repository, 'asyncapi/')
name: Replicate .releaserc file
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Replicating file
uses: derberg/manage-files-in-multiple-repositories@beecbe897cf5ed7f3de5a791a3f2d70102fe7c25
with:
github_token: ${{ secrets.GH_TOKEN }}
patterns_to_include: .github/workflows/.releaserc
topics_to_include: get-global-releaserc
committer_username: asyncapi-bot
committer_email: [email protected]
commit_message: "ci: update of files from global .github repo"
destination: ./
bot_branch_name: bot/update-files-from-global-repo
replicate_generic_workflows:
if: startsWith(github.repository, 'asyncapi/')
name: Replicate generic workflows and scripts needed for any project
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Replicating file
uses: derberg/manage-files-in-multiple-repositories@beecbe897cf5ed7f3de5a791a3f2d70102fe7c25
with:
github_token: ${{ secrets.GH_TOKEN }}
patterns_to_include: .github/workflows/scripts,.github/workflows/automerge-for-humans-add-ready-to-merge-or-do-not-merge-label.yml,.github/workflows/add-good-first-issue-labels.yml,.github/workflows/automerge-for-humans-merging.yml,.github/workflows/automerge-for-humans-remove-ready-to-merge-label-on-edit.yml,.github/workflows/automerge-orphans.yml,.github/workflows/automerge.yml,.github/workflows/autoupdate.yml,.github/workflows/help-command.yml,.github/workflows/issues-prs-notifications.yml,.github/workflows/lint-pr-title.yml,.github/workflows/notify-tsc-members-mention.yml,.github/workflows/stale-issues-prs.yml,.github/workflows/welcome-first-time-contrib.yml,.github/workflows/release-announcements.yml,.github/workflows/bounty-program-commands.yml,.github/workflows/please-take-a-look-command.yml,.github/workflows/update-pr.yml
committer_username: asyncapi-bot
committer_email: [email protected]
commit_message: "ci: update of files from global .github repo"
repos_to_ignore: shape-up-process,glee-hello-world,saunter
bot_branch_name: bot/update-files-from-global-repo
replicate_docker_workflows:
if: startsWith(github.repository, 'asyncapi/')
name: Replicate Docker workflows needed for any project
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Replicating file
uses: derberg/manage-files-in-multiple-repositories@beecbe897cf5ed7f3de5a791a3f2d70102fe7c25
with:
github_token: ${{ secrets.GH_TOKEN }}
topics_to_include: docker
patterns_to_include: .github/workflows/if-docker-pr-testing.yml
committer_username: asyncapi-bot
committer_email: [email protected]
commit_message: "ci: update of files from global .github repo"
bot_branch_name: bot/update-files-from-global-repo
replicate_validate_workflow_schema:
if: startsWith(github.repository, 'asyncapi/')
name: Replicate workflow schema validation to repositories
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Replicating file
uses: derberg/manage-files-in-multiple-repositories@beecbe897cf5ed7f3de5a791a3f2d70102fe7c25
with:
github_token: ${{ secrets.GH_TOKEN }}
patterns_to_include: .github/workflows/validate-workflow-schema.yml
topics_to_include: get-workflows-validation
committer_username: asyncapi-bot
committer_email: [email protected]
commit_message: "ci: update of files from global .github repo"
bot_branch_name: bot/update-files-from-global-repo
replicate_docs_workflow:
if: startsWith(github.repository, 'asyncapi/')
name: Replicate update-docs workflow to repositories
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Replicating file
uses: derberg/manage-files-in-multiple-repositories@beecbe897cf5ed7f3de5a791a3f2d70102fe7c25
with:
github_token: ${{ secrets.GH_TOKEN }}
patterns_to_include: .github/workflows/update-docs-on-docs-commits.yml
topics_to_include: get-global-docs-autoupdate
committer_username: asyncapi-bot
committer_email: [email protected]
commit_message: "ci: update of files from global .github repo"
bot_branch_name: bot/update-files-from-global-repo/${{ github.job }}
replicate_prettierignore_file:
if: startsWith(github.repository, 'asyncapi/')
name: Replicate .prettierignore file in the required repositories
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Replicating file
uses: derberg/manage-files-in-multiple-repositories@beecbe897cf5ed7f3de5a791a3f2d70102fe7c25
with:
github_token: ${{ secrets.GH_TOKEN }}
patterns_to_include: .prettierignore
topics_to_include: get-global-prettierignore
committer_username: asyncapi-bot
committer_email: [email protected]
commit_message: "ci: update .prettierignore from global .github repo"
bot_branch_name: bot/update-files-from-global-repo
destination: ./
# This setup is separate from the generic workflow setup because this workflow is mandatory.
# Maintainers cannot opt out for any reason except technical ones.
replicate_update_maintainers_workflow:
if: startsWith(github.repository, 'asyncapi/')
name: Replicate update-maintainers-trigger.yml workflow in the required repositories
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Replicating file
uses: derberg/manage-files-in-multiple-repositories@beecbe897cf5ed7f3de5a791a3f2d70102fe7c25
with:
github_token: ${{ secrets.GH_TOKEN }}
patterns_to_include: .github/workflows/update-maintainers-trigger.yml
repos_to_ignore: community,shape-up-process # community repo is ignored as it has its own version of this workflow, version that is triggered by this workflow
committer_username: asyncapi-bot
committer_email: [email protected]
commit_message: "ci: update update-maintainers-trigger.yml workflow from global .github repo"
bot_branch_name: bot/update-files-from-global-repo