ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • docker + gitlab + gitlab ci(=runner)
    카테고리 없음 2019. 4. 16. 16:57

     

    일단 AMI  CentOS 7 버전 설치 

    # yum install docker

    도커 버전 확인 

    # docker version
    Client:
     Version:           18.06.1-ce

    .. 

    공식 설치 문서 

    # curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash

    # yum install gitlab-runner

     

    #실행권한 부여

    usermod -aG docker ec2-user   // 혹시 ami 를 사용중이라면 이것도 추가 해놓는다. 
    usermod -aG docker gitlab-runner

     

    깃랩 러너 권한 설정이 안되면 다음과 같은 에러가 생길수 있으니  도커서비스를 재시작 하는게 좋다. 

    systemctl restart docker

    러너 cli 셋팅 

    : 우선 해당 프로젝트 Settings -> CI/CI -> Runners settings 에서 다음에 CLI 를 통한 config 정보를 확인한다. 

    # gitlab-runner register ( root 권한 필수!, 아래 메세지는 유저권한으로 하다가 에러 발생한 로그)

    질문에 하나 하나 입력한다. 

     

    이렇게 하면 설정 끝! 

    이제 도커 설정 ,  gitlab-ci.yml 파일 셋팅이 필요하다 .

    stages:
      - build
      - deploy
      - rollback
    
    variables:
      DOCKER_IMAGE_NAME: cubenuri/web-monitor
      DOCKER_PROCESS_NAME: web-monitor
    
    before_script:
      - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" 
    
    build:
      stage: build
      script:
          - ./gradlew clean build
          - docker build -t "$DOCKER_IMAGE_NAME":latest .
          - docker push "$DOCKER_IMAGE_NAME":latest
      after_script:
          - echo 'build & push success!'
        
      tags:
        - base-runner  
      only:
        - master
      
    deploy:
      stage: deploy
      script:
        - (if [ "$(docker ps -a | grep "$DOCKER_PROCESS_NAME")" ]; then docker stop "$DOCKER_PROCESS_NAME" && docker rm "$DOCKER_PROCESS_NAME" && docker image tag "$DOCKER_IMAGE_NAME":latest "$DOCKER_IMAGE_NAME":backup && docker rmi "$DOCKER_IMAGE_NAME":latest ; fi);
        - docker pull "$DOCKER_IMAGE_NAME"
        - docker run -p 8001:8080 -d --restart always  --name "$DOCKER_PROCESS_NAME" "$DOCKER_IMAGE_NAME":latest
        
      tags:
        - base-runner
      only:
        - master
      when: manual
    
    rollback:
      stage: rollback
      script:
        - docker stop "$DOCKER_PROCESS_NAME"
        - docker rm "$DOCKER_PROCESS_NAME"
        - docker run -p 8001:8080 -d --restart always  --name "$DOCKER_PROCESS_NAME" "$DOCKER_IMAGE_NAME":backup
      tags:
        - base-runner
      when: manual
      only:
        - master
    

     

     

     

     

     

     

    댓글

Designed by Tistory.