Skip to content

Commit b26f267

Browse files
committed
Setup GH Actions Workflow
1 parent 01c1bc1 commit b26f267

File tree

2 files changed

+140
-0
lines changed

2 files changed

+140
-0
lines changed

.github/workflows/ci.yaml

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
name: ci
2+
on:
3+
push:
4+
branches:
5+
- main
6+
pull_request:
7+
branches:
8+
- main
9+
10+
jobs:
11+
12+
test_node:
13+
runs-on: ${{ matrix.os }}
14+
strategy:
15+
matrix:
16+
node: [ '15', '14', '12' ]
17+
os: [ windows-latest, ubuntu-latest ]
18+
name: Test with Node v${{ matrix.node }} on ${{ matrix.os }}
19+
steps:
20+
- uses: actions/[email protected]
21+
- uses: actions/[email protected]
22+
with:
23+
node-version: ${{ matrix.node }}
24+
- uses: bahmutov/[email protected]
25+
- run: |
26+
npm run build
27+
npm test
28+
test_deno:
29+
runs-on: ubuntu-latest
30+
name: test with Deno
31+
steps:
32+
- uses: actions/[email protected]
33+
- uses: actions/[email protected]
34+
- uses: actions/cache@v1
35+
with:
36+
path: ~/.cache/deno
37+
key: deno-${{ runner.os }}-${{ hashFiles('deno-lock.json') }}
38+
restore-keys: |
39+
deno-${{ runner.os }}-${{ hashFiles('deno-lock.json') }}
40+
deno-${{ runner.os }}-
41+
deno-
42+
- uses: denolib/[email protected]
43+
with:
44+
deno-version: v1.x
45+
- run: deno --version
46+
# We don't actually execute any runtime check but at least we make sure that, typewise, everything's fine.
47+
- uses: bahmutov/[email protected]
48+
- run: npx denoify
49+
- run: deno run --reload --unstable --no-check deno_dist/mod.ts
50+
51+
check_if_version_upgraded:
52+
name: Check if version upgrade
53+
# We run this only if it's a push on the default branch or if it's a PR from a
54+
# branch (meaning not a PR from a fork). It would be more straightforward to test if secrets.NPM_TOKEN is
55+
# defined but GitHub Action don't allow it yet.
56+
if: |
57+
github.event_name == 'push' ||
58+
github.event.pull_request.head.repo.owner.login == github.event.pull_request.base.repo.owner.login
59+
runs-on: ubuntu-latest
60+
needs:
61+
- test_node
62+
- test_deno
63+
outputs:
64+
from_version: ${{ steps.step1.outputs.from_version }}
65+
to_version: ${{ steps.step1.outputs.to_version }}
66+
is_upgraded_version: ${{ steps.step1.outputs.is_upgraded_version }}
67+
is_release_beta: ${{steps.step1.outputs.is_release_beta }}
68+
steps:
69+
- uses: garronej/[email protected]
70+
id: step1
71+
with:
72+
action_name: is_package_json_version_upgraded
73+
branch: ${{ github.head_ref || github.ref }}
74+
75+
publish:
76+
runs-on: ubuntu-latest
77+
needs:
78+
- check_if_version_upgraded
79+
# We create a release only if the version have been upgraded and we are on a default branch
80+
# PR on the default branch can release beta but not real release
81+
if: |
82+
needs.check_if_version_upgraded.outputs.is_upgraded_version == 'true' &&
83+
(
84+
github.event_name == 'push' ||
85+
needs.check_if_version_upgraded.outputs.is_release_beta == 'true'
86+
)
87+
steps:
88+
- uses: actions/[email protected]
89+
with:
90+
fetch-depth: 0
91+
ref: ${{ github.ref }}
92+
- run: rm -r .github
93+
- run: |
94+
git branch -d latest || true
95+
git push origin :latest || true
96+
- run: |
97+
git branch latest
98+
git checkout latest
99+
- uses: actions/[email protected]
100+
with:
101+
node-version: '15'
102+
registry-url: https://registry.npmjs.org/
103+
- uses: bahmutov/[email protected]
104+
- run: npm run build
105+
- run: npx -y -p [email protected] enable_short_npm_import_path
106+
env:
107+
DRY_RUN: "0"
108+
- run: |
109+
if [ "$(npm show . version)" = "$VERSION" ]; then
110+
echo "This version is already published"
111+
exit 0
112+
fi
113+
if [ "$NODE_AUTH_TOKEN" = "" ]; then
114+
echo "Can't publish on NPM, You must first create a secret called NPM_TOKEN that contains your NPM auth token. "
115+
false
116+
fi
117+
npm publish
118+
env:
119+
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
120+
VERSION: ${{ needs.check_if_version_upgraded.outputs.to_version }}
121+
- run: |
122+
git config --global user.name "actions"
123+
git config --global user.email [email protected]
124+
git add -A
125+
git commit -am "Enabling shorter import paths"
126+
git push origin latest
127+
- uses: softprops/action-gh-release@v1
128+
with:
129+
name: Release v${{ needs.check_if_version_upgraded.outputs.to_version }}
130+
tag_name: v${{ needs.check_if_version_upgraded.outputs.to_version }}
131+
target_commitish: latest
132+
generate_release_notes: true
133+
draft: false
134+
prerelease: ${{ needs.check_if_version_upgraded.outputs.is_release_beta == 'true' }}
135+
env:
136+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
137+

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ with smart type inference.
66
</p>
77

88
<p align="center">
9+
<a href="https://github.com/gvergnaud/ts-pattern/actions">
10+
<img src="https://github.com/gvergnaud/ts-pattern/workflows/ci/badge.svg?branch=main" alt="CI Workflow" height="18">
11+
</a>
912
<a href="https://www.npmjs.com/package/ts-pattern">
1013
<img src="https://img.shields.io/npm/dm/ts-pattern.svg" alt="downloads" height="18">
1114
</a>

0 commit comments

Comments
 (0)