Skip to content

Commit

Permalink
fix(ci): publish using semantic-release
Browse files Browse the repository at this point in the history
  • Loading branch information
snorrees committed Nov 22, 2022
1 parent 484546d commit 7624fac
Show file tree
Hide file tree
Showing 4 changed files with 98 additions and 40 deletions.
122 changes: 85 additions & 37 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -1,19 +1,42 @@
---
name: CI & Release

# Workflow name based on selected inputs. Fallback to default Github naming when expression evaluates to empty string
run-name: >-
${{
inputs.release && inputs.test && format('Build {0} ➤ Test ➤ Publish to NPM', github.ref_name) ||
inputs.release && !inputs.test && format('Build {0} ➤ Skip Tests ➤ Publish to NPM', github.ref_name) ||
github.event_name == 'workflow_dispatch' && inputs.test && format('Build {0} ➤ Test', github.ref_name) ||
github.event_name == 'workflow_dispatch' && !inputs.test && format('Build {0} ➤ Skip Tests', github.ref_name) ||
''
}}
on:
# Build on pushes to release branches
push:
branches: ['main', 'studio-v2']
# Build on pull requests targeting release branches
# Build on pushes branches that have a PR (including drafts)
pull_request:
branches: ['main', 'studio-v2']
# Build on commits pushed to branches without a PR if it's in the allowlist
push:
branches: [main,studio-v2]
# https://docs.github.com/en/actions/managing-workflow-runs/manually-running-a-workflow
workflow_dispatch:
inputs:
test:
description: Run tests
required: true
default: true
type: boolean
release:
description: Release new version
required: true
default: false
type: boolean

concurrency:
# On PRs builds will cancel if new pushes happen before the CI completes, as it defines `github.head_ref` and gives it the name of the branch the PR wants to merge into
# Otherwise `github.run_id` ensures that you can quickly merge a queue of PRs without causing tests to auto cancel on any of the commits pushed to main.
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

jobs:
log-the-inputs:
name: Log inputs
Expand All @@ -25,55 +48,74 @@ jobs:
INPUTS: ${{ toJSON(inputs) }}
build:
name: Lint & Build
runs-on: ubuntu-latest
name: Lint & Build
steps:
- name: Set git to use LF
run: |
git config --global core.autocrlf false
git config --global core.eol lf
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # tag=v3
- uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516 # tag=v3
with:
node-version: lts/*
cache: npm
node-version: lts/*
- run: npm ci
# Linting can be skipped
- run: npm run lint --if-present
- run: npm run prepublishOnly
if: github.event.inputs.test != 'false'
# But not the build script, as semantic-release will crash if this command fails so it makes sense to test it early
- run: npm run prepublishOnly --if-present

test:
name: Test
needs: build
strategy:
matrix:
os: [macos-latest, ubuntu-latest]
node: [lts/*, current]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}
cache: npm
- run: npm ci
- run: npm test --if-present
# test:
# needs: build
# # The test matrix can be skipped, in case a new release needs to be fast-tracked and tests are already passing on main
# if: github.event.inputs.test != 'false'
# runs-on: ${{ matrix.os }}
# name: Node.js ${{ matrix.node }} / ${{ matrix.os }}
# strategy:
# # A test failing on windows doesn't mean it'll fail on macos. It's useful to let all tests run to its completion to get the full picture
# fail-fast: false
# matrix:
# # Run the testing suite on each major OS with the latest LTS release of Node.js
# os: [macos-latest, ubuntu-latest, windows-latest]
# node: [lts/*]
# # It makes sense to also test the oldest, and latest, versions of Node.js, on ubuntu-only since it's the fastest CI runner
# include:
# - os: ubuntu-latest
# # Test the oldest LTS release of Node that's still receiving bugfixes and security patches, versions older than that have reached End-of-Life
# node: lts/-2
# - os: ubuntu-latest
# # Test the actively developed version that will become the latest LTS release next October
# node: current
# steps:
# # It's only necessary to do this for windows, as mac and ubuntu are sane OS's that already use LF
# - name: Set git to use LF
# if: matrix.os == 'windows-latest'
# run: |
# git config --global core.autocrlf false
# git config --global core.eol lf
# - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # tag=v3
# - uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516 # tag=v3
# with:
# cache: npm
# node-version: ${{ matrix.node }}
# - run: npm i
# - run: npm test --if-present

release:
name: Semantic release
needs: test
runs-on: ubuntu-latest
# needs: [build, test]
needs: [build]
# only run if opt-in during workflow_dispatch
if: inputs.release == true
if: always() && github.event.inputs.release == 'true' && needs.build.result != 'failure' && needs.test.result != 'failure' && needs.test.result != 'cancelled'
runs-on: ubuntu-latest
name: Semantic release
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # tag=v3
with:
# Need to fetch entire commit history to
# analyze every commit since last release
fetch-depth: 0
- uses: actions/setup-node@v3
- uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516 # tag=v3
with:
node-version: lts/*
cache: npm
node-version: lts/*
- run: npm ci
# Branches that will release new versions are defined in .releaserc.json
- run: npx semantic-release
Expand All @@ -83,3 +125,9 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}
# Re-run semantic release with rich logs if it failed to publish for easier debugging
- run: npx semantic-release --dry-run --debug
if: failure()
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}
2 changes: 1 addition & 1 deletion .npmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
legacy-peer-deps=true
legacy-peer-deps=true
5 changes: 4 additions & 1 deletion .releaserc.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"extends": "@sanity/semantic-release-preset",
"branches": ["main", {"name": "studio-v2", "channel": "studio-v2", "range": "1.x.x"}]
"branches": [
"main",
{ "name": "studio-v2", "channel": "studio-v2", "range": "1.1.x" }
]
}
9 changes: 8 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,15 @@ Displays the results of a GROQ query in a View Pane. With the ability to use fie

## Installation

```sh
yarn add sanity-plugin-documents-pane@studio-v2
```
sanity install documents-pane@studio-v2

Next, add `"documents-pane"` to `sanity.json` plugins array:
```json
"plugins": [
"documents-pane"
]
```

This plugin is designed to be used as a [Component inside of a View](https://www.sanity.io/docs/structure-builder-reference#c0c8284844b7).
Expand Down

0 comments on commit 7624fac

Please sign in to comment.