CircleCI — node.js сайт деплой на AWS S3 Bucket

 

Пример сборки статического сайта на node.js, деплой артефактов в S3 Bucket и инвалидация кеша в CloudFront'е.

version: 2
jobs:
  build:
    working_directory: ~/source
    docker:
      - image: circleci/node:10
    steps:
      - checkout
      - restore_cache: # special step to restore the dependency cache
          key: dependency-cache-{{ checksum "package.json" }}
      - run:
          name: Replace ENV file
          command: cp .env.staging .env
      - run:
          name: Setup Dependencies
          command: yarn
      - run:
          name: Build static files
          command: yarn build
      - persist_to_workspace:
          root: ~/source
          paths:
            - .

  deploy:
    docker:
      - image: circleci/python:2.7
    working_directory: ~/source
    environment:
      BUCKET: artem-services-bucket
      DISTRIBUTION_ID: XXXXXXXXXXXXX
    steps:
      - attach_workspace:
          at: ~/source
      - run:
          name: Install AWS Cli
          command: sudo pip install awscli
      - run:
          name: Deploy
          command: aws s3 sync build/ s3://${BUCKET} --region eu-central-1 --delete
      - run:
          name: CloudFront invalidation
          command: aws cloudfront create-invalidation --distribution-id=${DISTRIBUTION_ID} --paths '/index.html'

workflows:
  version: 2
  build-and-deploy:
    jobs:
      - build:
          filters:
            branches:
              only: staging
      - deploy:
          requires:
            - build
          filters:
            branches:
              only: staging

 

Переменные:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY

указаны в переменных CircleCI, в целях безопасности.

 

IAM Policy для инвалидации кеша можно посмотреть тут.

0 0 vote
Рейтинг статьи

Метки: Метки

Подписаться
Уведомление о
guest
0 комментариев
Inline Feedbacks
View all comments