diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6c505f590a852e710b630682ef658e453e2244a5..6a2e0305f33a780bedbe30d8c9aee4dfb132b718 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,7 +2,7 @@ image: shiplogic/ci-wp-plugin:node18 variables: GIT_SUBMODULE_STRATEGY: recursive - MAX_TAGS_TO_KEEP: 5 # Number of most recent tag versions to keep + MAX_TAGS_TO_KEEP: 5 stages: - deploy @@ -10,9 +10,6 @@ stages: deploy: stage: deploy - rules: - - if: '$CI_COMMIT_BRANCH == "dev" && $CI_PIPELINE_SOURCE == "push"' - when: always before_script: - AWS_ACCESS_KEY_ID_KEY=$(echo "${CI_COMMIT_BRANCH}_AWS_ACCESS_KEY_ID") - AWS_ACCESS_KEY_ID=$(eval echo -e "\$$AWS_ACCESS_KEY_ID_KEY") @@ -23,53 +20,29 @@ deploy: script: - ./make-zip.sh - aws s3 cp bobgo-magento-plugin.zip s3://bobgo-s3-magento-plugin-dev/ --region=af-south-1 + rules: + - if: '$CI_COMMIT_BRANCH == "dev" && $CI_PIPELINE_SOURCE == "push"' + when: always tag_deploy: stage: tag_deploy - image: shiplogic/ci-wp-plugin:node18 before_script: - # Export AWS credentials for prod branch (since tags are created from prod) - AWS_ACCESS_KEY_ID_KEY="prod_AWS_ACCESS_KEY_ID" - AWS_SECRET_ACCESS_KEY_KEY="prod_AWS_SECRET_ACCESS_KEY" - AWS_ACCESS_KEY_ID=$(eval echo -e "\$$AWS_ACCESS_KEY_ID_KEY") - AWS_SECRET_ACCESS_KEY=$(eval echo -e "\$$AWS_SECRET_ACCESS_KEY_KEY") - export AWS_ACCESS_KEY_ID - export AWS_SECRET_ACCESS_KEY - - # Check if variables are set (without exposing values) - - if [ -z "$AWS_ACCESS_KEY_ID" ]; then echo "AWS_ACCESS_KEY_ID is empty"; else echo "AWS_ACCESS_KEY_ID is set"; fi - - if [ -z "$AWS_SECRET_ACCESS_KEY" ]; then echo "AWS_SECRET_ACCESS_KEY is empty"; else echo "AWS_SECRET_ACCESS_KEY is set"; fi - - # Verify tag was created from prod branch - git fetch origin prod - COMMIT_BRANCH=$(git branch -r --contains $CI_COMMIT_SHA | grep "origin/prod" || echo "") - if [ -z "$COMMIT_BRANCH" ]; then echo "Tag was not created from prod branch. Skipping deployment."; exit 1; fi script: - # Download the tagged version archive - TAG_ARCHIVE_URL="https://gitlab.bob.co.za/bob-public-utils/bobgo-magento-extension/-/archive/${CI_COMMIT_TAG}/bobgo-magento-extension-${CI_COMMIT_TAG}.zip" - curl -o "bobgo-magento-extension-${CI_COMMIT_TAG}.zip" "$TAG_ARCHIVE_URL" - - # Upload to S3 bucket both as versioned and as "latest" - aws s3 cp "bobgo-magento-extension-${CI_COMMIT_TAG}.zip" "s3://bobgo-s3-magento-plugin-prod/tags/bobgo-magento-extension-${CI_COMMIT_TAG}.zip" --region=af-south-1 --acl public-read - aws s3 cp "bobgo-magento-extension-${CI_COMMIT_TAG}.zip" "s3://bobgo-s3-magento-plugin-prod/latest/latest.zip" --region=af-south-1 --acl public-read - - # Cleanup old tag versions - keep only the most recent MAX_TAGS_TO_KEEP - - echo "Cleaning up old tag versions, keeping only the most recent $MAX_TAGS_TO_KEEP..." - - aws s3 ls s3://bobgo-s3-magento-plugin-prod/tags/ --region=af-south-1 > tag_list.txt - - grep "bobgo-magento-extension-" tag_list.txt > filtered_tags.txt - - sort -r filtered_tags.txt > sorted_tags.txt - - tail -n +$((MAX_TAGS_TO_KEEP + 1)) sorted_tags.txt > tags_to_delete.txt - - cat tags_to_delete.txt | awk '{print $4}' > keys_to_delete.txt - - | - while read KEY; do - echo "Deleting old tag version: $KEY" - aws s3 rm "s3://bobgo-s3-magento-plugin-prod/tags/$KEY" --region=af-south-1 - done < keys_to_delete.txt - - # Output the URLs - echo "Tagged version URL: https://bobgo-s3-magento-plugin-prod.s3.af-south-1.amazonaws.com/tags/bobgo-magento-extension-${CI_COMMIT_TAG}.zip" - echo "Latest version URL: https://bobgo-s3-magento-plugin-prod.s3.af-south-1.amazonaws.com/latest/latest.zip" - - echo "Retained the latest $MAX_TAGS_TO_KEEP tag versions in S3 bucket." rules: - if: '$CI_COMMIT_TAG' when: always \ No newline at end of file