GitHub에 Commit하여 CircleCI를 시작하고 S3 정적 사이트를 업데이트하는 프로젝트를 만들려고했습니다.

3420 단어 CircleCIGitHubAWS

목적



CircleCI와 GitHub의 캐치업을 위해 지난번 만든 S3 정적 사이트를 업데이트하는 CD 환경을 만들어 보았습니다.

구성도





흐름



1.GitHub 준비
2. CircleCI와 GitHub와 S3의 협력
3. 검증

1.GitHub 준비



S3와 로컬로 저장했기 때문에 휴면하던 GitHub 계정을 부활시켜 로컬 Git과 연결했습니다.
htps : // 에 mpぉ y 면 t. 엔 - 그럼. 코m/엔기네 r후 b/엔트리/2017/01/31/110000

2. CircleCI와 GitHub와 S3의 협력



@kenta_ojapi 씨의 기사를 참고로 했습니다. 고마워요.
htps : // 코 m / 켄타 _ 오자 피 / ms / 221 d147944b87 네 479

검증에서의 인식



1. 숨겨진 파일도 함께 S3에 저장됩니다.



프로시저의 yaml 파일을 그대로 이용시켜 주시고 S3와 aws s3 sync 명령을 움직일 수 있었습니다만, 숨겨진 파일의 .git 파일과 .circleci 파일도 동시에 보존되었습니다.

그래서 조금 조사해, S3 sync의 옵션에 「--exclude」라고 하는 것이 있었습니다. .

config.yml
version: 2
jobs:
  build:
    working_directory: ~/repo
    environment:
      - AWS_S3_BUCKET_NAME: my-bucket-name
      - AWS_S3_BUCKET_EXCLUDE: .*/*
    docker:
      - image: innovatorjapan/awscli:latest
    steps:
      - checkout
      - run:
          name: Deploy to S3 if branch is Master.
          command: |
            if [ "${CIRCLE_BRANCH}" == "master" ]; then
              aws s3 sync ~/repo s3://${AWS_S3_BUCKET_NAME}/ --exact-timestamps --delete  --exclude "${AWS_S3_BUCKET_EXCLUDE}"
            fi

2. 환경 매개 변수 값 앞에 반각 공간이 필요



이것은 CircleCi 에러에서 발견된 실수이지만, 'AWS_S3_BUCKET_NAME:my-bucket-name' 대신 'AWS_S3_BUCKET_NAME: my-bucket-name'과 같이 파라미터 값 앞에 반각 공백이 필요했습니다.

미래에 대해



Test 환경과 프로덕션 환경의 master/branch에 대한 Push의 거동에 맞추어 배포처를 변경하는 CircleCI의 설정(아직 뭔지 모른다)으로 바꾸어 가고 싶습니다. 타인이 만든 Jenkins의 build.xml 수십 파일을 읽어 풀어서 무렵을 기억해 각종 설정의 파라미터화에 노력하고 싶습니다. . .

좋은 웹페이지 즐겨찾기