본문 바로가기

GitLab

[GitLab][CI/CD] .gitlab-ci.yml 구성하기

728x90

목적

GitLab 에 개발 Repository 를 구성하고 산출물을 자동으로 유지하고 배포하기 위한 CI/CD 를 구성한다.

사전 조건

1. GitLab 저장소에 프로젝트를 구성한다.

2. Repository 의 최상위 path 에 ".gitlab-ci.yml" 파일을 생성한다.

3. CI/CD 를 구성하고자 하는 Job 을 계획한다. (저의 경우 Release Build, Running UnitTest, Publishing Maven 으로 구성 함)

.gitlab-ci.yml

image: jangrewe/gitlab-ci-android

before_script:
  - export GRADLE_USER_HOME=$(pwd)/.gradle
  - chmod +x ./gradlew

cache:
  key: ${CI_PROJECT_ID}
  paths:
    - .gradle/

stages:
  - build
  - unitTest
  - deploy

assembleRelease:
  stage: build
  script:
    - ./gradlew assembleRelease ${specific_key}
  artifacts:
    paths:
      - sdk/build/outputs/aar/
      - build/kdoc/

testRelease:
  stage: unitTest
  script:
    - ./gradlew testReleaseUnitTest ${specific_key}
  artifacts:
    paths:
      - sdk/build/reports/tests/testReleaseUnitTest/

assemblePublish:
  stage: deploy
  script:
    - ./gradlew publish ${specific_key}
  only:
    - main

job 구성요소

name how to work
image CI 를 수행하고자 하는 docker 를 설정한다.
저의 경우 Android SDK 빌드를 위한 docker 를 설정 했다.
(참고 : https://hub.docker.com/r/jangrewe/gitlab-ci-android)
before_script 각 stage 들의 script 를 수행하기 전 수행하는 동작이다.
cache 각 stage 들의 수행될 때 캐시되어야 할 목록 들이다.
stages job 이 실행되는 단계이다. 순서는 build -> unitTest -> deploy 순이다.
assembleRelease
testRelease
assemblePublish
stages 에서 선언한 job들을 custom name 화 한다.
artifacts job 성공 시 GitLab 에 첨부되어 download 할 수 있는 path 이다.
only job 동작 제한 설정이다. 향후 rules 로 변경하는 게 더 유연하다.

 

728x90

'GitLab' 카테고리의 다른 글

[GitLab][CI/CD] 환경 변수  (0) 2022.10.19