.gitlab-ci.yml 파일에 Docker 이미지 빌드 단계 추가

다음을 수행하여 .gitlab-ci.yml 파일에 package 단계 및 docker-build Job을 추가합니다.

  • GitLab UI의 Repository 파일 목록에서 .gitlab-ci.yml을 선택합니다.

  • Edit 버튼을 클릭합니다.

  • Edit file 페이지에서 아래 항목을 수정하거나 추가합니다.

    • stages- package을 추가
    • maven-build Job의 script을 수정하고 artifacts을 추가
    • docker-build Job 추가
  • 수정하면 아래와 같습니다.

    variables:
      MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true"
      MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true"
    
    image: maven:3.6.3-openjdk-11
    
    cache:
      paths:
        - .m2/repository
    
    stages:
      - build
      - test
      - package
    
    maven-build:
      stage: build
      script: "mvn $MAVEN_CLI_OPTS clean package -DskipTests"
      artifacts:
        paths:
          - target/*.jar
    
    maven-test:
      stage: test
      script: "mvn $MAVEN_CLI_OPTS test"
    
    docker-build:
      image: docker:latest
      stage: package
      services:
        - docker:dind
      before_script:
        - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
      script:
        - docker pull $CI_REGISTRY_IMAGE:latest || true
        - docker build --cache-from $CI_REGISTRY_IMAGE:latest --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA --tag $CI_REGISTRY_IMAGE:latest .
        - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
        - docker push $CI_REGISTRY_IMAGE:latest
  • Commit message 필드에 커밋 메시지를 입력합니다. (예: Add 'docker-build' Job)

  • Commit changes 버튼을 클릭합니다.