Build and publish to NPM #357
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on: | |
workflow_run: | |
workflows: [Test JS bindings] | |
types: [completed] | |
branches: [master] | |
name: Build and publish to NPM | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
if: ${{ github.event.workflow_run.conclusion == 'success' }} | |
container: ghcr.io/kanaverse/emcmake-docker/builder:master | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- name: Set up Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
# We only run the remaining (remote-touching) steps if the version has actually changed. | |
- name: Extract package versions | |
shell: bash | |
run: | | |
current_version=$(npm pkg get version | sed 's/"//g') | |
echo "NEW_SCRANJS_VERSION=${current_version}" >> $GITHUB_ENV | |
old_version=$(npm view scran.js version) | |
update=0 && [[ $old_version != $current_version ]] && update=1 | |
echo "UPDATE_SCRANJS=${update}" >> $GITHUB_ENV | |
echo "Current version is ${current_version} (published ${old_version})" | |
- name: Cache installed | |
if: env.UPDATE_SCRANJS == 1 | |
uses: actions/cache@v4 | |
with: | |
path: extern/installed | |
key: deps-${{ hashFiles('extern/**/build.sh') }}-${{ env.IMAGE_VERSION }} | |
- name: Cache Modules | |
if: env.UPDATE_SCRANJS == 1 | |
uses: actions/cache@v4 | |
with: | |
path: '**/node_modules' | |
key: npm-${{ hashFiles('package.json') }} | |
- name: Update NPM packages | |
if: env.UPDATE_SCRANJS == 1 | |
run: npm i --include=dev | |
- name: Update node build | |
if: env.UPDATE_SCRANJS == 1 | |
run: bash build.sh main | |
- name: Update browser build | |
if: env.UPDATE_SCRANJS == 1 | |
run: bash build.sh browser | |
- name: Cache RDS files | |
if: env.UPDATE_SCRANJS == 1 | |
uses: actions/cache@v4 | |
with: | |
path: tests/rds/*.rds | |
key: rds-${{ hashFiles('tests/rds/generate.R') }} | |
- name: Double-checking tests | |
if: env.UPDATE_SCRANJS == 1 | |
run: CHECK_RDS=1 npm run test | |
- name: Publish to NPM | |
if: env.UPDATE_SCRANJS == 1 | |
run: npm publish | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
- name: Tagging the release | |
if: env.UPDATE_SCRANJS == 1 | |
uses: actions/github-script@v5 | |
with: | |
script: | | |
github.rest.git.createRef({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
ref: 'refs/tags/' + process.env.NEW_SCRANJS_VERSION, | |
sha: context.sha | |
}) |