Global workflow to rule them all #145
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |