繁体   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