publish-repo
Publish distribution files to a separate repository
A CLI tool that pushes dist
to a separate repository. Intended to be used as
part of semantic-release during a tagged build on TravisCI.
Example package.json
:
Example .travis.yml
:
language: node_jsnode_js: - '0.12'after_success: - npm run semantic-release - npm run publish-repo
Usage
At minimum, publish-repo expects:
dist
to exist before it is ran- To be ran within TravisCI
- The environment variable
CI_USER_TOKEN
to be set
Then add a publishRepo
block to package.json
:
"publishRepo":
Each property can be overridden with a command line flag. See options.
With semantic-release
Want semantic-release to build and push dist? Here's one approach:
- Initialise semantic-release with your repo as normal
- Generate a new GitHub access token (only repo/public_repo scope is required)
- Run
travis env set CI_USER_TOKEN [token]
- Add a npm build script that's suitable for your project
- Add
publish-repo
as a dev dependency - Add it as an npm script
- Call
npm run publish-repo
in Travis'safter_script
block
That's it!
See tlvince/tlvince-semantic-release-publish-repo as a working example.
Note: some versions of semantic-release-cli add a branches.except
pattern
to .travis.yml
. This must be removed as publish-repo is ran during the tagged
build.
Pro tip: create a machine/bot account on GitHub (generate a access token
for this account) and add it as a collaborator (with push access) to your repo.
Don't forget to pass --author-name
and --author-email
.
Options
--repository-url
The repository to push artefacts to. Must already exist. Defaults to
publishRepo.repository.url
.
--artefacts
A comma-separated list of files to commit/publish. Defaults to
publishRepo.artefacts
.
--author-name
The commit's author name (git config user.name
). Defaults to
publishRepo.author
. Falls back to .package.json
author
.
--author-email
The commit's author email (git config user.email
). Defaults to
publishRepo.author
. Falls back to .package.json
author
.
See also
Author
© 2015 Tom Vincent https://tlvince.com/contact
License
Released under the MIT License.