-
Notifications
You must be signed in to change notification settings - Fork 15
117 lines (102 loc) · 3.45 KB
/
comp-compile-explorer-code.yaml
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
name: "ZC: Compile"
on:
workflow_call:
inputs:
enable-unit-tests:
description: "Unit Testing Enabled:"
type: boolean
required: false
default: false
enable-e2e-tests:
description: "E2E Testing Enabled:"
type: boolean
required: false
default: false
enable-sonar-analysis:
description: "Sonar Analysis Enabled:"
type: boolean
required: false
default: false
custom-job-label:
description: "Custom Job Label:"
type: string
required: false
default: "Compiles"
secrets:
access-token:
description: "The Github access token used to checkout the repository, submodules, and make GitHub API calls."
required: true
sonar-token:
description: "The SonarCloud access token used by the SonarQube agent to report an analysis."
required: false
defaults:
run:
shell: bash
permissions:
pull-requests: write
checks: write
issues: read
contents: read
env:
LC_ALL: C.UTF-8
jobs:
compile:
name: ${{ inputs.custom-job-label || 'Compiles' }}
runs-on: mirror-node-linux-large
steps:
- name: Harden Runner
uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1
with:
egress-policy: audit
- name: Checkout Code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
- name: Setup NodeJS
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0
with:
node-version: 20
cache: npm
- name: Setup Xvfb
if: ${{ inputs.enable-e2e-tests && !cancelled() }}
run: |
if ! command -v xvfb-run >/dev/null 2>&1; then
echo "::group::Updating Aptitude"
sudo apt update
echo "::endgroup::"
echo "::group::Installing Xvfb"
sudo apt install -y xvfb
echo "::endgroup::"
fi
- name: Install Google Chrome
if: ${{ inputs.enable-e2e-tests && !cancelled() }}
env:
DEBIAN_FRONTEND: noninteractive
run: |
curl -LO https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt-get install -y ./google-chrome-stable_current_amd64.deb
rm google-chrome-stable_current_amd64.deb
- name: Install Dependencies
run: npm ci
- name: Compile Code
run: npm run build
- name: Unit Tests
run: npm run cover:unit
if: ${{ inputs.enable-unit-tests && !cancelled() }}
- name: Report Unit Test Coverage
uses: step-security/vitest-coverage-report-action@001298986397447c590e077e9cc1e88e6935b1a9 # v2.5.0
if: ${{ inputs.enable-unit-tests && !cancelled() }}
- name: Cypress run
uses: cypress-io/github-action@0da3c06ed8217b912deea9d8ee69630baed1737e # v6.7.6
if: ${{ inputs.enable-e2e-tests && !cancelled() }}
with:
install-command: npm install
browser: chrome
start: npm run dev
spec: tests/e2e/specs/*
- name: Sonar Analysis
uses: sonarsource/sonarcloud-github-action@383f7e52eae3ab0510c3cb0e7d9d150bbaeab838 # v3.1.0
if: ${{ inputs.enable-sonar-analysis && !cancelled() }}
env:
GITHUB_TOKEN: ${{ secrets.access-token }}
SONAR_TOKEN: ${{ secrets.sonar-token }}