Skip to content

Global replicator

Global replicator #189

---
# This workflow does not need to be replicated to other repositories. This workflow will update the files in other org
# repos. Currently, this workflow will only run on a workflow dispatch event. Once a solution is made to use the same
# PR branch for updates we can enable updating on push events into `master` branch.
name: Global replicator
on:
push:
branches: [master] # only files that were changed in the commit will be replicated
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:
runs-on: ubuntu-latest
strategy:
fail-fast: false # false to run all, true to fail entire job if any fail
max-parallel: 1 # jobs fail submitting PRs if run too fast
matrix:
include:
- job_name: 'replicate workflows'
patterns_to_ignore: ''
patterns_to_include: >-
.github/dependabot.yml,
.github/label-actions.yml,
.github/pr_release_template.md,
.github/workflows/auto-create-pr.yml,
.github/workflows/automerge.yml,
.github/workflows/autoupdate.yml,
.github/workflows/autoupdate-labeler.yml,
.github/workflows/ci-qodana.yml,
.github/workflows/codeql.yml,
.github/workflows/dispatcher.yml,
.github/workflows/issues.yml,
.github/workflows/issues-stale.yml,
.github/workflows/pull-requests.yml,
.github/workflows/yaml-lint.yml
commit_message: 'ci: update global workflows'
repos_to_ignore: ''
topics_to_include: ''
exclude_private: false
exclude_forked: true
branches: '^nightly$'
destination: ''
- job_name: 'replicate python'
patterns_to_ignore: ''
patterns_to_include: >-
.flake8,
.github/workflows/python-flake8.yml
commit_message: 'ci: update global python'
repos_to_ignore: ''
topics_to_include: 'python'
exclude_private: false
exclude_forked: true
branches: '^nightly$'
destination: ''
- job_name: 'replicate docker'
patterns_to_ignore: ''
patterns_to_include: >-
.github/workflows/ci-docker.yml
commit_message: 'ci: update global docker'
repos_to_ignore: ''
topics_to_include: 'docker'
exclude_private: false
exclude_forked: true
branches: '^nightly$'
destination: ''
- job_name: 'replicate cpp'
patterns_to_ignore: ''
patterns_to_include: >-
.clang-format,
.github/workflows/cpp-lint.yml
commit_message: 'ci: update global cpp'
repos_to_ignore: ''
topics_to_include: 'cpp'
exclude_private: false
exclude_forked: true
branches: '^nightly$'
destination: ''
- job_name: 'custom issues'
patterns_to_ignore: ''
patterns_to_include: >-
.github/ISSUE_TEMPLATE/config.yml
commit_message: 'ci: update issue templates'
repos_to_ignore: ''
topics_to_include: 'replicator-custom-issues'
exclude_private: false
exclude_forked: true
branches: '^nightly$'
destination: ''
- job_name: 'release notifier'
patterns_to_ignore: ''
patterns_to_include: >-
.github/workflows/release-notifier.yml
commit_message: 'ci: update release notifier'
repos_to_ignore: ''
topics_to_include: 'replicator-release-notifications'
exclude_private: false
exclude_forked: true
branches: '^nightly$'
destination: ''
name: ${{ matrix.job_name }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Replicating files
uses: derberg/manage-files-in-multiple-repositories@v2
with:
github_token: ${{ secrets.GH_BOT_TOKEN }}
committer_username: ${{ secrets.GH_BOT_NAME }}
committer_email: ${{ secrets.GH_BOT_EMAIL }}
patterns_to_ignore: ${{ matrix.patterns_to_ignore }}
patterns_to_include: ${{ matrix.patterns_to_include }}
commit_message: ${{ matrix.commit_message }}
repos_to_ignore: ${{ matrix.repos_to_ignore }}
topics_to_include: ${{ matrix.topics_to_include }}
exclude_private: ${{ matrix.exclude_private }}
exclude_forked: ${{ matrix.exclude_forked }}
branches: ${{ matrix.branches }}
destination: ${{ matrix.destination }}