정적 파일을 Circle CI로 빌드하고 SSH로 배포

4289 단어 CircleCI
정적 페이지 등을 웹 서버에 배포하는 것을 CI에 맡기고 싶어졌기 때문에, Circle CI에서의 설정을 여러가지 집중하면서 만들어 보았다.

포인트는 build 작업과 deploy 작업을 분리한다.
  • 결과를 쉽게 볼 수 있습니다.
  • 각 작업에 대해 workflow에서 처리 순서나 조건을 개별적으로 지정할 수 있다.
  • 작업간에 파일을 보관하는 설정이 필요하지만, 거기까지 어렵지 않다.

  • 설정 파일



    해설은 코멘트에서

    .circleci/config.yml
    version: 2
    
    jobs:
        build:
            docker:
                - image: node:10 # 使いたいDockerイメージを指定
            steps:
                # レポジトリからファイルを取り込む
                - checkout
    
                # ビルドする (例)
                - run: yarn install --frozen-lockfile
                - run: yarn build
    
                # [重要] ビルド生成物を次のジョブで使えるよう保持する設定
                - persist_to_workspace:
                    root: '.'
                    paths:
                        - out # ビルド生成物が含まれる場所を指定
    
        deploy:
            machine:
                enabled: true
            steps:
                # 上のジョブで保持したビルド生成物を取り込む
                - attach_workspace:
                    at: '.'
    
                # SCPでもいい
                - run: rsync -e "ssh -o StrictHostKeyChecking=no" -ahv --delete ./out/* ${DEPLOY_DEST}
    
    # jobsのみだとbuildしか実行されない。ここで実際の処理順や条件を指定する。
    workflows:
        version: 2
        build-and-deploy:
            jobs:
                - build
                - deploy:
                    # buildが成功したらdeployを実行する
                    requires:
                        - build 
                    # masterブランチのみdeployを実行する
                    filters:
                        branches:
                            only:
                                - master
    
    

    CircleCI 콘솔 내에서 설정



    프로젝트 내 설정을 열고 다음 설정

    배포할 환경 변수



    Build Settings → Environment Variables


    배포용 SSH 키 추가



    Permissions → SSH Permissions

    Hostname은 비어 있을 수 있습니다.

    좋은 웹페이지 즐겨찾기