A scripting tool for CI environments to determine if your package needs to be published.
npm install -g is-unpublished
if is-unpublished; then
# Do whatever you need to do to publish your package!
fi
This tool supports the following package formats:
If you don't have the ability to install NPM packages in your environment, you can install a binary release.
$ curl -L https://github.com/rzane/is-unpublished/releases/download/v0.3.3/is-unpublished-`uname -s`-`uname -m` > is-unpublished
$ chmod +x is-unpublished
$ ./is-unpublished --version
0.3.3
You can also use this package as a Github action. The action version coincides with the published NPM package version.
The directory your package lives in.
The name of your package.
The current version of your package.
Indicates that your package hasn't been published yet.
Make sure to set NPM_TOKEN
in your repo settings.
- name: Setup Node
uses: actions/setup-node@v1
with:
node-version: 12
registry-url: https://registry.npmjs.org
- name: Check
id: check
uses: rzane/[email protected]
- name: Publish
run: yarn install && yarn publish --access public
if: ${{ steps.check.outputs.is-unpublished == 'true' }}
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Release
uses: actions/create-release@v1
if: ${{ steps.check.outputs.is-unpublished == 'true' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ steps.check.outputs.version }}
release_name: v${{ steps.check.outputs.version }}
Make sure to set RUBYGEMS_TOKEN
in your repo settings.
- name: Setup Ruby
uses: actions/setup-ruby@v1
with:
ruby-version: 2.6.x
registry-url: https://registry.npmjs.org
- name: Check
id: check
uses: rzane/[email protected]
- name: Publish
if: ${{ steps.check.outputs.is-unpublished == 'true' }}
run: |
mkdir -p $HOME/.gem
touch $HOME/.gem/credentials
chmod 0600 $HOME/.gem/credentials
printf -- "---\n:rubygems_api_key: ${RUBYGEMS_TOKEN}\n" > $HOME/.gem/credentials
gem build *.gemspec
gem push *.gem
env:
RUBYGEMS_TOKEN: ${{ secrets.RUBYGEMS_TOKEN }}
- name: Release
if: ${{ steps.check.outputs.is-unpublished == 'true' }}
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ steps.check.outputs.version }}
release_name: v${{ steps.check.outputs.version }}