Space
The intelligent code collaboration platform
Space and SpaceCode will be discontinued on June 1, 2025. Learn more → →
Space Automation이 모두에게 공개 되었습니다
EAP 기간 중 얼리어답터 여러분 사이에서 큰 인기를 끌었던 추가 예정 기능인 Space Automation이 모든 Space 베타 고객에게 제공됩니다.
Automation을 통해 Space의 CI/CD 활동을 실행하고 프로젝트 빌드, 테스트 및 배포를 완료할 수 있습니다.
Space는 현재 누구나 무료로 사용할 수 있는 베타 버전으로 제공됩니다. Space 베타 버전의 모든 고객은 매월 10,000 CI 크레딧이 포함된 Organization 요금제를 이용할 수 있습니다. 아직 베타 프로그램에 참여하지 않으신 경우 무료로 Space에 등록하고 오늘부터 사용해보세요.
다양한 작업을 자동화하고 지속적인 배포 파이프라인을 관리하는 데 도움이 될 시스템의 간략한 소개를 준비했습니다.
그럼 이제 Space Automation을 본격적으로 살펴보겠습니다!
Space Automation 소개
Automation은 시스템의 모든 CI/CD 활동을 담당하는 Space 모듈입니다. 저장소에 저장된 스크립트 파일을 활용하여 프로젝트 빌드, 테스트 및 배포를 수행할 수 있습니다.
코드로서 구성
스크립트는 Automation을 구성하는 유일한 방식입니다. Space에 표시되는 Automation UI는 스크립트 결과(로그, 테스트, 아티팩트)를 시각화하는 데만 사용됩니다. 스크립트는 특수한 Kotlin 기반 DSL(도메인 특화 언어)로 작성됩니다.
자동화 스크립트
자동화 스크립트는 프로젝트 루트 디렉토리의 .space.kts 파일에 저장되어야 합니다. .space.kts 파일을 수정하려면, Space 코드 웹 에디터 또는 Space 플러그인이 설치된 IntelliJ IDEA를 사용하면 됩니다.
Kotlin 기반의 DSL
Space Automation DSL은 Kotlin을 기반으로 하여(YAML 예정) 많은 장점을 갖고 있습니다. Kotlin 데이터 유형 및 언어 구조를 자동화 스크립트 내에서 바로 사용할 수 있습니다.
브랜치에 분리
자동화 구성은 스크립트 파일을 통해 이루어지므로 해당 구성은 Git 브랜치에 완전히 분리됩니다. 그렇기에 자동화 스크립트를 매우 간편하게 실험할 수 있습니다. 새 브랜치를 생성하고 .space.kts 파일을 추가한 후 실험을 시작하면 됩니다.
컨테이너
모든 자동화 활동은 Linux 기반의 Docker 컨테이너에서 실행됩니다. Automation 스크립트의 빌딩 블록은 Job 입니다. Job을 사용하면 컨테이너 내에서 독립적 단계를 실행할 수 있습니다. 다음 예시의 경우 Job은 셸 스크립트를 실행하는 Ubuntu 컨테이너라는 한 단계로 구성되어 있습니다.
Job 실행 결과와 컨테이너 로그가 프로젝트의 Jobs 페이지에 표시됩니다.
순차 및 병렬 단계
컨테이너의 단계를 순차적, 병렬적으로 실행할 수 있습니다. 따라서 컨테이너의 그래프를 실행할 수 있습니다.
Kotlin 코드 실행
Kotlin 기반의 DSL을 사용하면 빌드 스크립트 내의 복잡한 로직도 구현할 수 있습니다. 이러한 목적에 따라 컨테이너 내부의 특수한 kotlinScript 아이템을 사용할 수 있습니다.
기타 Space 모듈과 통합
.space.kts에는 Kotlin 기반의 Space HTTP API 클라이언트에 대한 액세스 권한이 있습니다. 모든 Space 모듈은 API를 제공하므로 다음과 같은 Space의 모든 요소와 통신이 가능합니다.
- api.space().packages
- api.space().projects
- api.space().todo
- api.space().blogs
- 기타 등등.
Gradle, Docker 및 기타 도구와 통합
외부 도구를 사용할 수 있도록 API를 비롯한 추가적 단계 유형을 제공합니다. 예를 들어 Gradle 빌드 간소화를 위해 Gradle 또는 Gradlew 단계를 활용할 수 있습니다.
테스트의 출력 내역이 Job 개요 페이지에 표시됩니다.
Docker 이미지를 빌드하고 푸시하는 데 Docker 단계를 활용할 수도 있습니다.
향후 .NET, npm, MVN 및 기타 도구에 대한 지원도 추가할 예정입니다.
외부 라이브러리 사용
자동화 스크립트에 Kotlin을 사용할 경우의 다른 장점은 외부 라이브러리를 참조할 수 있다는 점입니다.
IntelliJ IDEA 플러그인
IntelliJ IDEA용 Space 플러그인을 활용하면 Space API를 사용하는 복잡한 스크립트를 훨씬 간편하게 작성할 수 있습니다. 자동화 스크립트 검사 기능과 더불어 Space 플러그인은 자동화 코드 완성 기능도 제공합니다.
Space Packages와 통합
Space Packages는 Space에 구축된 범용 저장소 관리 도구입니다. 컨테이너 레지스트리, Maven 저장소, Nuget 피드 및 npm 저장소를 비롯한 여러 저장소 유형이 지원됩니다. Automation은 별도의 설정 없이 사용 가능한 Packages와 통합을 제공합니다.
- Automation 스크립트에는 인증이 필요하지 않습니다.
- 패키지 버전은 Job 실행 번호에 따라 자동으로 변경됩니다.
서비스 컨테이너
컨테이너 내부에서 MySQL, Redis, Elastic 등 네트워크 액세스 가능 서비스를 제공하는 추가 서비스 컨테이너를 실행할 수 있습니다.
또한 다른 컨테이너와 마찬가지로 서비스 컨테이너 로그도 확인할 수 있습니다.
파일 공유
파일 공유 기능을 활용하면 빌드 아티팩트를 한 단계에서 다른 단계로 전달할 수 있습니다. 파일 공유는 각 컨테이너에 탑재된 볼륨으로, 직접 또는 전용 API를 통해 액세스할 수 있습니다.
시크릿 및 매개변수
CI/CD 시스템의 중요한 부분 중 하나는, 예를 들어 외부 패키지 저장소와 같은 다양한 외부 리소스에 자격 증명을 안전하게 저장할 수 있는 기능입니다. 이 목적에 따라 Automation은 시크릿 및 매개변수를 저장하는 자체 공간을 제공합니다.
시크릿 및 매개변수는 키 값을 사용하여 .space.kts에서 쉽게 액세스할 수 있습니다.
청구
각각의 JetBrains Space 구독 요금제에는 Automation 빌드 실행 시 필요한 가상 화폐인 CI 크레딧이 일정 수만큼 포함되어 있습니다. CI 크레딧 1개는 디폴트 Linux 컨테이너의 작업 1분에 해당합니다(2 vCPU, 7800 MiB RAM). 매월 CI 크레딧이 다시 충전됩니다. 각 구독 요금제에는 일정 수의 CI 크레딧뿐 아니라 CI 크레딧의 안전 재고인 리저브 크레딧(Reserve Credit)도 포함됩니다. 매월 제공되는 CI 크레딧을 모두 사용한 후에는 Automation이 모든 저장소의 자동화 Job 트리거를 비활성화합니다(예: ‘Git 푸시’로 활성화된 트리거). 자동화 Job 트리거가 비활성화되면 Jobs 페이지에서 Job을 실행하여 Job을 수동으로 트리거 할 수 있습니다. 리저브 크레딧은 이러한 Job 실행에 대한 결제에 사용됩니다.
오늘 소개해드릴 내용은 여기까지입니다. Space의 Automation 컨셉에 대한 개요가 잘 전달되었길 바랍니다.
질문이나 의견이 있을 경우 아래 댓글란을 통해 편하게 문의해 주세요.
2020년 10월 6일 오후 4시(CEST 기준)에 무료 라이브 웨비나인 Introduction to Automation: CI/CD in Space가 열렸습니다. 웨비나에서는 JetBrains의 개발자 애드버킷 Maarten Balliauw가 Automation 기능의 실시간 데모를 선보이고 Automation 팀 리더인 Evgeniy Koshkin이 진행하는 Q&A 세션이 있었습니다.
자동화 DSL, 빌드 실행, Space 패키지 레지스트리에 게시, 시크릿 및 매개변수 등 다양한 주제를 다루었으며, 질의응답 시간도 가졌습니다. 향후에 녹화 영상을 공유해드리겠습니다!
JetBrains 팀
— The Drive to Develop
이 게시물은 Alexandra Charikova가 작성한 Space Automation Is Available for Everyone을 번역 및 일부 수정한 글입니다.