Files
oki-podcast-reader/.github/workflows/publish.yml
T
2023-07-09 23:21:21 +01:00

88 lines
2.7 KiB
YAML

name: 'Publish to NPM'
on:
push:
branches:
- 'main'
concurrency: ${{ github.workflow }}-${{ github.ref }}
jobs:
setup:
name: Setup Enviroment
timeout-minutes: 4
runs-on: ubuntu-latest
outputs:
cache_name: ${{ steps.cache.outputs.name }}
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set Node to v18.13.0
uses: actions/setup-node@v3
with:
node-version: v18.13.0
- name: Get Node version
id: node
run: echo "version=$(node -v)" >> $GITHUB_OUTPUT
#run: echo "::set-output name=version::$(node --v)"
- name: Get Cache Name
id: cache
run: echo "name=${{ runner.os }}-node_modules-${{ hashFiles('**/yarn.lock') }}-${{ steps.node.outputs.version }}" >> $GITHUB_OUTPUT
- name: Get node_modules cache
uses: actions/cache@v3
id: node_modules
with:
path: |
**/node_modules
**/.svelte-kit
key: ${{ steps.cache.outputs.name }}
- name: Install dependencies
run: yarn install --frozen-lockfile
- name: Sync generated typings
run: yarn run sync
release:
if: github.repository == 'OllieJT/svelte-podcast'
name: Release
needs: setup
timeout-minutes: 5
runs-on: ubuntu-latest
# prevents this action from running on forks
permissions:
contents: write # to create release (changesets/action)
pull-requests: write # to create pull request (changesets/action)
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
# This makes Actions fetch all Git history so that Changesets can generate changelogs with the correct commits
fetch-depth: 0
- name: Get node_modules cache
uses: actions/cache/restore@v3
id: cache
with:
path: |
**/node_modules
**/.svelte-kit
key: ${{ needs.setup.outputs.cache_name }}
- name: Install dependencies
run: yarn install --frozen-lockfile
- name: Create Release Pull Request or Publish to npm
id: changesets
uses: changesets/action@v1
with:
# This expects you to have a script called release which does a build for your packages and calls changeset publish
publish: yarn release
env:
GITHUB_TOKEN: ${{ secrets.TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
UPDATE_TEMPLATE_SSH_KEY: ${{ secrets.UPDATE_TEMPLATE_SSH_KEY }}