π GitHub action to sync files across repos in GitHub
gh_fsync is a simple, configurable, and blazing fast way to sync files in your repository with files from another repository.
First create a file in one of the following locations inside of your repository:
/fsync.yml
/fsync.yaml
/.fsync.yml
/.fsync.yaml
/.github/fsync.yml
/.github/fsync.yml
Now that you have your file lets go over the syntax.
Replace certain text for all source files listed under the files section. Below is an example:
replace:
- before: project_name
after: gh_fsync
List all of the files you want to sync. path:
is the file path in your repo and source:
is the URL on GitHub for the file. Below is an example:
files:
- path: CONTRIBUTING.md
source: https://github.com/gleich/go_template/blob/master/CONTRIBUTING.md
You can even replace values specific to a file. Below is an example:
files:
- path: CONTRIBUTING.md
source: https://github.com/gleich/go_template/blob/master/CONTRIBUTING.md
replace:
- before: project_name
after: gh_fsync2
A file specific replace will override any global replace with the same before
. So in the case shown below the replace of project_name
for the CONTRIBUTING.md
file will override the global replace defined before. If you would like to completely ignore the global replace for that file add ignore_global_replace: true
to the file. This is optional and an example is shown down in the examples section.
replace:
- before: project_name
after: gh_fsync
files:
- path: CONTRIBUTING.md
source: https://github.com/gleich/go_template/blob/master/CONTRIBUTING.md
replace:
- before: project_name
after: gh_fsync2
Define the commit message to use when updating the files. The default commit message is Update via sync
. Below is an example
commit_message: π Update file via sync
commit_message: π Update file via sync
replace:
- before: project_name
after: gh_fsync
files:
- path: CONTRIBUTING.md
source: https://github.com/gleich/go_template/blob/master/CONTRIBUTING.md
replace:
- before: project_name
after: gh_fsync2
- path: LICENSE.md
source: https://github.com/gleich/go_template/blob/master/LICENSE.md
ignore_global_replace: true
replace:
- before: author_name
after: Matthew Gleich
Use the following for the GitHub action.
name: gh_fsync
on:
push:
branches:
- master
schedule:
- cron: '*/30 * * * *' # Runs every 30 minutes
jobs:
file_sync:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v2
- name: gh_fsync
uses: gleich/gh_fsync@master
If you want to sync files from the .github
folder you need to to create a personal access token with the read
and workflows
permissions. Then set a secret for the repo with the value being the personal access token and the name being PERSONAL_ACCESS_TOKEN
. Finally change your action file to the following:
name: fsync
on:
push:
branches:
- master
schedule:
- cron: '*/30 * * * *' # Runs every 30 minutes
jobs:
file_sync:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v2
with:
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
- name: gh_fsync
uses: gleich/gh_fsync@master
Before contributing please read the CONTRIBUTING.md file