오늘도 한 뼘 더

[Git] gitlab-ci.yaml을 사용하여 테스트 코드 돌리기 본문

Study/Git

[Git] gitlab-ci.yaml을 사용하여 테스트 코드 돌리기

나른한댕댕이🐶 2023. 6. 14. 15:23
728x90
반응형

  # 배경  

개발자가 작성한 테스트 코드를 돌리고 나서 결과에 따라서 GitLab에서 바로 Merge가 되지 않았으면 한다는 요구 조건이 있었다.

이전에 테스트 코드 실행은 GitLab에서 Merge Request가 열리면 Webhook을 통해서 Jenkins에서 테스트 코드가 실행되었다. 위의 요구 조건을 실행하기 위해서 GitLab의 CI/CD 툴을 사용하기로 하였다.

 

  # .gitlab-ci.yaml  

gitlab ci/cd의 경우 레포지토리에 .gitlab-ci.yaml 파일을 포함하고 있으면 자동으로 pipeline이 실행이 된다.

  • gitlab repository > Settings > CI/CD에 들어가면 변수 세팅을 할 수 있다.
    • 변수를 세팅할 때 Protected로 변수를 설정할 경우 Protected 브랜치에서만 사용이 가능하다.
  • before_script : 메인 스크립트를 실행하기 전에 선행되어야 하는 작업을 작성한다.
  • stages : pipeline이 실행될 메인 작업 공간들을 작성한다.
  • except : 해당 작업을 수행하지 않을 브랜치를 지정할 수 있다.

[ 예시 ]

variables:
  ENV: test

before_script:
  - export PATH=$PATH:/usr/local/go/bin
  - curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env PATH)/bin v1.53.1

stages:
  - test

test:golangci-lint:
  image: golangci/golangci-lint:latest
  stage: test
  except: 
    - main
  script:
    - echo "start golangci-lint"
    - cd $CI_PROJECT_DIR
    - golangci-lint run

test:tests:
  image: golang:1.19
  stage: test
  except: 
    - main
  script: 
    - echo "start test"
    - cd $CI_PROJECT_DIR
    - go test -v ./...
728x90
반응형