Skip to content

Workflow file for this run

# When making a release, please keep in mind that this action expects and validates a few things:
# - Releases marked as drafts will be ignored (ie. they will not publish).
# - Ensure that package.json has a version.
# - Ensure the git tag you create during the release process starts with a v (ie. v1.2.3).
# - Ensure that the version in package.json matches the release tag created.
# - Ensure versions are valid semver format.
# - Ensure the GitHub release is marked as a pre-release if the semver version has a pre-release tag.
# This script was inspired by this README: https://github.com/marketplace/actions/github-releases-for-automated-package-publishing
name: Publish Package to npmjs
on:
release:
types: [created]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
# Note we set an `id` called `release`. We'll use that later...
- name: Validate and extract release information
id: release
uses: manovotny/[email protected]
# Setup Anchor to enable compilation and export of Solana programs
- name: Setup Anchor & Build
- uses: metadaoproject/setup-anchor@v2
with:
anchor-version: "0.30.1"
solana-cli-version: "1.18.21"
node-version: "20.17.0"
- run: anchor build
# Setup .npmrc file to publish to npm
- uses: actions/setup-node@v3
with:
node-version: "16.x"
always-auth: true
registry-url: "https://registry.npmjs.org"
# Perform installs, run tests, run a build step, etc. here, as needed.
- run: yarn
# The last two steps will publish the package. Note that we're using
# information from the `release` step above (I told you we'd use it
# later). Notice the `if` statements on both steps...
#
# If there *is* a tag (ie. `beta`, `canary`, etc.), we publish a
# "pre-release" or "tagged" version of a package (ie. 1.2.3-beta.1).
#
# If there *is not* a tag (ie. `beta`, `canary`, etc.), we publish a
# version of a package (ie. 1.2.3).
#
# This example is using npm to publish, but you could just as easily
# use yarn, if you prefer. It's also publishing to the NPM registry,
# thus, it's using `NPM_TOKEN`, but you could just as easily use
# `GITHUB_TOKEN` if you were publishing to the GitHub Package registry.
# This will publish a "pre-release" or "tagged" version of a package.
# This will publish a version of a package.
- name: Publish version
if: steps.release.outputs.tag == ''
run: yarn publish
env:
NPM_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Publish tagged version
if: steps.release.outputs.tag != ''
run: yarn publish --tag ${{ steps.release.outputs.tag }}
env:
NPM_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}