@@ -3,30 +3,216 @@ options:
33
44definitions :
55 caches :
6- node-cris8 : ./node_modules
6+ cypress-2024-02-x : ~/.cache/Cypress
7+ node-2024-02-x : ./node_modules
78
89 steps :
10+ - step : &preliminary-operation
11+ name : Preliminary Operation
12+ image : alpine/git:latest
13+ script :
14+ - export HASH_COMMIT=${BITBUCKET_COMMIT:0:8}
15+ - export BRANCH_NAME=$(echo "$BITBUCKET_BRANCH" | awk -F'/' '{if(NF==1)val=$1; else if(NF==2)val=$1"--"$2; else if(NF==3)val=$2; else if(NF==4)val=$2"--"$3; print tolower(val)}')
16+ - echo "Using commit hash $HASH_COMMIT"
17+ - git config --global user.email "${BB_USER}"
18+ - git config --global user.name "${BB_EMAIL}"
19+ - git clone https://x-token-auth:${E2ERUNNERS_ACCESS_TOKEN}@${E2E_VALUES_REPO}
20+ - cd e2erunners-values
21+ - sed "s#HASH_COMMIT#${HASH_COMMIT}#g" TPL >> ${HASH_COMMIT}
22+ - sed -i "s#BRANCH_NAME#${BRANCH_NAME}#g" TPL ${HASH_COMMIT}
23+ - git add ${HASH_COMMIT}
24+ - git commit -m "Add configuration for e2e-${HASH_COMMIT}"
25+ - git push
26+ - cd ..
27+ - git clone https://x-token-auth:${HELM_CHARTS_ACCESS_TOKEN}@${HELM_CHARTS_REPO}
28+ - cd helm-charts
29+ - PATH_VALUE=" e2e-$HASH_COMMIT"
30+ - printf " - name:%s\n" "$PATH_VALUE" >> ${E2E_VALUES}
31+ - git add e2e-ingress/values.yaml
32+ - git commit -m "Add ${HASH_COMMIT} to e2e-ingress values"
33+ - git push
34+ - cd ..
35+
36+ - step : &preliminary-operation-backend
37+ name : Preliminary Operation
38+ image : alpine/git:latest
39+ script :
40+ - export HASH_COMMIT=${BITBUCKET_COMMIT:0:8}
41+ - export BRANCH_NAME=$(echo "$BITBUCKET_BRANCH" | tr '[:upper:]' '[:lower:]' | sed 's|/|--|g')
42+ - echo "Using commit hash $HASH_COMMIT"
43+ - git config --global user.email "${BB_USER}"
44+ - git config --global user.name "${BB_EMAIL}"
45+ - git clone https://x-token-auth:${E2ERUNNERS_ACCESS_TOKEN}@${E2E_VALUES_REPO}
46+ - cd e2erunners-values
47+ - sed "s#HASH_COMMIT#${HASH_COMMIT}#g" TPL >> ${HASH_COMMIT}
48+ - sed -i "s#BRANCH_NAME#${BRANCH_NAME}#g" TPL ${HASH_COMMIT}
49+ - git add ${HASH_COMMIT}
50+ - git commit -m "Add configuration for e2e-${HASH_COMMIT}"
51+ - git push
52+ - cd ..
53+ - git clone https://x-token-auth:${HELM_CHARTS_ACCESS_TOKEN}@${HELM_CHARTS_REPO}
54+ - cd helm-charts
55+ - PATH_VALUE=" e2e-$HASH_COMMIT"
56+ - printf " - name:%s\n" "$PATH_VALUE" >> ${E2E_VALUES}
57+ - git add e2e-ingress/values.yaml
58+ - git commit -m "Add ${HASH_COMMIT} to e2e-ingress values"
59+ - git push
60+ - cd ..
61+
62+ - step : &angular-build
63+ name : angular-build
64+ image :
65+ name : cypress/browsers:node-18.20.3-chrome-125.0.6422.141-1-ff-126.0.1-edge-125.0.2535.85-1
66+ run-as-user : 1000
67+ size : 4x
68+ caches :
69+ - node-2024-02-x
70+ script :
71+ - yarn install --frozen-lockfile
72+ - yarn run build:prod:ci
73+ - yarn run build:mirador
74+ artifacts :
75+ - node_modules/**
76+ - dist/**
77+
978 - step : &unittest-code-checks
1079 name : test-code-checks
1180 image :
1281 name : cypress/browsers:node-18.20.3-chrome-125.0.6422.141-1-ff-126.0.1-edge-125.0.2535.85-1
1382 run-as-user : 1000
1483 size : 4x
1584 caches :
16- - node-cris8
85+ - node-2024-02-x
1786 script :
18- - yarn install --frozen-lockfile
19- - yarn run lint --quiet
87+ - yarn build:lint
88+ - npm run ng-high-memory -- lint --quiet
2089 - yarn run check-circ-deps
21- - yarn run build:prod:ci
2290 - yarn run test:headless
91+ artifacts :
92+ - .next/**
93+ - .cache/**
94+ - ~/.cache/Cypress
95+
96+ - step : &run-e2e-tests
97+ name : Run E2E test
98+ image :
99+ name : cypress/browsers:node-18.20.3-chrome-125.0.6422.141-1-ff-126.0.1-edge-125.0.2535.85-1
100+ run-as-user : 0
101+ size : 4x
102+ services :
103+ - docker
104+ caches :
105+ - node-2024-02-x
106+ - cypress-2024-02-x
107+ script :
108+ - export HASH_COMMIT=${BITBUCKET_COMMIT:0:8}
109+ - echo "Running tests for commit $HASH_COMMIT"
110+ - export DSPACE_REST_HOST=${E2E_RUNNER_HOST}
111+ - export DSPACE_REST_PORT=443
112+ - export DSPACE_REST_NAMESPACE=/e2e-${HASH_COMMIT}/server
113+ - echo "Configured REST endpoint at https://$DSPACE_REST_HOST$DSPACE_REST_NAMESPACE"
114+ - export DSPACE_REST_SSL=true
115+ - export DSPACE_UI_HOST=127.0.0.1
116+ - export DSPACE_UI_PORT=4000
117+ - export DSPACE_CACHE_SERVERSIDE_BOTCACHE_MAX=0
118+ - export DSPACE_CACHE_SERVERSIDE_ANONYMOUSCACHE_MAX=0
119+ - export CYPRESS_BASE_URL=http://127.0.0.1:4000
120+ - export CYPRESS_CACHE_FOLDER=~/.cache/Cypress
121+ - export CHROME_FLAGS="--no-sandbox --disable-dev-shm-usage --disable-gpu"
122+ - export NODE_OPTIONS="--max-old-space-size=4096"
123+ - npx cypress install
124+ - yarn serve:ssr &
125+ - echo "Waiting for server to start..."
126+ - sleep 10
127+ - echo "Running Cypress tests..."
128+ - yarn cypress:run --env chromeFlags="$CHROME_FLAGS"
129+ - echo "Test execution completed"
130+ artifacts :
131+ - cypress/screenshots/**
132+ - cypress/videos/**
133+
134+ - step : &build-and-push
135+ name : Build and Push Docker Image to ECR
136+ size : 4x
137+ image : atlassian/default-image:3
138+ services :
139+ - docker
140+ script :
141+ - echo "Copying dist to Docker context"
142+ - mkdir -p build-context
143+ - cp -r dist config build-context/
144+ - cp Dockerfile.build build-context/Dockerfile
145+ - cd build-context
146+ - export HASH_COMMIT=${BITBUCKET_COMMIT:0:8}
147+ - export BRANCH_NAME=$(echo "$BITBUCKET_BRANCH" | tr '[:upper:]' '[:lower:]' | sed 's|/|--|g')
148+ - docker build -t dspace-angular:${BRANCH_NAME}-${HASH_COMMIT} -t dspace-angular:${BRANCH_NAME}-latest .
149+ - pipe : atlassian/aws-ecr-push-image:2.5.0
150+ variables :
151+ AWS_ACCESS_KEY_ID : $AWS_ACCESS_KEY_ID
152+ AWS_SECRET_ACCESS_KEY : $AWS_SECRET_ACCESS_KEY
153+ AWS_DEFAULT_REGION : $AWS_REGION
154+ IMAGE_NAME : dspace-angular
155+ TAGS : " ${BRANCH_NAME}-${HASH_COMMIT} ${BRANCH_NAME}-latest"
156+
157+ - step : &deploy-on-dev
158+ name : Deploy on Development environment
159+ image : alpine/git:latest
160+ script :
161+ - export HASH_COMMIT=${BITBUCKET_COMMIT:0:8}
162+ - export BRANCH_NAME=$(echo "$BITBUCKET_BRANCH" | tr '[:upper:]' '[:lower:]' | sed 's|/|--|g')
163+ - export BRANCH_FILE=$(echo "$BITBUCKET_BRANCH" | awk -F'/' '{if(NF==1)val=$1;else if(NF==2)val=$2;else if(NF==3)val=$2;else val=$3;gsub(/_/, "-", val);print tolower(val)}')
164+ - git clone https://x-token-auth:${DSPACE_VALUES_ACCESS_TOKEN}@${DSPACE_VALUES_REPO}
165+ - cd dspace-values
166+ - ' [ -f "dev/${BRANCH_FILE}" ] && sed -i "/^angular:/,/^[^ ]/s/\(tag: \).*/\1${BRANCH_NAME}-${HASH_COMMIT}/" "dev/${BRANCH_FILE}"'
167+ -
git config --global user.email "[email protected] " 168+ - git config --global user.name "CI Bot"
169+ - git commit -am "Update TAG with ${BRANCH_NAME}-${HASH_COMMIT}"
170+ - git push
171+
172+ - step : &deploy-on-staging
173+ name : Deploy on Staging environment
174+ image : alpine/git:latest
175+ script :
176+ - export HASH_COMMIT=${BITBUCKET_COMMIT:0:8}
177+ - export BRANCH_NAME=$(echo "$BITBUCKET_BRANCH" | tr '[:upper:]' '[:lower:]' | sed 's|/|--|g')
178+ - export BRANCH_FILE=$(echo "$BITBUCKET_BRANCH" | awk -F'/' '{if(NF==1)val=$1;else if(NF==2)val=$2;else if(NF==3)val=$2;else val=$3;gsub(/_/, "-", val);print tolower(val)}')
179+ - git clone https://x-token-auth:${DSPACE_VALUES_ACCESS_TOKEN}@${DSPACE_VALUES_REPO}
180+ - cd dspace-values
181+ - ' [ -f "staging/${BRANCH_FILE}" ] && sed -i "/^angular:/,/^[^ ]/s/\(tag: \).*/\1${BRANCH_NAME}-${HASH_COMMIT}/" "staging/${BRANCH_FILE}"'
182+ - git config --global user.email "${BB_EMAIL}"
183+ - git config --global user.name "${BB_USER}"
184+ - git commit -am "Update TAG with ${BRANCH_NAME}-${HASH_COMMIT}"
185+ - git push
23186
24187pipelines :
188+ custom :
189+ e2e-on-custom-backend :
190+ - step : *preliminary-operation-backend
191+ - step : *angular-build
192+ - parallel : ¶llel-run-tests
193+ - step : *unittest-code-checks
194+ - step : *run-e2e-tests
195+ deploy-on-dev :
196+ - step : *angular-build
197+ - step : *build-and-push
198+ - step : *deploy-on-dev
25199 branches :
26200 ' dspace-cris-2024_02_x ' :
27- - step : *unittest-code-checks
201+ - step : *preliminary-operation
202+ - step : *angular-build
203+ - parallel : *parallel-run-tests
204+ - step : *build-and-push
205+ - step : *deploy-on-dev
206+ - step : *deploy-on-staging
28207 ' prod/** ' :
29- - step : *unittest-code-checks
208+ - step : *preliminary-operation
209+ - step : *angular-build
210+ - parallel : *parallel-run-tests
211+ - step : *build-and-push
212+ - step : *deploy-on-dev
213+ - step : *deploy-on-staging
30214 pull-requests :
31215 ' ** ' :
32- - step : *unittest-code-checks
216+ - step : *preliminary-operation
217+ - step : *angular-build
218+ - parallel : *parallel-run-tests
0 commit comments