From 2e1cfc7163172d14c2a1e91bc82eb4e8f4d5141c Mon Sep 17 00:00:00 2001 From: ClemWttJ Date: Wed, 17 Jul 2024 12:17:08 +0200 Subject: [PATCH 1/6] Rework CI with clean slate --- .circleci/config.yml | 280 ++++++++++++++------------- .circleci/config_old.yml | 325 ++++++++++++++++++++++++++++++++ .github/workflows/demo-link.yml | 2 +- 3 files changed, 470 insertions(+), 137 deletions(-) create mode 100644 .circleci/config_old.yml diff --git a/.circleci/config.yml b/.circleci/config.yml index 33d5102a81..e92aa74710 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,81 +1,112 @@ -defaults: &defaults - working_directory: ~/welcome-ui - docker: - - image: cimg/node:18.17.1 - version: 2.1 +orbs: + aws-cli: circleci/aws-cli@4.1.3 + aws-s3: circleci/aws-s3@4.0.0 + parameters: cache_version: type: string - default: v4 + default: v5 + nodejs_base_image: + type: string + default: 'cimg/node:18.17.1' -orbs: - aws-s3: circleci/aws-s3@2.0.0 +executors: + nodejs: + docker: + - image: << pipeline.parameters.nodejs_base_image >> + docker_builder: + resource_class: medium + machine: + image: ubuntu-2204:current + +default: &default + working_directory: /home/circleci/welcome-ui + +checkout: &checkout + checkout: + path: /home/circleci/welcome-ui + +restore_node_modules: &restore_node_modules + restore_cache: + keys: + - << pipeline.parameters.cache_version >>-yarn-{{ checksum "/home/circleci/welcome-ui/yarn.lock" }} jobs: checkout: - <<: *defaults + <<: *default + executor: nodejs steps: - - checkout + - *checkout + - run: + name: Run yarn install and save node modules + command: yarn install + - *restore_node_modules - save_cache: - key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} + key: << pipeline.parameters.cache_version >>-yarn-{{ checksum "/home/circleci/welcome-ui/yarn.lock" }} paths: - - ~/welcome-ui + - ~/.cache/yarn + - ~/welcome-ui/node_modules + - ~/welcome-ui/website/node_modules - yarn_install: - <<: *defaults + vulnerabilities_yarn: + <<: *default + executor: nodejs + resource_class: small steps: - - restore_cache: - key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} - - run: yarn install - - store_artifacts: - path: yarn.lock + - *checkout + - *restore_node_modules + - attach_workspace: + at: ~/welcome-ui + - run: + name: Critical vulnerabilities (yarn audit), lib versions and missing deps + command: yarn check:audit && yarn check:libs && yarn check:deps + + build: + <<: *default + executor: nodejs + resource_class: xlarge + steps: + - *checkout + - *restore_node_modules + - run: yarn icons:build + - run: yarn build - persist_to_workspace: root: ~/welcome-ui paths: - - node_modules - - website/node_modules + - packages/**/dist + - packages/Themes/**/dist + - icons/dist + - packages/IconFont/fonts lint: - <<: *defaults + <<: *default + executor: nodejs steps: - - attach_workspace: - at: ~/welcome-ui - - restore_cache: - key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} + - *checkout + - *restore_node_modules - run: yarn lint test: - <<: *defaults + <<: *default + executor: nodejs parallelism: 4 steps: + - *checkout + - *restore_node_modules - attach_workspace: at: ~/welcome-ui - - restore_cache: - key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} - run: yarn jest --detectOpenHandles $(circleci tests glob "./packages/**/*.test.{ts,js,tsx}" | circleci tests split | xargs) - vulnerabilities_yarn: - <<: *defaults - docker: - - image: cimg/node:16.16.0 - steps: - - attach_workspace: - at: ~/welcome-ui - - restore_cache: - key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} - - run: - name: Critical vulnerabilities test (yarn audit) and check no missing or unused dependencies - command: yarn check:audit && yarn check:deps - build_and_release_icon_font: - <<: *defaults + <<: *default + executor: nodejs steps: + - *checkout + - *restore_node_modules - attach_workspace: at: ~/welcome-ui - - restore_cache: - key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} - run: yarn icons:collect --force - run: yarn webfont:build - run: @@ -84,6 +115,10 @@ jobs: echo "export ICON_FONT_HASH=$(sha1sum packages/IconFont/fonts/welcome-icon-font.woff2 | awk '{ print $1 }')" >> $BASH_ENV source $BASH_ENV yarn build:core + - aws-cli/setup: + aws_access_key_id: AWS_ACCESS_KEY_ID + aws_secret_access_key: AWS_SECRET_ACCESS_KEY + region: ${AWS_REGION} - aws-s3/sync: from: packages/IconFont/fonts to: s3://welcome-ui/public/fonts/icon-font/$ICON_FONT_HASH --cache-control 'public, max-age=31536000' --exclude '*' --include 'welcome-icon-font.woff' --include 'welcome-icon-font.woff2' @@ -95,32 +130,15 @@ jobs: arguments: | --metadata GitCommit=$CIRCLE_SHA1 --delete - build: - <<: *defaults - resource_class: xlarge - steps: - - attach_workspace: - at: ~/welcome-ui - - restore_cache: - key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} - - run: yarn icons:build - - run: yarn build - - persist_to_workspace: - root: ~/welcome-ui - paths: - - packages/**/dist - - packages/Themes/**/dist - - icons/dist - - packages/IconFont/fonts - # current version build (common to previews & prod) website_build: - <<: *defaults + <<: *default + executor: nodejs steps: + - *checkout + - *restore_node_modules - attach_workspace: at: ~/welcome-ui - - restore_cache: - key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} - run: yarn website:build - persist_to_workspace: root: ~/welcome-ui @@ -129,79 +147,90 @@ jobs: # current version deploy for previews website_deploy_preview: - <<: *defaults + <<: *default + executor: nodejs steps: + - *checkout + - *restore_node_modules - attach_workspace: at: ~/welcome-ui - - restore_cache: - key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} - - run: node_modules/.bin/netlify deploy --filter=website --dir=website/out --alias $CIRCLE_BRANCH + - aws-cli/setup: + aws_access_key_id: AWS_ACCESS_KEY_ID + aws_secret_access_key: AWS_SECRET_ACCESS_KEY + region: ${AWS_REGION} + - aws-s3/sync: + from: website/out + to: s3://welcome-ui/preprod/$(echo "$CIRCLE_BRANCH" | sed "s/[^[:alnum:]-]/-/g" | tr '[:upper:]' '[:lower:]' | cut -c -63) # current version deploy for production website_deploy_prod: - <<: *defaults + <<: *default + executor: nodejs steps: + - *checkout + - *restore_node_modules - attach_workspace: at: ~/welcome-ui - - restore_cache: - key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} + - aws-cli/setup: + aws_access_key_id: AWS_ACCESS_KEY_ID + aws_secret_access_key: AWS_SECRET_ACCESS_KEY + region: ${AWS_REGION} - aws-s3/sync: from: website/out to: s3://welcome-ui/docs_production arguments: | --metadata GitCommit=$CIRCLE_SHA1 - - aws-s3/sync: - from: s3://welcome-ui/docs_production - to: docs_production - - run: node_modules/.bin/netlify deploy --filter=website --dir=docs_production --prod # previous versions build & deploy for production previous_website_versions_build_deploy_prod: - <<: *defaults + <<: *default + executor: nodejs steps: + - *checkout + - *restore_node_modules - attach_workspace: at: ~/welcome-ui - - restore_cache: - key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} - run: name: build w/ prefix command: VERSION=$CIRCLE_BRANCH yarn website:build + - aws-cli/setup: + aws_access_key_id: AWS_ACCESS_KEY_ID + aws_secret_access_key: AWS_SECRET_ACCESS_KEY + region: ${AWS_REGION} - aws-s3/sync: from: website/out to: s3://welcome-ui/docs_production/$CIRCLE_BRANCH arguments: | --metadata GitCommit=$CIRCLE_SHA1 --delete - - aws-s3/sync: - from: s3://welcome-ui/docs_production - to: docs_production - - run: node_modules/.bin/netlify deploy --filter=website --dir=docs_production --prod release: - <<: *defaults + <<: *default + executor: nodejs steps: + - *checkout + - *restore_node_modules - attach_workspace: at: ~/welcome-ui - - restore_cache: - key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} - run: - name: login to registry + name: Login to registry command: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > ~/.npmrc - run: - name: release to npm + name: Release to npm command: yarn lerna publish from-git --yes --no-verify-access prerelease: - <<: *defaults + <<: *default + executor: nodejs steps: + - *checkout + - *restore_node_modules - attach_workspace: at: ~/welcome-ui - - restore_cache: - key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} - run: - name: login to registry + name: Login to registry command: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > ~/.npmrc - run: - name: release to npm + name: Release to npm command: yarn lerna publish from-git --yes --no-verify-access --dist-tag next workflows: @@ -211,97 +240,79 @@ workflows: filters: tags: only: /.*/ - - yarn_install: - filters: - tags: - only: /.*/ - requires: - - checkout - vulnerabilities_yarn: filters: tags: only: /.*/ requires: - - yarn_install - - build_and_release_icon_font: - filters: - tags: - only: /.*/ - context: - - aws - requires: - - lint - - test + - checkout - build: filters: tags: only: /.*/ requires: - - yarn_install + - checkout - lint: filters: tags: only: /.*/ requires: - - yarn_install - build - test: filters: tags: only: /.*/ requires: - - yarn_install - build + - build_and_release_icon_font: + filters: + tags: + only: /.*/ + context: + - aws + requires: + - lint + - test - website_build: filters: tags: only: /.*/ requires: - build - - website_deploy_prod: + - website_deploy_preview: context: - aws - - netlify - welcome-ui + requires: + - website_build + - build_and_release_icon_font + - website_deploy_prod: filters: branches: ignore: /.*/ tags: only: /v5.(\d\d|\d).(\d\d|\d)/ - requires: - - test - - lint - - website_build - - build_and_release_icon_font - - website_deploy_preview: context: - - netlify + - aws - welcome-ui requires: - - test - - lint - website_build - build_and_release_icon_font - previous_website_versions_build_deploy_prod: - context: - - aws - - netlify - - welcome-ui filters: # should add branches here to keep previous doc version of future majors branches: only: /v3|v4/ + context: + - aws + - welcome-ui requires: - - test - - lint - build - build_and_release_icon_font - release: context: - welcome-ui requires: - - test - - lint - build - build_and_release_icon_font filters: @@ -309,17 +320,14 @@ workflows: ignore: /.*/ tags: only: /v\d.(\d\d|\d).(\d\d|\d)/ - - prerelease: context: - welcome-ui requires: - - test - - lint - build - build_and_release_icon_font filters: branches: ignore: /.*/ tags: - only: /v\d.(\d\d|\d).(\d\d|\d)-.*/ + only: /v\d.(\d\d|\d).(\d\d|\d)-.*/ \ No newline at end of file diff --git a/.circleci/config_old.yml b/.circleci/config_old.yml new file mode 100644 index 0000000000..33d5102a81 --- /dev/null +++ b/.circleci/config_old.yml @@ -0,0 +1,325 @@ +defaults: &defaults + working_directory: ~/welcome-ui + docker: + - image: cimg/node:18.17.1 + +version: 2.1 + +parameters: + cache_version: + type: string + default: v4 + +orbs: + aws-s3: circleci/aws-s3@2.0.0 + +jobs: + checkout: + <<: *defaults + steps: + - checkout + - save_cache: + key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} + paths: + - ~/welcome-ui + + yarn_install: + <<: *defaults + steps: + - restore_cache: + key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} + - run: yarn install + - store_artifacts: + path: yarn.lock + - persist_to_workspace: + root: ~/welcome-ui + paths: + - node_modules + - website/node_modules + + lint: + <<: *defaults + steps: + - attach_workspace: + at: ~/welcome-ui + - restore_cache: + key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} + - run: yarn lint + + test: + <<: *defaults + parallelism: 4 + steps: + - attach_workspace: + at: ~/welcome-ui + - restore_cache: + key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} + - run: yarn jest --detectOpenHandles $(circleci tests glob "./packages/**/*.test.{ts,js,tsx}" | circleci tests split | xargs) + + vulnerabilities_yarn: + <<: *defaults + docker: + - image: cimg/node:16.16.0 + steps: + - attach_workspace: + at: ~/welcome-ui + - restore_cache: + key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} + - run: + name: Critical vulnerabilities test (yarn audit) and check no missing or unused dependencies + command: yarn check:audit && yarn check:deps + + build_and_release_icon_font: + <<: *defaults + steps: + - attach_workspace: + at: ~/welcome-ui + - restore_cache: + key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} + - run: yarn icons:collect --force + - run: yarn webfont:build + - run: + name: prepare font hash + command: | + echo "export ICON_FONT_HASH=$(sha1sum packages/IconFont/fonts/welcome-icon-font.woff2 | awk '{ print $1 }')" >> $BASH_ENV + source $BASH_ENV + yarn build:core + - aws-s3/sync: + from: packages/IconFont/fonts + to: s3://welcome-ui/public/fonts/icon-font/$ICON_FONT_HASH --cache-control 'public, max-age=31536000' --exclude '*' --include 'welcome-icon-font.woff' --include 'welcome-icon-font.woff2' + arguments: | + --metadata GitCommit=$CIRCLE_SHA1 --delete + - aws-s3/sync: + from: packages/IconFont/fonts + to: s3://wttj-production/fonts/icon-font/$ICON_FONT_HASH --cache-control 'public, max-age=31536000' --exclude '*' --include 'welcome-icon-font.woff' --include 'welcome-icon-font.woff2' + arguments: | + --metadata GitCommit=$CIRCLE_SHA1 --delete + + build: + <<: *defaults + resource_class: xlarge + steps: + - attach_workspace: + at: ~/welcome-ui + - restore_cache: + key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} + - run: yarn icons:build + - run: yarn build + - persist_to_workspace: + root: ~/welcome-ui + paths: + - packages/**/dist + - packages/Themes/**/dist + - icons/dist + - packages/IconFont/fonts + + # current version build (common to previews & prod) + website_build: + <<: *defaults + steps: + - attach_workspace: + at: ~/welcome-ui + - restore_cache: + key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} + - run: yarn website:build + - persist_to_workspace: + root: ~/welcome-ui + paths: + - website/out + + # current version deploy for previews + website_deploy_preview: + <<: *defaults + steps: + - attach_workspace: + at: ~/welcome-ui + - restore_cache: + key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} + - run: node_modules/.bin/netlify deploy --filter=website --dir=website/out --alias $CIRCLE_BRANCH + + # current version deploy for production + website_deploy_prod: + <<: *defaults + steps: + - attach_workspace: + at: ~/welcome-ui + - restore_cache: + key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} + - aws-s3/sync: + from: website/out + to: s3://welcome-ui/docs_production + arguments: | + --metadata GitCommit=$CIRCLE_SHA1 + - aws-s3/sync: + from: s3://welcome-ui/docs_production + to: docs_production + - run: node_modules/.bin/netlify deploy --filter=website --dir=docs_production --prod + + # previous versions build & deploy for production + previous_website_versions_build_deploy_prod: + <<: *defaults + steps: + - attach_workspace: + at: ~/welcome-ui + - restore_cache: + key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} + - run: + name: build w/ prefix + command: VERSION=$CIRCLE_BRANCH yarn website:build + - aws-s3/sync: + from: website/out + to: s3://welcome-ui/docs_production/$CIRCLE_BRANCH + arguments: | + --metadata GitCommit=$CIRCLE_SHA1 --delete + - aws-s3/sync: + from: s3://welcome-ui/docs_production + to: docs_production + - run: node_modules/.bin/netlify deploy --filter=website --dir=docs_production --prod + + release: + <<: *defaults + steps: + - attach_workspace: + at: ~/welcome-ui + - restore_cache: + key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} + - run: + name: login to registry + command: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > ~/.npmrc + - run: + name: release to npm + command: yarn lerna publish from-git --yes --no-verify-access + + prerelease: + <<: *defaults + steps: + - attach_workspace: + at: ~/welcome-ui + - restore_cache: + key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} + - run: + name: login to registry + command: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > ~/.npmrc + - run: + name: release to npm + command: yarn lerna publish from-git --yes --no-verify-access --dist-tag next + +workflows: + btd: + jobs: + - checkout: + filters: + tags: + only: /.*/ + - yarn_install: + filters: + tags: + only: /.*/ + requires: + - checkout + - vulnerabilities_yarn: + filters: + tags: + only: /.*/ + requires: + - yarn_install + - build_and_release_icon_font: + filters: + tags: + only: /.*/ + context: + - aws + requires: + - lint + - test + - build: + filters: + tags: + only: /.*/ + requires: + - yarn_install + - lint: + filters: + tags: + only: /.*/ + requires: + - yarn_install + - build + - test: + filters: + tags: + only: /.*/ + requires: + - yarn_install + - build + - website_build: + filters: + tags: + only: /.*/ + requires: + - build + - website_deploy_prod: + context: + - aws + - netlify + - welcome-ui + filters: + branches: + ignore: /.*/ + tags: + only: /v5.(\d\d|\d).(\d\d|\d)/ + requires: + - test + - lint + - website_build + - build_and_release_icon_font + - website_deploy_preview: + context: + - netlify + - welcome-ui + requires: + - test + - lint + - website_build + - build_and_release_icon_font + - previous_website_versions_build_deploy_prod: + context: + - aws + - netlify + - welcome-ui + filters: + # should add branches here to keep previous doc version of future majors + branches: + only: /v3|v4/ + requires: + - test + - lint + - build + - build_and_release_icon_font + - release: + context: + - welcome-ui + requires: + - test + - lint + - build + - build_and_release_icon_font + filters: + branches: + ignore: /.*/ + tags: + only: /v\d.(\d\d|\d).(\d\d|\d)/ + + - prerelease: + context: + - welcome-ui + requires: + - test + - lint + - build + - build_and_release_icon_font + filters: + branches: + ignore: /.*/ + tags: + only: /v\d.(\d\d|\d).(\d\d|\d)-.*/ diff --git a/.github/workflows/demo-link.yml b/.github/workflows/demo-link.yml index dc518d6141..02de452590 100644 --- a/.github/workflows/demo-link.yml +++ b/.github/workflows/demo-link.yml @@ -24,5 +24,5 @@ jobs: owner: context.repo.owner, repo: context.repo.repo, issue_number: pullRequestId, - body: `👀 [Visit Preview](https://${pullRequestBranch}--welcome-ui.netlify.app)` + body: `👀 [Visit Preview](https://${pullRequestBranch}.preprod.welcome-ui.com)` }); From 0f0d7825bdaf1732db673f97cf019322c015d7d0 Mon Sep 17 00:00:00 2001 From: ClemWttJ Date: Wed, 17 Jul 2024 16:15:49 +0200 Subject: [PATCH 2/6] Retry with another node image --- .circleci/config.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index e92aa74710..66b7befb24 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -11,11 +11,17 @@ parameters: nodejs_base_image: type: string default: 'cimg/node:18.17.1' + nodejs_test_base_image: + type: string + default: 'cimg/node:16.16.0' executors: nodejs: docker: - image: << pipeline.parameters.nodejs_base_image >> + nodejs_test: + docker: + - image: << pipeline.parameters.nodejs_test_base_image >> docker_builder: resource_class: medium machine: @@ -52,7 +58,7 @@ jobs: vulnerabilities_yarn: <<: *default - executor: nodejs + executor: nodejs_test resource_class: small steps: - *checkout @@ -86,6 +92,8 @@ jobs: steps: - *checkout - *restore_node_modules + - attach_workspace: + at: ~/welcome-ui - run: yarn lint test: From 2843acc222a8589ed50861340ec15139dadcc17c Mon Sep 17 00:00:00 2001 From: ClemWttJ Date: Wed, 17 Jul 2024 16:39:19 +0200 Subject: [PATCH 3/6] Correct branch name processing --- .circleci/config.yml | 19 ++- .circleci/config_old.yml | 325 --------------------------------------- 2 files changed, 9 insertions(+), 335 deletions(-) delete mode 100644 .circleci/config_old.yml diff --git a/.circleci/config.yml b/.circleci/config.yml index 66b7befb24..da8727f9a4 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -11,17 +11,11 @@ parameters: nodejs_base_image: type: string default: 'cimg/node:18.17.1' - nodejs_test_base_image: - type: string - default: 'cimg/node:16.16.0' executors: nodejs: docker: - image: << pipeline.parameters.nodejs_base_image >> - nodejs_test: - docker: - - image: << pipeline.parameters.nodejs_test_base_image >> docker_builder: resource_class: medium machine: @@ -58,7 +52,7 @@ jobs: vulnerabilities_yarn: <<: *default - executor: nodejs_test + executor: nodejs resource_class: small steps: - *checkout @@ -67,7 +61,7 @@ jobs: at: ~/welcome-ui - run: name: Critical vulnerabilities (yarn audit), lib versions and missing deps - command: yarn check:audit && yarn check:libs && yarn check:deps + command: yarn check:audit && yarn check:deps build: <<: *default @@ -118,7 +112,7 @@ jobs: - run: yarn icons:collect --force - run: yarn webfont:build - run: - name: prepare font hash + name: Prepare font hash command: | echo "export ICON_FONT_HASH=$(sha1sum packages/IconFont/fonts/welcome-icon-font.woff2 | awk '{ print $1 }')" >> $BASH_ENV source $BASH_ENV @@ -166,9 +160,14 @@ jobs: aws_access_key_id: AWS_ACCESS_KEY_ID aws_secret_access_key: AWS_SECRET_ACCESS_KEY region: ${AWS_REGION} + - run: + name: Process branch name + command: | + echo "PROCESSED_BRANCH=$(echo "$CIRCLE_BRANCH" | sed "s/[^[:alnum:]-]/-/g" | tr '[:upper:]' '[:lower:]' | cut -c -63)" >> $BASH_ENV + source $BASH_ENV - aws-s3/sync: from: website/out - to: s3://welcome-ui/preprod/$(echo "$CIRCLE_BRANCH" | sed "s/[^[:alnum:]-]/-/g" | tr '[:upper:]' '[:lower:]' | cut -c -63) + to: s3://welcome-ui/preprod/$PROCESSED_BRANCH # current version deploy for production website_deploy_prod: diff --git a/.circleci/config_old.yml b/.circleci/config_old.yml deleted file mode 100644 index 33d5102a81..0000000000 --- a/.circleci/config_old.yml +++ /dev/null @@ -1,325 +0,0 @@ -defaults: &defaults - working_directory: ~/welcome-ui - docker: - - image: cimg/node:18.17.1 - -version: 2.1 - -parameters: - cache_version: - type: string - default: v4 - -orbs: - aws-s3: circleci/aws-s3@2.0.0 - -jobs: - checkout: - <<: *defaults - steps: - - checkout - - save_cache: - key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} - paths: - - ~/welcome-ui - - yarn_install: - <<: *defaults - steps: - - restore_cache: - key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} - - run: yarn install - - store_artifacts: - path: yarn.lock - - persist_to_workspace: - root: ~/welcome-ui - paths: - - node_modules - - website/node_modules - - lint: - <<: *defaults - steps: - - attach_workspace: - at: ~/welcome-ui - - restore_cache: - key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} - - run: yarn lint - - test: - <<: *defaults - parallelism: 4 - steps: - - attach_workspace: - at: ~/welcome-ui - - restore_cache: - key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} - - run: yarn jest --detectOpenHandles $(circleci tests glob "./packages/**/*.test.{ts,js,tsx}" | circleci tests split | xargs) - - vulnerabilities_yarn: - <<: *defaults - docker: - - image: cimg/node:16.16.0 - steps: - - attach_workspace: - at: ~/welcome-ui - - restore_cache: - key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} - - run: - name: Critical vulnerabilities test (yarn audit) and check no missing or unused dependencies - command: yarn check:audit && yarn check:deps - - build_and_release_icon_font: - <<: *defaults - steps: - - attach_workspace: - at: ~/welcome-ui - - restore_cache: - key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} - - run: yarn icons:collect --force - - run: yarn webfont:build - - run: - name: prepare font hash - command: | - echo "export ICON_FONT_HASH=$(sha1sum packages/IconFont/fonts/welcome-icon-font.woff2 | awk '{ print $1 }')" >> $BASH_ENV - source $BASH_ENV - yarn build:core - - aws-s3/sync: - from: packages/IconFont/fonts - to: s3://welcome-ui/public/fonts/icon-font/$ICON_FONT_HASH --cache-control 'public, max-age=31536000' --exclude '*' --include 'welcome-icon-font.woff' --include 'welcome-icon-font.woff2' - arguments: | - --metadata GitCommit=$CIRCLE_SHA1 --delete - - aws-s3/sync: - from: packages/IconFont/fonts - to: s3://wttj-production/fonts/icon-font/$ICON_FONT_HASH --cache-control 'public, max-age=31536000' --exclude '*' --include 'welcome-icon-font.woff' --include 'welcome-icon-font.woff2' - arguments: | - --metadata GitCommit=$CIRCLE_SHA1 --delete - - build: - <<: *defaults - resource_class: xlarge - steps: - - attach_workspace: - at: ~/welcome-ui - - restore_cache: - key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} - - run: yarn icons:build - - run: yarn build - - persist_to_workspace: - root: ~/welcome-ui - paths: - - packages/**/dist - - packages/Themes/**/dist - - icons/dist - - packages/IconFont/fonts - - # current version build (common to previews & prod) - website_build: - <<: *defaults - steps: - - attach_workspace: - at: ~/welcome-ui - - restore_cache: - key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} - - run: yarn website:build - - persist_to_workspace: - root: ~/welcome-ui - paths: - - website/out - - # current version deploy for previews - website_deploy_preview: - <<: *defaults - steps: - - attach_workspace: - at: ~/welcome-ui - - restore_cache: - key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} - - run: node_modules/.bin/netlify deploy --filter=website --dir=website/out --alias $CIRCLE_BRANCH - - # current version deploy for production - website_deploy_prod: - <<: *defaults - steps: - - attach_workspace: - at: ~/welcome-ui - - restore_cache: - key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} - - aws-s3/sync: - from: website/out - to: s3://welcome-ui/docs_production - arguments: | - --metadata GitCommit=$CIRCLE_SHA1 - - aws-s3/sync: - from: s3://welcome-ui/docs_production - to: docs_production - - run: node_modules/.bin/netlify deploy --filter=website --dir=docs_production --prod - - # previous versions build & deploy for production - previous_website_versions_build_deploy_prod: - <<: *defaults - steps: - - attach_workspace: - at: ~/welcome-ui - - restore_cache: - key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} - - run: - name: build w/ prefix - command: VERSION=$CIRCLE_BRANCH yarn website:build - - aws-s3/sync: - from: website/out - to: s3://welcome-ui/docs_production/$CIRCLE_BRANCH - arguments: | - --metadata GitCommit=$CIRCLE_SHA1 --delete - - aws-s3/sync: - from: s3://welcome-ui/docs_production - to: docs_production - - run: node_modules/.bin/netlify deploy --filter=website --dir=docs_production --prod - - release: - <<: *defaults - steps: - - attach_workspace: - at: ~/welcome-ui - - restore_cache: - key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} - - run: - name: login to registry - command: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > ~/.npmrc - - run: - name: release to npm - command: yarn lerna publish from-git --yes --no-verify-access - - prerelease: - <<: *defaults - steps: - - attach_workspace: - at: ~/welcome-ui - - restore_cache: - key: << pipeline.parameters.cache_version >>-welcome-ui-{{ .Environment.CIRCLE_SHA1 }} - - run: - name: login to registry - command: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > ~/.npmrc - - run: - name: release to npm - command: yarn lerna publish from-git --yes --no-verify-access --dist-tag next - -workflows: - btd: - jobs: - - checkout: - filters: - tags: - only: /.*/ - - yarn_install: - filters: - tags: - only: /.*/ - requires: - - checkout - - vulnerabilities_yarn: - filters: - tags: - only: /.*/ - requires: - - yarn_install - - build_and_release_icon_font: - filters: - tags: - only: /.*/ - context: - - aws - requires: - - lint - - test - - build: - filters: - tags: - only: /.*/ - requires: - - yarn_install - - lint: - filters: - tags: - only: /.*/ - requires: - - yarn_install - - build - - test: - filters: - tags: - only: /.*/ - requires: - - yarn_install - - build - - website_build: - filters: - tags: - only: /.*/ - requires: - - build - - website_deploy_prod: - context: - - aws - - netlify - - welcome-ui - filters: - branches: - ignore: /.*/ - tags: - only: /v5.(\d\d|\d).(\d\d|\d)/ - requires: - - test - - lint - - website_build - - build_and_release_icon_font - - website_deploy_preview: - context: - - netlify - - welcome-ui - requires: - - test - - lint - - website_build - - build_and_release_icon_font - - previous_website_versions_build_deploy_prod: - context: - - aws - - netlify - - welcome-ui - filters: - # should add branches here to keep previous doc version of future majors - branches: - only: /v3|v4/ - requires: - - test - - lint - - build - - build_and_release_icon_font - - release: - context: - - welcome-ui - requires: - - test - - lint - - build - - build_and_release_icon_font - filters: - branches: - ignore: /.*/ - tags: - only: /v\d.(\d\d|\d).(\d\d|\d)/ - - - prerelease: - context: - - welcome-ui - requires: - - test - - lint - - build - - build_and_release_icon_font - filters: - branches: - ignore: /.*/ - tags: - only: /v\d.(\d\d|\d).(\d\d|\d)-.*/ From fe5dff26468b2dbbc29ec2b46392d260024ba70d Mon Sep 17 00:00:00 2001 From: ClemWttJ Date: Wed, 17 Jul 2024 16:59:39 +0200 Subject: [PATCH 4/6] Retry with tweeking process branch name --- .circleci/config.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index da8727f9a4..ae401dc24b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -163,11 +163,10 @@ jobs: - run: name: Process branch name command: | - echo "PROCESSED_BRANCH=$(echo "$CIRCLE_BRANCH" | sed "s/[^[:alnum:]-]/-/g" | tr '[:upper:]' '[:lower:]' | cut -c -63)" >> $BASH_ENV - source $BASH_ENV + echo "export PROCESSED_BRANCH=$(echo "$CIRCLE_BRANCH" | sed "s/[^[:alnum:]-]/-/g" | tr '[:upper:]' '[:lower:]' | cut -c -63)" >> $BASH_ENV - aws-s3/sync: from: website/out - to: s3://welcome-ui/preprod/$PROCESSED_BRANCH + to: s3://welcome-ui/preprod/${PROCESSED_BRANCH} # current version deploy for production website_deploy_prod: From c0dbaafde10258f1f54fe50ceb8335edf6c91af8 Mon Sep 17 00:00:00 2001 From: ClemWttJ Date: Wed, 17 Jul 2024 17:45:44 +0200 Subject: [PATCH 5/6] Update branch name for github action --- .github/workflows/demo-link.yml | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/.github/workflows/demo-link.yml b/.github/workflows/demo-link.yml index 02de452590..c027e014e3 100644 --- a/.github/workflows/demo-link.yml +++ b/.github/workflows/demo-link.yml @@ -2,7 +2,7 @@ name: Demo link on: pull_request_target: - types: [opened] + types: [opened, synchronize] jobs: add_demo_link: @@ -13,16 +13,24 @@ jobs: permissions: pull-requests: write steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Set up GitHub context + id: context + run: | + echo "BRANCH_NAME=$(echo ${GITHUB_HEAD_REF} | sed 's/[^[:alnum:]-]/-/g' | tr '[:upper:]' '[:lower:]' | cut -c -63)" >> $GITHUB_ENV + - name: Update PR description uses: actions/github-script@v6 with: script: | + const branchName = process.env.BRANCH_NAME; const pullRequestId = context.payload.pull_request.number - const pullRequestBranch = context.payload.pull_request.head.ref github.rest.issues.createComment({ owner: context.repo.owner, repo: context.repo.repo, issue_number: pullRequestId, - body: `👀 [Visit Preview](https://${pullRequestBranch}.preprod.welcome-ui.com)` + body: `👀 [Visit Preview](https://${branchName}.preprod.welcome-ui.com)` }); From ff0372eb6eee686691d6582e6ad7c9c62afe0735 Mon Sep 17 00:00:00 2001 From: ClemWttJ Date: Tue, 23 Jul 2024 14:18:46 +0200 Subject: [PATCH 6/6] Update link with preview --- .circleci/config.yml | 2 +- .github/workflows/demo-link.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index ae401dc24b..de76781041 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -166,7 +166,7 @@ jobs: echo "export PROCESSED_BRANCH=$(echo "$CIRCLE_BRANCH" | sed "s/[^[:alnum:]-]/-/g" | tr '[:upper:]' '[:lower:]' | cut -c -63)" >> $BASH_ENV - aws-s3/sync: from: website/out - to: s3://welcome-ui/preprod/${PROCESSED_BRANCH} + to: s3://welcome-ui/preview/${PROCESSED_BRANCH} # current version deploy for production website_deploy_prod: diff --git a/.github/workflows/demo-link.yml b/.github/workflows/demo-link.yml index c027e014e3..c362dfcd23 100644 --- a/.github/workflows/demo-link.yml +++ b/.github/workflows/demo-link.yml @@ -32,5 +32,5 @@ jobs: owner: context.repo.owner, repo: context.repo.repo, issue_number: pullRequestId, - body: `👀 [Visit Preview](https://${branchName}.preprod.welcome-ui.com)` + body: `👀 [Visit Preview](https://${branchName}.preview.welcome-ui.com)` });