CircleCI의 machine Executor에서 build 작업에서 deploy 작업으로 파일 전달(Workspace)
개요
CircleCI machine Executor를 사용하여 "Docker 빌드 ~ 배포"를 수행하는 프로젝트에서 build job에서 생성 된 파일/디렉토리를 deploy job에 전달하는 단계를 적어 둡니다.
 방법(결론)
작업 사이에 Workspace를 통해 배포에 필요한 파일/디렉토리를 공유합니다.
 persist_to_workspace
후속 deploy job에 제공할 파일/디렉토리를 Workspace에 업로드합니다.
특히 빌드 작업의 마지막 단계에서 persist_to_workspace를 실행합니다.
config.yml      - persist_to_workspace:
          root: .
          paths:
            - ./app/build
            - ./app/deps
작업 사이에 Workspace를 통해 배포에 필요한 파일/디렉토리를 공유합니다.
persist_to_workspace
후속 deploy job에 제공할 파일/디렉토리를 Workspace에 업로드합니다.
특히 빌드 작업의 마지막 단계에서
persist_to_workspace를 실행합니다.config.yml
      - persist_to_workspace:
          root: .
          paths:
            - ./app/build
            - ./app/deps
root:working_directory의 상대 경로) 형태로 지정합니다. paths:attach_workspace
Workspace에 저장된 데이터를
attach_workspace로 가져옵니다..circleci/config.yml
      - attach_workspace:
          at: .
at:working_directory의 상대 경로) 형태로 지정합니다. 보충 설명
CircleCI
jobs는 격리 된 개별 환경에서 실행되는 사양입니다..circleci/config.yml
# 例:build jobで生成されたファイルは、そのままではdeploy jobには渡らない
jobs:
  build:
    ...: ...
  deploy:
    ...: ...
그 때문에, 특정의 job의 결과를 다른 job로 사용하기 위해서는, 이러한 「Workspace로 데이터 공유한다」등의 방법으로 전달을 실시하는 처리가 필요합니다.

(이미지 인용: CircleCI/Jobs overview )
예
 실행 환경
상황
.
├── .circleci/
│   └── config.yml
├── app
│   ├── Dockerfile
│   ├── (build/)
│   ├── (deps/)
│   └── moge.json
└── docker-compose.yml
build job중,
docker-compose build 에 의해 생성된 빌드 파일군을 저장하고 있습니다 의사 코드
moge deps.get를 실행하면 app/moge.json에 설명 된 종속 패키지가 생성되어 deps 디렉토리에 저장됩니다.npm install package.json 설명 패키지를 node_modules/에 저장하는 것과 동일한 이미지입니다 코드
.circleci/config.yml
version: 2.1
orbs:
  # 擬似Orb
  deploy-orb: deploy-orb/deploy-orb@latest
executors:
  machine-executor:
    machine:
      image: ubuntu-1604:202010-01
workflows:
  version: 2
  build-deploy:
    jobs:
      - build
      - deploy:
          requires:
            - build
jobs:
  build:
    executor:
      name: machine-executor
    steps:
      - checkout
      - run:
          name: Build Docker container
          command: |
            set -x
            docker-compose build
      - run:
          name: Moge deps.get
          command: |
            set -x
           # 擬似コード(依存パッケージ取得)
            docker-compose run --rm app bash -c "moge deps.get"
      - run:
          name: Up Docker container
          command: docker-compose up -d
      - run:
          name: Moge test
          command: |
            set -x
           # 擬似コード(テスト実行)
            docker-compose exec app bash -c "moge test"
      - persist_to_workspace:
          root: .
          paths:
            - ./app/build
            - ./app/deps
      - run:
          name: Finish build
          command: echo "Finish build"
  deploy:
    executor:
      name: machine-executor
    steps:
      - checkout
      - attach_workspace:
          at: .
      - run:
          name: Check files/directories
          command: |
            set -x
            pwd && ls -a && ls app
      - run:
          name: Container push and release
          working_directory: app
          command: |
         # 擬似コード(本番環境へビルドコンテナをデプロイ)
            deploy-orb/install-and-push-release -a $YOUR_APP_NAME
      - run:
          name: Finish deploy
          command: echo "Finish deploy"
(참고)
h tps : // / rc ぇ시. 이 m/도 cs/2.0/을 rkfぉws/
htps : // 해 rc ぇ시. 이 m / 두 cs / 2.0 / 조 bs-s ps /
h tps : // / rc ぇ시. 이 m / 두 cs / 2.0 / 네, rty ぺ s /
Reference
이 문제에 관하여(CircleCI의 machine Executor에서 build 작업에서 deploy 작업으로 파일 전달(Workspace)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/im_miolab/items/cd16e59fd51bd4f1805d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)