-
Notifications
You must be signed in to change notification settings - Fork 3
129 lines (122 loc) · 3.44 KB
/
scala.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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
name: Scala CI
on:
workflow_dispatch:
push:
branches: [main]
pull_request:
types: [synchronize, opened, reopened]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
# Fetch all commits, used by sbt-dynver plugin to determine version
fetch-depth: 0
# Fetch all tags
- run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 21
cache: 'sbt'
- name: Compile code
run: sbt "compile; docs3/mdoc --check"
formatting:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 21
cache: 'sbt'
- name: Check formatting
run: sbt scalafmtCheckAll
test:
name: Test (${{matrix.os}})
strategy:
fail-fast: false
matrix:
os: ['ubuntu-latest', 'windows-latest']
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 21
cache: 'sbt'
- name: Test
run: sbt test
test-js:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 21
cache: 'sbt'
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
cache-dependency-path: node/package-lock.json
- name: Generate JS
run: sbt fastLinkJS
- name: Npm setup
run: npm ci
working-directory: node
- name: Test
run: npm test
working-directory: node
mutation-testing:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 21
cache: 'sbt'
- name: Run stryker
run: sbt 'project WeaponRegeX; stryker'
env:
STRYKER_DASHBOARD_API_KEY: ${{ secrets.STRYKER_DASHBOARD_API_KEY }}
release:
needs: [build, formatting, test, test-js]
if: "github.ref == 'refs/heads/main' || startsWith(github.event.ref, 'refs/tags/')"
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
steps:
- uses: actions/checkout@v4
with:
# Fetch all commits, used by sbt-dynver plugin to determine version
fetch-depth: 0
# Fetch all tags
- run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 21
cache: 'sbt'
- run: git fetch --tags
- name: Set NPM Env
run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc
- name: Publish code
run: sbt ci-release
env:
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
PGP_SECRET: ${{ secrets.PGP_SECRET }}
PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }}
CI_RELEASE: WeaponRegeXPublishSigned