Drone 1.0 Release Candidate가 나왔습니다.
소개
새로운 서비스를 개발하고 있습니다 @ 아케치.
현재 실시하고 있는 서비스의 개발에서는 CI/CD 툴에 Drone을 채용하고 있습니다.
지난달 1.0 Release Candidate가 발표되었으므로, 어떤 버전 업인지 쫓아 보았습니다.
업그레이드 시 주의사항
0.8에서 1.0으로 자동 업그레이드할 수 없습니다.
데이터베이스에 호환되지 않는 변경사항이 있으므로 업그레이드에는 마이그레이션 유틸리티가 필요합니다.
이 유틸리티는 11월 16일까지 준비한다고 하는 기술이 문서에 있습니다만, 아직 없는 것 같습니다.
추천 기능
YAML 형식의 상당한 향상
파이프라인 구문은 1.0에서 크게 바뀝니다.
새로운 구문은 Kubernetes에서 영감을 얻었습니다.
Drone 커뮤니티의 대부분은 이미 Kubernetes를 채택하고 있으며 잘 알려진 이유입니다. (나도 그 1명입니다)
오래된 형식
.drone.ymlpipeline:
build:
image: golang
commands:
- go build
- go test
services:
redis:
image: redis:latest
새로운 형식
.drone.ymlkind: pipeline
name: default
steps:
- name: build
image: golang
commands:
- go build
- go test
services:
- name: redis
image: redis:latest
Multi-Machine 파이프라인
빌드 시간을 줄이기 위해 여러 머신에 빌드 작업을 분산하고 싶을 때 유용한 기능입니다.
Multi-Machine 파이프라인은 여러 YAML 문서로 구성됩니다.
다음은 두 개의 병렬 파이프라인을 실행하는 예입니다.
빌드 상태는 두 파이프라인의 결과에 따라 결정됩니다.
.drone.ymlkind: pipeline
name: frontend
steps:
- name: build
image: node
commands:
- npm install
- npm test
---
kind: pipeline
name: backend
steps:
- name: build
image: golang
commands:
- go build
- go test
services:
- name: redis
image: redis
Multi-Platform 파이프라인
여러 OS나 아키텍처에서 빌드나 테스트가 필요할 때 편리한 기능입니다.
하나의 파이프라인은 Linux/ARM에서 실행되고 다른 파이프라인은 Linux/AMD64에서 실행되는 예입니다.
.drone.ymlkind: pipeline
name: amd
platform:
os: linux
arch: amd64
steps:
- name: build
image: golang
commands:
- go build
- go test
---
kind: pipeline
name: arm64
platform:
os: linux
arch: arm64
steps:
- name: build
image: golang
commands:
- go build
- go test
서명된 YAML 파일
신뢰성을 검증하거나 마음대로 다시 쓰는 것을 방지하기 위해 YAML 파일에 서명할 수 있습니다.
이는 공용 리포지토리에서 승인되지 않은 변경을 방지하는 데 특히 유용한 기능입니다.
사용자가 변경하여 서명 확인에 실패하면 파이프 라인은 승인 될 때까지 보류됩니다.
서명은 YAML 파일에 signature
자원으로 작성됩니다.
.drone.yml---
kind: pipeline
name: default
steps:
- name: build
image: golang
commands:
- go build
- go test
---
kind: signature
hmac: F10E2821BBBEA527EA02200352313BC059445190
Jsonnet으로 설정
Jsonnet 파일에서 동적으로 YAML 파일을 생성하는 기능입니다.
예를 들어 Ruby의 여러 버전에서 테스트를 실행하고 싶을 때 사용할 수 있습니다.
.drone.yml---
kind: pipeline
name: ruby-2-4
steps:
- name: test
image: ruby:2.4
commands:
- bundle install --jobs=3 --retry=3
- rake
---
kind: pipeline
name: ruby-2-3
steps:
- name: test
image: ruby:2.3
commands:
- bundle install --jobs=3 --retry=3
- rake
.jsonnet으로 작성하면 다음과 같습니다.
local Pipeline(name, image) = {
kind: "pipeline",
name: name,
steps: [
{
name: "test",
image: image,
commands: [
"bundle install --jobs=3 --retry=3",
"rake"
]
}
]
};
[
Pipeline("ruby23", "ruby:2.3"),
Pipeline("ruby24", "ruby:2.4"),
]
네이티브 지원
에이전트를 여러 OS 및 아키텍처에 설치할 수 있습니다.
0.8에서 1.0으로 자동 업그레이드할 수 없습니다.
데이터베이스에 호환되지 않는 변경사항이 있으므로 업그레이드에는 마이그레이션 유틸리티가 필요합니다.
이 유틸리티는 11월 16일까지 준비한다고 하는 기술이 문서에 있습니다만, 아직 없는 것 같습니다.
추천 기능
YAML 형식의 상당한 향상
파이프라인 구문은 1.0에서 크게 바뀝니다.
새로운 구문은 Kubernetes에서 영감을 얻었습니다.
Drone 커뮤니티의 대부분은 이미 Kubernetes를 채택하고 있으며 잘 알려진 이유입니다. (나도 그 1명입니다)
오래된 형식
.drone.ymlpipeline:
build:
image: golang
commands:
- go build
- go test
services:
redis:
image: redis:latest
새로운 형식
.drone.ymlkind: pipeline
name: default
steps:
- name: build
image: golang
commands:
- go build
- go test
services:
- name: redis
image: redis:latest
Multi-Machine 파이프라인
빌드 시간을 줄이기 위해 여러 머신에 빌드 작업을 분산하고 싶을 때 유용한 기능입니다.
Multi-Machine 파이프라인은 여러 YAML 문서로 구성됩니다.
다음은 두 개의 병렬 파이프라인을 실행하는 예입니다.
빌드 상태는 두 파이프라인의 결과에 따라 결정됩니다.
.drone.ymlkind: pipeline
name: frontend
steps:
- name: build
image: node
commands:
- npm install
- npm test
---
kind: pipeline
name: backend
steps:
- name: build
image: golang
commands:
- go build
- go test
services:
- name: redis
image: redis
Multi-Platform 파이프라인
여러 OS나 아키텍처에서 빌드나 테스트가 필요할 때 편리한 기능입니다.
하나의 파이프라인은 Linux/ARM에서 실행되고 다른 파이프라인은 Linux/AMD64에서 실행되는 예입니다.
.drone.ymlkind: pipeline
name: amd
platform:
os: linux
arch: amd64
steps:
- name: build
image: golang
commands:
- go build
- go test
---
kind: pipeline
name: arm64
platform:
os: linux
arch: arm64
steps:
- name: build
image: golang
commands:
- go build
- go test
서명된 YAML 파일
신뢰성을 검증하거나 마음대로 다시 쓰는 것을 방지하기 위해 YAML 파일에 서명할 수 있습니다.
이는 공용 리포지토리에서 승인되지 않은 변경을 방지하는 데 특히 유용한 기능입니다.
사용자가 변경하여 서명 확인에 실패하면 파이프 라인은 승인 될 때까지 보류됩니다.
서명은 YAML 파일에 signature
자원으로 작성됩니다.
.drone.yml---
kind: pipeline
name: default
steps:
- name: build
image: golang
commands:
- go build
- go test
---
kind: signature
hmac: F10E2821BBBEA527EA02200352313BC059445190
Jsonnet으로 설정
Jsonnet 파일에서 동적으로 YAML 파일을 생성하는 기능입니다.
예를 들어 Ruby의 여러 버전에서 테스트를 실행하고 싶을 때 사용할 수 있습니다.
.drone.yml---
kind: pipeline
name: ruby-2-4
steps:
- name: test
image: ruby:2.4
commands:
- bundle install --jobs=3 --retry=3
- rake
---
kind: pipeline
name: ruby-2-3
steps:
- name: test
image: ruby:2.3
commands:
- bundle install --jobs=3 --retry=3
- rake
.jsonnet으로 작성하면 다음과 같습니다.
local Pipeline(name, image) = {
kind: "pipeline",
name: name,
steps: [
{
name: "test",
image: image,
commands: [
"bundle install --jobs=3 --retry=3",
"rake"
]
}
]
};
[
Pipeline("ruby23", "ruby:2.3"),
Pipeline("ruby24", "ruby:2.4"),
]
네이티브 지원
에이전트를 여러 OS 및 아키텍처에 설치할 수 있습니다.
pipeline:
build:
image: golang
commands:
- go build
- go test
services:
redis:
image: redis:latest
kind: pipeline
name: default
steps:
- name: build
image: golang
commands:
- go build
- go test
services:
- name: redis
image: redis:latest
kind: pipeline
name: frontend
steps:
- name: build
image: node
commands:
- npm install
- npm test
---
kind: pipeline
name: backend
steps:
- name: build
image: golang
commands:
- go build
- go test
services:
- name: redis
image: redis
kind: pipeline
name: amd
platform:
os: linux
arch: amd64
steps:
- name: build
image: golang
commands:
- go build
- go test
---
kind: pipeline
name: arm64
platform:
os: linux
arch: arm64
steps:
- name: build
image: golang
commands:
- go build
- go test
---
kind: pipeline
name: default
steps:
- name: build
image: golang
commands:
- go build
- go test
---
kind: signature
hmac: F10E2821BBBEA527EA02200352313BC059445190
---
kind: pipeline
name: ruby-2-4
steps:
- name: test
image: ruby:2.4
commands:
- bundle install --jobs=3 --retry=3
- rake
---
kind: pipeline
name: ruby-2-3
steps:
- name: test
image: ruby:2.3
commands:
- bundle install --jobs=3 --retry=3
- rake
local Pipeline(name, image) = {
kind: "pipeline",
name: name,
steps: [
{
name: "test",
image: image,
commands: [
"bundle install --jobs=3 --retry=3",
"rake"
]
}
]
};
[
Pipeline("ruby23", "ruby:2.3"),
Pipeline("ruby24", "ruby:2.4"),
]
사용자 인터페이스 개조
기타
drone fmt
명령 Matrix 더 이상 사용되지 않음
요약
Drone 1.0 Release Candidate의 기능을 살펴 보았습니다.
버전이 1.0이 된 것으로, 지금까지 원한다고 생각했던 기능이 꾸준히 추가되어 왔습니다.
현재는 0.8을 사용하고 있으므로, GA가 되면 본격적으로 업그레이드하고 싶다고 생각합니다.
Reference
이 문제에 관하여(Drone 1.0 Release Candidate가 나왔습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/akechi/items/332c84fc8b3eb3fabeb1
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Drone 1.0 Release Candidate가 나왔습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/akechi/items/332c84fc8b3eb3fabeb1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)