-
Notifications
You must be signed in to change notification settings - Fork 20
134 lines (133 loc) · 4.69 KB
/
build.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
# ~~ Generated by projen. To modify, edit .projenrc.js and run "pnpm dlx projen".
name: build
on:
pull_request: {}
workflow_dispatch: {}
merge_group: {}
jobs:
build:
runs-on: ${{ vars.LARGE_RUNNER_L || 'ubuntu-latest' }}
permissions:
contents: write
checks: write
pull-requests: write
id-token: write
outputs:
self_mutation_happened: ${{ steps.self_mutation.outputs.self_mutation_happened }}
env:
CI: "true"
iam_role_to_assume: ${{ secrets.ROLE_ARN }}
JEST_MAX_WORKERS: ${{ vars.JEST_MAX_WORKERS || 'auto' }}
DISABLE_V8_COMPILE_CACHE: "1"
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.ref }}
repository: ${{ github.event.pull_request.head.repo.full_name }}
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 8.15.3
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20.12.0
- name: Install dependencies
run: pnpm i --no-frozen-lockfile
- name: Configure AWS Credentials
if: ${{ env.iam_role_to_assume != '' }}
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ env.iam_role_to_assume }}
aws-region: us-east-1
- name: Login to Amazon ECR Public
if: ${{ env.iam_role_to_assume != '' }}
uses: aws-actions/amazon-ecr-login@v2
with:
registry-type: public
- name: Install Library
run: pnpm install
- name: Run NX Build Base Library
run: pnpm nx build @aws/clickstream-base-lib
- name: build
run: pnpm dlx projen build
- name: Publish Test Report
uses: mikepenz/action-junit-report@v4
with:
check_name: Test results
report_paths: ./test-reports/junit.xml
fail_on_failure: true
require_tests: true
detailed_summary: true
job_name: build
update_check: true
include_passed: true
- name: Code Coverage Summary Report
uses: irongut/CodeCoverageSummary@v1.3.0
with:
filename: coverage/cobertura-coverage.xml
badge: "true"
fail_below_min: "true"
format: markdown
hide_branch_rate: "false"
hide_complexity: "true"
indicators: "true"
output: both
thresholds: 60 80
- name: Add Coverage PR Comment
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
uses: marocchino/sticky-pull-request-comment@v2
with:
recreate: true
path: code-coverage-results.md
- name: Find mutations
id: self_mutation
run: |-
git add .
git diff --staged --patch --exit-code > .repo.patch || echo "self_mutation_happened=true" >> $GITHUB_OUTPUT
working-directory: ./
- name: Upload patch
if: steps.self_mutation.outputs.self_mutation_happened
uses: actions/upload-artifact@v4
with:
name: .repo.patch
path: .repo.patch
overwrite: true
- name: Fail build on mutation
if: steps.self_mutation.outputs.self_mutation_happened
run: |-
echo "::error::Files were changed during build (see build log). If this was triggered from a fork, you will need to update your branch."
cat .repo.patch
exit 1
self-mutation:
needs: build
runs-on: ubuntu-latest
permissions:
contents: write
if: always() && needs.build.outputs.self_mutation_happened && !(github.event.pull_request.head.repo.full_name != github.repository)
steps:
- name: Checkout
uses: actions/checkout@v4
with:
token: ${{ secrets.PROJEN_GITHUB_TOKEN }}
ref: ${{ github.event.pull_request.head.ref }}
repository: ${{ github.event.pull_request.head.repo.full_name }}
- name: Download patch
uses: actions/download-artifact@v4
with:
name: .repo.patch
path: ${{ runner.temp }}
- name: Apply patch
run: '[ -s ${{ runner.temp }}/.repo.patch ] && git apply ${{ runner.temp }}/.repo.patch || echo "Empty patch. Skipping."'
- name: Set git identity
run: |-
git config user.name "github-actions"
git config user.email "github-actions@github.com"
- name: Push changes
env:
PULL_REQUEST_REF: ${{ github.event.pull_request.head.ref }}
run: |-
git add .
git commit -s -m "chore: self mutation"
git push origin HEAD:$PULL_REQUEST_REF