This repository has been archived by the owner on Jul 3, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
134 lines (114 loc) · 4.08 KB
/
ci.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
130
131
132
133
134
name: CI
on:
pull_request:
jobs:
setup:
uses: ./.github/workflows/detect-workspace-changes.yml
with:
from: ${{ github.head_ref }}
since: ${{ github.base_ref }}
flatten-deps:
runs-on: ubuntu-latest
needs: setup
outputs:
dependencies: ${{ toJson(fromJson(steps.flatten.outputs.result).dependencies) }}
steps:
- uses: actions/github-script@v6
id: flatten
with:
script: |
const rawExtensions = `${{ needs.setup.outputs.extensions }}`
const rawLibraries = `${{ needs.setup.outputs.libraries }}`
const rawPackages = `${{ needs.setup.outputs.packages }}`
const extensions = JSON.parse(rawExtensions)
const libraries = JSON.parse(rawLibraries)
const packages = JSON.parse(rawPackages)
console.log(extensions, libraries, packages);
const deps = [...extensions, ...libraries, ...packages]
return {
dependencies: deps
}
lint:
runs-on: ubuntu-latest
needs: flatten-deps
if: ${{ needs.flatten-deps.outputs.dependencies != '[]' }}
strategy:
fail-fast: false
matrix:
workspace: ${{ fromJson(needs.flatten-deps.outputs.dependencies) }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- name: Setup yarn
id: setup-yarn
run: |
corepack enable
corepack prepare yarn@stable --activate
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "dir=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- run: yarn install --immutable
if: steps.yarn-cache.outputs.cache-hit != 'true'
- run: yarn workspace ${{ matrix.workspace.name }} run lint
format:
runs-on: ubuntu-latest
needs: flatten-deps
if: ${{ needs.flatten-deps.outputs.dependencies != '[]' }}
strategy:
fail-fast: false
matrix:
workspace: ${{ fromJson(needs.flatten-deps.outputs.dependencies) }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- name: Setup yarn
id: setup-yarn
run: |
corepack enable
corepack prepare yarn@stable --activate
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "dir=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- run: yarn install --immutable
if: steps.yarn-cache.outputs.cache-hit != 'true'
- run: yarn workspace ${{ matrix.workspace.name }} run format
build:
needs: flatten-deps
if: ${{ needs.flatten-deps.outputs.dependencies != '[]' }}
strategy:
fail-fast: false
matrix:
workspace: ${{ fromJson(needs.flatten-deps.outputs.dependencies) }}
uses: ./.github/workflows/build.yml
with:
workspace: ${{ matrix.workspace.name }}
secrets:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
VSCE_PAT: ${{ secrets.VSCE_PAT }}
test:
needs: flatten-deps
if: ${{ needs.flatten-deps.outputs.dependencies != '[]' }}
strategy:
fail-fast: false
matrix:
workspace: ${{ fromJson(needs.flatten-deps.outputs.dependencies) }}
uses: ./.github/workflows/test.yml
with:
workspace: ${{ matrix.workspace.name }}
secrets:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
VSCE_PAT: ${{ secrets.VSCE_PAT }}