-
Notifications
You must be signed in to change notification settings - Fork 56
/
.gitlab-ci.yml
168 lines (153 loc) · 5.01 KB
/
.gitlab-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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
# This file is a template, and might need editing before it works on your project.
# To contribute improvements to CI/CD templates, please follow the Development guide at:
# https://docs.gitlab.com/ee/development/cicd/templates.html
# This specific template is located at:
# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Getting-Started.gitlab-ci.yml
# This is a sample GitLab CI/CD configuration file that should run without any modifications.
# It demonstrates a basic 3 stage CI/CD pipeline. Instead of real tests or scripts,
# it uses echo commands to simulate the pipeline execution.
#
# A pipeline is composed of independent jobs that run scripts, grouped into stages.
# Stages run in sequential order, but jobs within stages run in parallel.
#
# For more information, see: https://docs.gitlab.com/ee/ci/yaml/index.html#stages
variables:
DYNAMIC_ENVIRONMENT_URL: ""
default:
tags:
- t3.medium
cache: &cache
key: pnpm-lock.yaml
paths:
- .pnpm-store
- ./node_modules
policy: pull
image: node:18.14.1
stages: # List of stages for jobs, and their order of execution
- init
- build
- deploy
- test
before_script:
- curl -f https://get.pnpm.io/v6.16.js | node - add --global pnpm@7
- pnpm config set store-dir .pnpm-store
init: # This job runs in the init stage, which runs first.
stage: init
script:
- pnpm install
cache:
<<: *cache
policy: pull-push
build-job: # This job runs in the build stage, which runs first.
stage: build
needs:
- job: init
artifacts: false
interruptible: true
script:
- pnpm install
- pnpm run build
unit-test-job: # This job runs in the test stage.
stage: build # It only starts when the job in the build stage completes successfully.
needs:
- job: init
artifacts: false
interruptible: true
script:
- pnpm install
- pnpm run test
lint-test-job: # This job also runs in the test stage.
stage: build # It can run at the same time as unit-test-job (in parallel).
needs:
- job: init
artifacts: false
script:
- pnpm install
- pnpm run build --filter='./packages/*'
- pnpm run lint
deploy-job: # This job runs in the deploy stage.
stage: deploy # It only runs when *both* jobs in the test stage complete successfully.
variables:
VERCEL_ORG_ID: $VERCEL_ORG_ID
VERCEL_PROJECT_ID: $VERCEL_PROJECT_ID
IS_PROD_FLAG: ""
rules:
- if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
variables: # Override IS_PROD_FLAG defined
IS_PROD_FLAG: "--prod" # at the job level.
- if: $CI_COMMIT_BRANCH
script:
- echo "Building! $IS_PROD_FLAG"
- pnpm install
- pnpm exec vercel pull -t $VERCEL_TOKEN --scope $VERCEL_SCOPE
- pnpm exec vercel build $IS_PROD_FLAG
- rm -r ./.vercel/output
- cp -r ./templates/vue-demo-store/.vercel/output ./.vercel/output
- DYNAMIC_ENVIRONMENT_URL=$(pnpm exec vercel deploy --prebuilt --confirm -t $VERCEL_TOKEN --scope $VERCEL_SCOPE $IS_PROD_FLAG)
- echo "Deployed to $DYNAMIC_ENVIRONMENT_URL"
- echo "DYNAMIC_ENVIRONMENT_URL=$DYNAMIC_ENVIRONMENT_URL" >> deploy.env
environment:
name: review/$CI_COMMIT_REF_SLUG
url: $DYNAMIC_ENVIRONMENT_URL
artifacts:
reports:
dotenv: deploy.env
e2e tests:
stage: test
image: mcr.microsoft.com/playwright:v1.32.0-focal
needs:
- job: deploy-job
artifacts: true
script:
- echo "$DYNAMIC_ENVIRONMENT_URL"
- echo "BASE_E2E_URL=$DYNAMIC_ENVIRONMENT_URL" >> .env
- pnpm install
- pnpm test:e2e
artifacts:
when: on_failure
paths:
- apps/e2e-tests/playwright-report/
lighthouse tests:
stage: test
only:
- schedules
image: cypress/browsers:node18.6.0-chrome105-ff104
script:
- yarn global add @lhci/cli@0.9.x
- LHCI_BUILD_CONTEXT__CURRENT_HASH=$CI_JOB_ID lhci autorun || echo "LHCI failed!"
vue demo store:
stage: test
image: mcr.microsoft.com/playwright:v1.32.0-focal
only:
- schedules
script:
- pnpm install
- cd apps/e2e-tests/
- BASE_E2E_URL=https://stackblitz.com/github/shopware/frontends/tree/main/templates/vue-demo-store npx playwright test checkStackblitzTemplates.spec.ts --project=chromium
vue blank:
stage: test
image: mcr.microsoft.com/playwright:v1.32.0-focal
only:
- schedules
script:
- pnpm install
- cd apps/e2e-tests/
- BASE_E2E_URL=https://stackblitz.com/github/shopware/frontends/tree/main/templates/vue-blank npx playwright test checkStackblitzTemplates.spec.ts --project=chromium
vue vite blank:
stage: test
image: mcr.microsoft.com/playwright:v1.32.0-focal
only:
- schedules
script:
- pnpm install
- cd apps/e2e-tests/
- BASE_E2E_URL=https://stackblitz.com/github/shopware/frontends/tree/main/templates/vue-vite-blank npx playwright test checkStackblitzTemplates.spec.ts --project=chromium
code examples:
stage: test
image: mcr.microsoft.com/playwright:v1.32.0-focal
only:
- schedules
script:
- pnpm install
- cd apps/e2e-tests/
- npx playwright test checkCodeExamples.spec.ts --project=chromium