@@ -215,7 +215,7 @@ definitions:
215215 - 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)}')
216216 - git clone https://x-token-auth:${DSPACE_VALUES_ACCESS_TOKEN}@${DSPACE_VALUES_REPO}
217217 - cd dspace-values
218- - ' [ -f " test/${BRANCH_FILE}" ] && sed -i "/^angular:/,/^[^ ]/s/\(tag: \).*/\1${BRANCH_NAME}-${HASH_COMMIT}/" " test/${BRANCH_FILE}" && sed -i "s/^\([[:space:]]*replicaCount:\) 0/\1 1/" " test/${BRANCH_FILE}"'
218+ - ' [ -f */ test/" ${BRANCH_FILE}" ] && sed -i "/^angular:/,/^[^ ]/s/\(tag: \).*/\1${BRANCH_NAME}-${HASH_COMMIT}/" */ test/" ${BRANCH_FILE}" && sed -i "s/^\([[:space:]]*replicaCount:\) 0/\1 1/" */ test/" ${BRANCH_FILE}"'
219219 - git config --global user.email "${BB_EMAIL}"
220220 - git config --global user.name "${BB_USER}"
221221 - git commit -am "Update TAG with ${BRANCH_NAME}-${HASH_COMMIT}" || echo "No changes to commit"
@@ -260,44 +260,65 @@ definitions:
260260 - 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)}')
261261 - git clone https://x-token-auth:${DSPACE_VALUES_ACCESS_TOKEN}@${DSPACE_VALUES_REPO}
262262 - cd dspace-values
263- - ' [ -f " test/${BRANCH_FILE}" ] && sed -i "s/^\([[:space:]]*replicaCount:\) 0/\1 1/" "staging/${BRANCH_FILE}"'
263+ - ' [ -f */ test/" ${BRANCH_FILE}" ] && sed -i "s/^\([[:space:]]*replicaCount:\) 0/\1 1/" "staging/${BRANCH_FILE}"'
264264 - git config --global user.email "${BB_USER}"
265265 - git config --global user.name "${BB_EMAIL}"
266266 - git commit -am "Enable test environment for ${BRANCH_NAME}" || echo "No changes to commit"
267267 - git push
268268
269- - step : &find-and-invalidate- cloudfront-dev
270- name : Invalidate CloudFront Dev Cache
269+ - step : &find-cloudfront-dev
270+ name : Find CloudFront Dev Cache
271271 image : amazon/aws-cli
272272 script :
273273 - export AWS_ACCESS_KEY_ID=$AWS_ACCESS_CF_KEY_ID
274274 - export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_CF_KEY
275275 - export AWS_DEFAULT_REGION=$AWS_REGION
276276 - export CLOUDFRONT_NAME=$(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)}')
277277 - export CLOUDFRONT_DISTRIBUTION_ID=$(aws cloudfront list-distributions --query "DistributionList.Items[?Comment=='dev--${CLOUDFRONT_NAME}'].Id" --output text)
278- - aws cloudfront create-invalidation --distribution-id $CLOUDFRONT_DISTRIBUTION_ID --paths "/*" || echo "CloudFront distribution $CLOUDFRONT_DISTRIBUTION_ID not found — skipping invalidation."
278+ - echo "cloudfront_distribution=$CLOUDFRONT_DISTRIBUTION_ID" >> $BITBUCKET_PIPELINES_VARIABLES_PATH
279+ output-variables :
280+ - cloudfront_distribution
279281
280- - step : &find-and-invalidate- cloudfront-staging
281- name : Invalidate CloudFront Staging Cache
282+ - step : &find-cloudfront-staging
283+ name : Find CloudFront Staging Cache
282284 image : amazon/aws-cli
283285 script :
284286 - export AWS_ACCESS_KEY_ID=$AWS_ACCESS_CF_KEY_ID
285287 - export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_CF_KEY
286288 - export AWS_DEFAULT_REGION=$AWS_REGION
287289 - export CLOUDFRONT_NAME=$(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)}')
288290 - export CLOUDFRONT_DISTRIBUTION_ID=$(aws cloudfront list-distributions --query "DistributionList.Items[?Comment=='staging--${CLOUDFRONT_NAME}'].Id" --output text)
289- - aws cloudfront create-invalidation --distribution-id $CLOUDFRONT_DISTRIBUTION_ID --paths "/*" || echo "CloudFront distribution $CLOUDFRONT_DISTRIBUTION_ID not found — skipping invalidation."
291+ - echo "cloudfront_distribution=$CLOUDFRONT_DISTRIBUTION_ID" >> $BITBUCKET_PIPELINES_VARIABLES_PATH
292+ output-variables :
293+ - cloudfront_distribution
290294
291- - step : &find-and-invalidate-cloudfront-test
292- name : Invalidate CloudFront Test Cache
295+ - step : &invalidate-cloudfront
296+ name : Invalidate CloudFront Cache
297+ image : amazon/aws-cli
298+ condition :
299+ state : cloudfront_distribution != ""
300+ script :
301+ - export AWS_ACCESS_KEY_ID=$AWS_ACCESS_CF_KEY_ID
302+ - export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_CF_KEY
303+ - export AWS_DEFAULT_REGION=$AWS_REGION
304+ - |
305+ if ! aws cloudfront create-invalidation --distribution-id $cloudfront_distribution --paths "/*"; then
306+ echo "CloudFront invalidation failed for distribution ID: $cloudfront_distribution"
307+ exit 1
308+ fi
309+
310+ - step : &find-cloudfront-test
311+ name : Find CloudFront Test Cache
293312 image : amazon/aws-cli
294313 script :
295314 - export AWS_ACCESS_KEY_ID=$AWS_ACCESS_CF_KEY_ID
296315 - export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_CF_KEY
297316 - export AWS_DEFAULT_REGION=$AWS_REGION
298317 - export CLOUDFRONT_NAME=$(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)}')
299318 - export CLOUDFRONT_DISTRIBUTION_ID=$(aws cloudfront list-distributions --query "DistributionList.Items[?Comment=='test--${CLOUDFRONT_NAME}'].Id" --output text)
300- - aws cloudfront create-invalidation --distribution-id $CLOUDFRONT_DISTRIBUTION_ID --paths "/*" || echo "CloudFront distribution $CLOUDFRONT_DISTRIBUTION_ID not found — skipping invalidation."
319+ - echo "cloudfront_distribution=$CLOUDFRONT_DISTRIBUTION_ID" >> $BITBUCKET_PIPELINES_VARIABLES_PATH
320+ output-variables :
321+ - cloudfront_distribution
301322
302323 - step : &check-branch-name-allowed
303324 name : Check allowed branch name
@@ -311,6 +332,23 @@ definitions:
311332 exit 1
312333 fi
313334
335+ - step : &merge-prod-into-test
336+ name : Merge prod into test
337+ image : atlassian/default-image:4
338+ script :
339+ - export PROD_BRANCH="$BITBUCKET_BRANCH"
340+ - export TEST_BRANCH="test/${PROD_BRANCH#prod/}"
341+ - git fetch origin $TEST_BRANCH || true
342+ - if git ls-remote --exit-code --heads origin $TEST_BRANCH; then
343+ git remote set-branches --add origin $TEST_BRANCH;
344+ git fetch origin $TEST_BRANCH;
345+ git checkout -b $TEST_BRANCH origin/$TEST_BRANCH;
346+ git merge --no-ff origin/$PROD_BRANCH -m "Merge $PROD_BRANCH into $TEST_BRANCH";
347+ git push https://${DSPACE_REPO_USER}:${DSPACE_REPO_TOKEN}@${DSPACE_ANGULAR_REPO} $TEST_BRANCH;
348+ else
349+ echo "Branch $TEST_BRANCH does not exist, no merge performed.";
350+ fi
351+
314352pipelines :
315353 custom :
316354 e2e-on-custom-backend :
@@ -323,13 +361,22 @@ pipelines:
323361 - step : *angular-build
324362 - step : *build-and-push
325363 - step : *deploy-on-dev
326- - step : *find-and-invalidate-cloudfront-dev
364+ - step : *find-cloudfront-dev
365+ - step : *invalidate-cloudfront
327366 deploy-on-staging :
328367 - step : *check-branch-name-allowed
329368 - step : *angular-build
330369 - step : *build-and-push
331370 - step : *deploy-on-staging
332- - step : *find-and-invalidate-cloudfront-staging
371+ - step : *find-cloudfront-staging
372+ - step : *invalidate-cloudfront
373+ deploy-on-test :
374+ - step : *check-branch-name-allowed
375+ - step : *angular-build
376+ - step : *build-and-push
377+ - step : *deploy-on-test
378+ - step : *find-cloudfront-test
379+ - step : *invalidate-cloudfront
333380 turn-on-dev :
334381 - step : *turn-on-dev
335382 turn-on-staging :
@@ -349,27 +396,33 @@ pipelines:
349396 - parallel : *parallel-run-tests
350397 - step : *build-and-push
351398 - step : *deploy-on-dev
352- - step : *find-and-invalidate-cloudfront-dev
399+ - step : *find-cloudfront-dev
400+ - step : *invalidate-cloudfront
353401 - step : *deploy-on-staging
354- - step : *find-and-invalidate-cloudfront-staging
355- ' prod/** ' :
402+ - step : *find-cloudfront-staging
403+ - step : *invalidate-cloudfront
404+ " prod/** " :
356405 - step : *check-branch-name-allowed
357406 - step : *preliminary-operation
358407 - step : *angular-build
359408 - parallel : *parallel-run-tests
360409 - step : *build-and-push
361410 - step : *deploy-on-dev
362- - step : *find-and-invalidate-cloudfront-dev
411+ - step : *find-cloudfront-dev
412+ - step : *invalidate-cloudfront
363413 - step : *deploy-on-staging
364- - step : *find-and-invalidate-cloudfront-staging
365- ' test/** ' :
414+ - step : *find-cloudfront-staging
415+ - step : *invalidate-cloudfront
416+ - step : *merge-prod-into-test
417+ " test/** " :
366418 - step : *check-branch-name-allowed
367419 - step : *preliminary-operation
368420 - step : *angular-build
369421 - parallel : *parallel-run-tests
370422 - step : *build-and-push
371423 - step : *deploy-on-test
372- - step : *find-and-invalidate-cloudfront-test
424+ - step : *find-cloudfront-test
425+ - step : *invalidate-cloudfront
373426
374427 pull-requests :
375428 ' ** ' :
0 commit comments