CircleCI 2.1 스즈메
15154 단어 CircleCICircleCI2.1
소개
CircleCI는 개발·운용을 효율화해 주는 자동화 서비스입니다.
github나 bitbucket과 연계시켜, 지정한 브랜치에 갱신이 있던 시점에서 자동으로 빌드나 테스트, 배포등의 실행을 할 수 있습니다.
2.1을 사용한 적이 없었기 때문에 새로운 기능을 조사해 보았습니다.
※ CircleCI2.0까지를 아는 방향의 기사가 됩니다
CircleCI 2.1
중복
jobs
설명을 간단하게 할 수 있습니다 2.0에서 마이그레이션하기 쉽습니다
config.yml
에서 version: 2.0
를 2.1
새로운 기능
commands
jobs 내에서 실행되는 steps 내에서 재사용할 수 있는 명령을 정의합니다.
commands:
bundle-install:
description: "バンドルをインストールするコマンド"
steps:
- restore_cache:
keys:
- v1-dependencies-{{ checksum "Gemfile.lock" }}
# fallback to using the latest cache if no exact match is found
- v1-dependencies-
- run: bundle install --path vendor/bundle
- save_cache:
key: v1-dependencies-{{ checksum "Gemfile.lock" }}
paths:
- vendor/bundle
jobs:
my-job:
steps:
- checkout
- bundle-install # コマンドで定義した処理が実行される
키
필수
금형
steps
○
Sequence
parameters
-
Map
description
-
문자열
executors
단계를 실행하기 위한 환경을 정의합니다.
executors:
frontend_executor:
working_directory: ~/app
environment:
DIST_DIR: public
docker:
- image: circleci/node:10.16.0
jobs:
frontend-build:
executor: frontend_executor
steps:
- checkout
- run: ...
키
필수
금형
도커
○(1)
목록
resource_class
-
문자열
기계
○(1)
Map
macos
○(1)
Map
쉘
-
문자열
working_directory
-
문자열
환경
-
Map
※ ○(1) 중 하나는 필수
parameters
parameters를 사용하는 것으로, 부분적인 분배가 가능하게 됩니다.
jobs, commands, executors 바로 아래에서 선언합니다.
commands:
say-hello:
description: "デモ用のごく簡単なコマンド"
parameters:
to:
type: string
default: "Hello World"
steps:
- run: echo << parameters.to >>
jobs:
my-job:
steps:
- say-hello:
to: "こんにちは世界"
키 이름
필수
금형
description
-
문자열
type※
○
문자열
default
-
type에 지정된 유형의 값
※ 타입
cf. h tps : // / rc ぇ시. 코 m/도 cs/그럼/2.0/레신 g-곤후 g/#%에3%83%91%에3%83%아9%에3%83%아1%에3% 83% BC% 3% 82% BF% 3% 83% BC% 5% 9% 8B
when 단계
조건부 단계를 사용하면 조건이 충족된 경우에만 수행되는 단계를 정의할 수 있습니다.
워크플로우가 실제로 실행되기 전에 평가되기 때문에 주의입니다.
jobs:
my-job:
steps:
- when:
condition: << parameters.preinstall-foo >>
steps:
- run: echo "preinstall"
- unless:
condition: << parameters.preinstall-foo >>
steps:
- run: echo "don't preinstall"
orbs
CircleCI2.1의 주요 기능!
commands, jobs, executors로 구성된 구성 패키지
CircleCI 공인의 것, 파트너 기업에 의한 타사의 것, 스스로 자작할 수도 있고, 소스 코드는 모두 공개되고 있습니다.
예를 들어 circleci/aws-s3 을 사용하면 이렇게 됩니다.
orbs:
aws-s3: circleci/[email protected]
jobs:
my-job:
steps:
- aws-s3/sync:
from: "public"
to: "s3://hoge-dev"
overwrite: true
CircleCI 공인 Orbs는 여기
h tps : // / rc ぇ시. 코 m / rbs / 레기 스트리 /
Before/After
staging과 production, 각각 다른 S3 버킷에 업로드하는 설정 파일을 비교해 봅시다!
Before
version: 2.0
jobs:
sync_s3:
docker:
- image: xueshanf/awscli
environment:
BUCKET_NAME_PRODUCTION: sample-production
BUCKET_NAME_STAGING: sample-staging
ROOT_DIR: public
steps:
- checkout
- deploy:
name: Upload S3
command: |
if [ $CIRCLE_BRANCH == "production" ]; then
aws s3 sync --exact-timestamps --exclude "**/.*" --delete $ROOT_DIR s3://$BUCKET_NAME_PRODUCTION
fi
if [ $CIRCLE_BRANCH == "staging" ]; then
aws s3 sync --exact-timestamps --exclude "**/.*" --delete $ROOT_DIR s3://$BUCKET_NAME_STAGING
fi
workflows:
version: 2
build_deploy:
jobs:
- sync_s3:
filters:
branches:
only:
- production
- staging
After
version: 2.1
orbs:
aws-s3: circleci/[email protected]
jobs:
sync_s3:
parameters:
bucket_name:
type: string
steps:
- aws-s3/sync:
from: "public"
to: "s3://<< parameters.bucket_name >>"
overwrite: true
arguments: --exact-timestamps --exclude "**/.*"
workflows:
version: 2
build_deploy:
jobs:
- sync_s3:
bucket_name: sample-staging
filters:
branches:
only:
- staging
- sync_s3:
bucket_name: sample-production
filters:
branches:
only:
- production
기술량은 조금 늘어났지만, 꽤 읽을 수 있게 된 것 같습니다.
보다 복잡한 구성이라면 더욱 효과를 발휘할 것 같습니다.
덤
circleCI 로컬 CLI를 설치하면 2.1 -> 2.0 변환도 가능합니다.
$ circleci config process .circleci/config.yml > past-config.yml
CircleCI 로컬 CLI 사용 - CircleCI
참고 사이트
version: 2.0
jobs:
sync_s3:
docker:
- image: xueshanf/awscli
environment:
BUCKET_NAME_PRODUCTION: sample-production
BUCKET_NAME_STAGING: sample-staging
ROOT_DIR: public
steps:
- checkout
- deploy:
name: Upload S3
command: |
if [ $CIRCLE_BRANCH == "production" ]; then
aws s3 sync --exact-timestamps --exclude "**/.*" --delete $ROOT_DIR s3://$BUCKET_NAME_PRODUCTION
fi
if [ $CIRCLE_BRANCH == "staging" ]; then
aws s3 sync --exact-timestamps --exclude "**/.*" --delete $ROOT_DIR s3://$BUCKET_NAME_STAGING
fi
workflows:
version: 2
build_deploy:
jobs:
- sync_s3:
filters:
branches:
only:
- production
- staging
version: 2.1
orbs:
aws-s3: circleci/[email protected]
jobs:
sync_s3:
parameters:
bucket_name:
type: string
steps:
- aws-s3/sync:
from: "public"
to: "s3://<< parameters.bucket_name >>"
overwrite: true
arguments: --exact-timestamps --exclude "**/.*"
workflows:
version: 2
build_deploy:
jobs:
- sync_s3:
bucket_name: sample-staging
filters:
branches:
only:
- staging
- sync_s3:
bucket_name: sample-production
filters:
branches:
only:
- production
circleCI 로컬 CLI를 설치하면 2.1 -> 2.0 변환도 가능합니다.
$ circleci config process .circleci/config.yml > past-config.yml
CircleCI 로컬 CLI 사용 - CircleCI
참고 사이트
Reference
이 문제에 관하여(CircleCI 2.1 스즈메), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yumikokh/items/3c1c6576db55d7db947d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)