Skip to content

GH Release and NPM Publish #33

GH Release and NPM Publish

GH Release and NPM Publish #33

name: GH Release and NPM Publish
on:
workflow_dispatch:
push:
branches:
- 'next'
paths:
- 'packages/**'
jobs:
publish:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- package: 'logger'
nodeVersion: '20'
- package: 'seed'
nodeVersion: '20'
- package: 'utils'
nodeVersion: '20'
- package: 'nwcache'
nodeVersion: '20'
- package: 'controlflow'
nodeVersion: '20'
- package: 'nocap'
nodeVersion: '20'
- package: 'nocap-websocket-adapter-default'
nodeVersion: '20'
- package: 'nocap-info-adapter-default'
nodeVersion: '20'
- package: 'nocap-dns-adapter-default'
nodeVersion: '20'
- package: 'nocap-geo-adapter-default'
nodeVersion: '20'
- package: 'nocap-ssl-adapter-default'
nodeVersion: '20'
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.nodeVersion }}
- name: Set Meta
id: meta
run: |
RELEASE="${{ matrix.package }}@v${{ steps.publish.outputs.version }}"s
echo "release=$RELEASE" >> $GITHUB_OUTPUT
- name: Find Package
id: find-package
run: |
WORKSPACES_JSON=$(yarn workspaces info --json)
PKG_PATH=$("$WORKSPACES_JSON" | jq -r '.data | fromjson | ."@nostrwatch/${{ matrix.package }}".location')
echo "path=$PKG_PATH" >> $GITHUB_OUTPUT
- name: Install Package
id: install-package
run: |
cd "${{ steps.find-package.outputs.path }}"
yarn install
- id: publish
uses: JS-DevTools/npm-publish@v3
with:
token: ${{ secrets.NPM_TOKEN }}
package: ${{ steps.find-package.outputs.path }}/package.json
strategy: all
access: public
- name: Archive Subdirectory
run: |
cd "${{ steps.find-package.outputs.path }}"
zip -r ${{ steps.meta.outputs.release}}.zip ${{ steps.find-package.outputs.path }}
- if: steps.publish.outputs.type != 'none' && steps.publish.outputs.dry_run != true
id: create_release
uses: actions/create-release@latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.meta.outputs.release }}
release_name: ${{ steps.meta.outputs.release }}
body: ""
draft: false
prerelease: true
- name: Upload Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./${{ steps.meta.outputs.release}}.zip
asset_name: ${{ steps.meta.outputs.release}}.zip
asset_content_type: application/zip