项目作者: semantic-release

项目描述 :
:cl::round_pushpin: Setup automated semver compliant package publishing
高级语言: JavaScript
项目地址: git://github.com/semantic-release/cli.git
创建时间: 2015-07-22T11:14:55Z
项目社区:https://github.com/semantic-release/cli

开源协议:MIT License

下载


semantic-release-cli

Build Status

Install

  1. npm install -g semantic-release-cli
  2. cd your-module
  3. semantic-release-cli setup

dialogue

Options

  1. Usage:
  2. semantic-release-cli setup [options]
  3. Options:
  4. -h --help Show this screen.
  5. -v --version Show version.
  6. --[no-]keychain Use keychain to get passwords [default: true].
  7. --ask-for-passwords Ask for the passwords even if passwords are stored [default: false].
  8. --tag=<String> npm tag to install [default: 'latest'].
  9. --gh-token=<String> GitHub auth token
  10. --npm-token=<String> npm auth token
  11. --circle-token=<String> CircleCI auth token
  12. --npm-username=<String> npm username
  13. Aliases:
  14. init setup

What it Does

semantic-release-cli performs the following steps:

  1. Asks for the information it needs. You will need to provide it with:
    • Whether your GitHub repository is public or private
    • Which npm registry you want to use (Default: https://registry.npmjs.org/)
    • Your npm username (unless passwords were previously saved to keychain)
    • Your npm email
    • Your npm password
    • Which continuous integration system you want to use. (Options: Travis CI / Pro / Enterprise / CircleCI, or Other)
    • [Travis only] Whether you want to test a single node.js version (e.g. - 8) or multiple node.js versions (e.g. - 4, 6, 8, etc.)
  2. npm Add User
    • Runs npm adduser with the npm information provided to generate a .npmrc
    • Parses the npm token from the .npmrc for future use
  3. Uses user supplied GitHub Personal Access Token (with the following permissions: repo, read:org, repo:status, repo_deployment, user:email, write:repo_hook)
    • Sets GitHub Personal Access Token in user choosen CI/CD environment variable
  4. Update your package.json
    • Set version field to 0.0.0-development (semantic-release will set the version for you automatically)
    • Add a semantic-release script: "semantic-release": "semantic-release"
    • Add semantic-release as a devDependency
    • Add or overwrite the repository field

Travis CI

Versions 4.1.0+

semantic-release-cli does not perform any additional Travis-specific steps, but the cli output will provide a link for assistance integrating Travis and semantic-release-cli.

Prior to version 4.1.0

semantic-release-cli performs the following additional steps:

  1. Overwrite your .travis.yml file
    • after_success: npm install -g travis-deploy-once and travis-deploy-once "npm run semantic-release": run semantic-release exactly once after all builds pass
    • Set other sane defaults: cache: directories: ~/.npm, notifications: email: false
  2. Login to Travis CI to configure the package. This step requires your module to define a valid, case-sensitive
    repository field.
    • Enable builds of your repo
    • Add GH_TOKEN and NPM_TOKEN environment variables in the settings

CircleCI

For CircleCI, semantic-release-cli performs the following additional steps:

  1. Create minimal config.yml file (if CircleCI was selected)
    1. version: 2
    2. jobs:
    3. build:
    4. docker:
    5. - image: 'circleci/node:latest'
    6. steps:
    7. - checkout
    8. - run:
    9. name: install
    10. command: npm install
    11. - run:
    12. name: release
    13. command: npm run semantic-release || true
  2. Login to CircleCI to configure the package
    • Enable builds of your repo
    • Add GH_TOKEN and NPM_TOKEN environment variables in the settings

Github Actions

For Github Actions, semantic-release-cli performs the following additional step:

  • Login to Github to configure the package
  • Add NPM_TOKEN environment variables as a secret in the settings

For now you will have to manually modify your existing workflow to add a release step. Here is an example of a small complete workflow .github/workflows/workflow.yml:

  1. name: CI
  2. on: push
  3. jobs:
  4. test:
  5. runs-on: ubuntu-16.04
  6. steps:
  7. - uses: actions/checkout@v2
  8. - uses: actions/setup-node@v1
  9. with:
  10. node-version: '12'
  11. - run: npm ci
  12. - run: npm test
  13. - name: Release
  14. env:
  15. NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
  16. run: npx semantic-release

Other CI Servers

By default, semantic-release-cli supports the popular Travis CI and CircleCI servers. If you select Other as your server during configuration, semantic-release-cli will print out the environment variables you need to set on your CI server. You will be responsible for adding these environment variables as well as configuring your CI server to run npm run semantic-release after all the builds pass.

Note that your CI server will also need to set the environment variable CI=true so that semantic-release will not perform a dry run. (Most CI services do this by default.) See the semantic-release documentation for more details.

Setting defaults

This package reads your npm username from your global .npmrc. In order to autosuggest a username in the future, make sure to set your username there: npm config set username <username>.

Contribute

Please contribute! We welcome issues and pull requests.

When committing, please conform to the semantic-release commit standards.

License

MIT License
2015 © Christoph Witzko and contributors

https://twitter.com/trodrigues/status/509301317467373571