-
Notifications
You must be signed in to change notification settings - Fork 14
134 lines (130 loc) · 4.13 KB
/
Copy pathbuild.yml
File metadata and controls
134 lines (130 loc) · 4.13 KB
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: Build
on:
push:
branches:
- main
pull_request:
workflow_dispatch: # allows to be run manually
workflow_call: # when called from another workflow
inputs:
checkout_ref:
required: true
type: string
outputs:
production_artifact_name:
value: ${{ jobs.build.outputs.production_artifact_name }}
env:
PREPARED_NODE_MODULES_ARTIFACT_NAME: node_modules
PRODUCTION_ARTIFACT_NAME: dist
DEVELOPMENT_ARTIFACT_NAME: dist-development
permissions:
contents: read
jobs:
prepare_cache:
name: Prepare cache
# to populate the cache for the following jobs that have this one in 'needs'
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Clone repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
ref: ${{ inputs.checkout_ref }}
- name: Prepare the project
uses: ./.github/actions/prepare
with:
save-cache: true
build_dev:
name: Build development version
needs: prepare_cache
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Clone repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
ref: ${{ inputs.checkout_ref }}
- name: Prepare the project
uses: ./.github/actions/prepare
- name: Build add-on (development version)
run: make build_in_container
env:
MODE: development
- name: Save built add-on (development version)
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: ${{ env.DEVELOPMENT_ARTIFACT_NAME }}
path: dist
retention-days: 30
build:
name: Build production version
needs: prepare_cache
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Clone repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
ref: ${{ inputs.checkout_ref }}
- name: Prepare the project
uses: ./.github/actions/prepare
- name: Build add-on
run: make build_in_container
- name: Save built add-on
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: ${{ env.PRODUCTION_ARTIFACT_NAME }}
path: dist
retention-days: 30
outputs:
production_artifact_name: ${{ env.PRODUCTION_ARTIFACT_NAME }}
test:
name: Run tests
needs: prepare_cache
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Clone repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
ref: ${{ inputs.checkout_ref }}
- name: Prepare the project
uses: ./.github/actions/prepare
- name: Run tests
run: make test_in_container
- name: Upload code coverage report
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: coverage
path: coverage
retention-days: 30
- name: Show code coverage in summary
run: |
summary="$(npx -y tsx@4 scripts/test-coverage-github-summary.ts)"
echo "${summary}" >> $GITHUB_STEP_SUMMARY
generated_code_consistency:
name: Verify generated code is consistent
needs: prepare_cache
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Clone repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
ref: ${{ inputs.checkout_ref }}
- name: Prepare the project
uses: ./.github/actions/prepare
- name: Check changes in generated code
run: |
git status
git diff
UNCOMMITTED_CHANGES="$(git status --porcelain)"
if [ -n "${UNCOMMITTED_CHANGES}" ]; then
echo 'Found uncommitted changes' >&2
exit 1
fi