簡體   English   中英

CircleCI 部署到 AWS EC2

[英]CircleCI deploy to AWS EC2

我找不到任何好的和易於理解的 CircleCI 配置示例來構建和部署到 AWS EC2 實例。 這是我到目前為止所擁有的:

.circleci/config.yml

version: 2
jobs:
    build:
        docker:
            - image: circleci/node:10.7
        steps:
            - checkout
            - restore_cache:
                keys:
                    - v1-dependencies-{{ checksum "package.json" }}
                    - v1-dependencies-
            - run:
                name: Install dependencies
                command: npm install
            - save_cache:
                key: v1-dependencies-{{ checksum "package.json" }}
                paths:
                    - node_modules
            - run:
                name: Lint code
                command: npm run lint
            - run:
                name: Build app
                command: npm run build
            - save_cache:
                key: v1-build-{{ .Environment.CIRCLE_BRANCH }}-{{ .Environment.CIRCLE_SHA1 }}
                paths:
                    - .next
    deploy:
        docker:
            - image: circleci/node:10.7
        steps:
            - run:
                name: Deploy production
                command: ?
workflows:
    version: 2
    build_and_deploy:
        jobs:
            - build
            - deploy:
                requires:
                    - build

到目前為止,整個構建步驟運行良好,成功進入部署步驟。 但是,當正在構建的分支是master時,如何將構建部署到我的 EC2 服務器上的文件夾?

這篇文章中,你可以使用這個 config.yml 設置:

version: 2
general:
  branches:
    only:
      - dev
      - staging
      - prod
jobs:
  build:
    docker:
      - image: circleci/openjdk:8-jdk
    steps:
      - checkout
      - run:
          name: Deploy
          command: |
            # 1- Install AWS CLI
            curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
            unzip awscli-bundle.zip
            ./awscli-bundle/install -b ~/bin/aws
            # 2- Get the public IP of the current CircleCI runner
            PUBLIC_IP=$(curl ipinfo.io/ip)
            # 3- Get AWS Region# TODO Don't forget to replcae by your own Region
            AWS_REGION=us-east-2
            # 4- Get SG ID# TODO Don't forget to replace by your own SG ID
            SG_ID=sg-XXXXXXXX
            # 5- Add an ingress rule to the security group
            ~/bin/aws ec2 authorize-security-group-ingress --region $AWS_REGION --group-id $SG_ID \
              --protocol tcp --port 22 --cidr $PUBLIC_IP/24
            # 6- Give the ingress rule some time to propogate
            sleep 5
            # 7- SSH to the server to deploy
            # TODO Change to your username
            EC2_USERNAME=ubuntu
            # TODO Change to your server's URL or public IP
            EC2_PUBLIC_DNS=application-server.example.com
            ssh -o StrictHostKeyChecking=no $EC2_USERNAME@$EC2_PUBLIC_DNS \
            # other commands
            # TODO Perform steps to deploy
            # .
            # .
            # .
            # 8- Remove the ingress rule
            ~/bin/aws ec2 revoke-security-group-ingress --region $AWS_REGION --group-id $SG_ID \
              --protocol tcp --port 22 --cidr $PUBLIC_IP/24

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM