forked from shopware/frontends
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.gitlab-ci.yml
128 lines (117 loc) · 3.81 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
# 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.3.0
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.29.1-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!"