GitHub Action to push subdirectories to separate repositories.
When building Gatsby Themes with a monorepo it's common to need to
be able to develop your corresponding starters in the same repo as
well. This allows you to automatically push your starters to their
own repo so they can be used with gatsby new
.
name: Publish Starters
on: push
jobs:
master:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: publish:starters
uses: johno/actions-push-subdirectories@master
env:
API_TOKEN_GITHUB: ${{ secrets.API_TOKEN_GITHUB }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
args: examples johno
The GITHUB_TOKEN
will automatically be defined, the API_TOKEN_GITHUB
needs to be set in the Secrets
section of your repository options. You can retrieve the API_TOKEN_GITHUB
here (set the repo
permission).
The action accepts four arguments - the first two are mandatory, the third and fourth are optional.
- Name of the folder that contains your examples. Even if you only have one example currently it also should be placed inside its own folder (e.g.
examples/foo-bar
) as the script will read all folders inside the examples. - GitHub username
- Repository name of the respective example. By default the
name
key from the example'spackage.json
is used, e.g. thename
of your example isgatsby-starter-foobar
, then the script will try to push togithub.com/USERNAME/gatsby-starter-foobar
. - The branch name that the changes should be pushed to. Defaults to
main
.
You could define the key starter-name
in your example's package.json
, like:
{
"starter-name": "gatsby-starter-custom-foobar",
}
Use the action with the third argument now:
args: examples johno starter-name
Using the action to push to master
branch:
args: examples johno starter-name master
This code is adapted and modified from Gatsby core.