-
Notifications
You must be signed in to change notification settings - Fork 1
82 lines (81 loc) · 2.54 KB
/
main.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# secrets.GITHUB_TOKEN is provided to each job by default, lifetime: 60minutes.
# See https://help.github.com/en/actions/automating-your-workflow-with-github-actions/authenticating-with-the-github_token
name: Lint, Test, Build and optionally Publish
on:
# push only for branches (ignore tags)
push:
branches:
- 'main'
tags-ignore:
- '**'
# pull request only for branches (ignore tags)
pull_request:
branches:
- '**'
tags-ignore:
- '**'
jobs:
checkExecution:
runs-on: ubuntu-latest
outputs:
shouldExecute: ${{ steps.stepCheckExecution.outputs.shouldExecute }}
steps:
- name: Dump GitHub context
run: |
echo "::group::github context"
echo "$GITHUB_CONTEXT"
echo "::endgroup::"
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
- id: stepCheckExecution
name: Check for execution
uses: shiftcode/github-action-skip@v4.0.0
with:
skipOnCommitMsg: "[skip_build]"
githubToken: ${{ secrets.GITHUB_TOKEN }}
build:
runs-on: ubuntu-latest
needs: checkExecution
# only execute if not skipped by commit message
if: needs.checkExecution.outputs.shouldExecute == 'true'
steps:
# checkout branch
- name: Checkout
uses: actions/checkout@v4
with:
# 0 indicates all history, because publish requires tag information
fetch-depth: 0
# we need privileged access to publish to protected branch
token: ${{ secrets.GH_TOKEN_PUBLIC_REPO }}
# setup node and dependency cache
- name: Setup Node and NPM Cache
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc
cache: 'npm'
# install dependencies
- name: Install
run: HUSKY=0 npm ci
# build lint plugins before linting
- name: Build lint plugins
run: npm run build:lint:ci
# lint
- name: Lint
run: npm run lint:ci
# test
- name: Test
run: npm run test:ci
# build
- name: Build
run: npm run build:ci
# publish
- name: Publish
run: |
npm config set //npm.pkg.github.com/:_authToken=$REGISTRY_TOKEN
git config user.email "actions@github.com"
git config user.name "Github Actions"
npm run publish-libs
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
REGISTRY_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ secrets.GH_TOKEN_PUBLIC_REPO }} # necessary for publish-libs script