hyelie
hyelie
Hyeil Jeong
       
글쓰기    관리    수식입력
  • 전체보기 (495)
    • PS (283)
      • Algorithm (28)
      • PS Log (244)
      • Contest (6)
      • Tips (5)
    • Development (52)
      • Java (14)
      • Spring (23)
      • SQL (2)
      • Node.js (2)
      • Socket.io (3)
      • Study (4)
      • Utils (4)
    • DevOps (36)
      • Git (5)
      • Docker (4)
      • Kubernetes (2)
      • GCP (3)
      • Environment Set Up (8)
      • Tutorial (12)
      • Figma (2)
    • CS (74)
      • OOP (7)
      • OS (24)
      • DB (2)
      • Network (24)
      • Architecture (0)
      • Security (2)
      • Software Design (0)
      • Parallel Computing (15)
    • Project (15)
      • Project N2T (5)
      • Project ASG (0)
      • Project Meerkat (1)
      • Model Checking (7)
      • Ideas (2)
    • 내가 하고싶은 것! (34)
      • Plan (16)
      • Software Maestro (10)
      • 취준 (8)
hELLO · Designed By 정상우.
hyelie

hyelie

DevOps/Tutorial

EC2 Docker Jenkins Spring Gitlab 자동 빌드 - 6. 수정사항, ECR push

1. 수정사항

원래는 docker 안에 jenkins가 있고, jenkins에서 docker로 접속하는 방식을 택했다. 근데 ECR에 push하기 위해서는 jenkins에서 docker를 실행해야 한다. 그래서 docker-compose.yml 파일을 조금 수정한다.

 

/home/ec2-user/compose/docker-compose.yml

version: "3"

services:
    jenkins:
        container_name: jenkins
        image: jenkins/jenkins:lts
        user: root       
        ports:
         - "8081:8080" 
        volumes:
         - /var/run/docker.sock:/var/run/docker.sock
         - /home/ec2-user/compose/jenkins:/var/jenkins_home
         - /usr/bin/docker:/usr/bin/docker

    sonarqube:
        image: sonarqube:lts
        container_name: sonarqube
        ports:
         - "9000:9000"
        volumes:
         - sonarqube_conf:/opt/sonarqube/conf
         - sonarqube_data:/opt/sonarqube/data
         - sonarqube_extensions:/opt/sonarqube/extensions
         - sonarqube_logs:/opt/sonarqube/logs
        
volumes:
    sonarqube_conf:
    sonarqube_data:
    sonarqube_extensions:
    sonarqube_logs:

 

이렇게 하면 ec2에 깔린 docker와 jenkins의 docker를 연동할 수 있게 되어서 exec -it jenkins bash로 들어가서 docker ps를 해도 잘 실행된다.

 

 

그다음, ecr push

 

https://teichae.tistory.com/entry/Jenkins-Pipeline%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-Docker-Image%EB%A5%BC-ECR%EB%A1%9C-Push

 

Jenkins Pipeline을 이용하여 Docker Image를 ECR로 Push

안녕하세요. 오늘 글은 지난 시간에 이어서 Jenkins Pipeline을 이용하여 Docker Image Build 후 AWS ECR로 Push 하는 방법에 대해서 다뤄볼까 합니다. 준비물 : AWS Accesss Key, AWS IAM(ECR PermissionAmazonEC..

teichae.tistory.com

 

plugin

docker pipeline

amazon ecr

aws global configuration

 

https://betterprogramming.pub/how-to-push-a-docker-image-to-amazon-ecr-with-jenkins-ed4b042e141a

 

How To Push a Docker Image to Amazon ECR With Jenkins

Create and configure an AWS and push it using Jenkins

betterprogramming.pub

 

shell은 아래와 같이.

pipeline {
    agent any
    tools{
        gradle '6.9'
    }
    stages{
        stage('Ready'){
            steps{
                sh "echo 'Ready'"
            }
        }

        /*stage('SonarQube Analysis'){
            steps{
                withSonarQubeEnv('sonar-server'){
                    sh './gradlew sonarqube -Dsonar.projectKey=devops -Dsonar.host.url=http://34.68.210.18:9000 -Dsonar.login=aa312f8be5bc0e85894f4b8c7f11ef1f8899a2eb'
                }
            }
        }

        stage('SonarQube Quality Gate'){
            steps{
                timeout(time: 1, unit: 'MINUTES') {
                    script{
                        echo "Start~~~~"
                        def qg = waitForQualityGate()
                        echo "Status: ${qg.status}"
                        if(qg.status != 'OK') {
                            echo "NOT OK Status: ${qg.status}"
                            updateGitlabCommitStatus(name: "SonarQube Quality Gate", state: "failed")
                            error "Pipeline aborted due to quality gate failure: ${qg.status}"
                        } else{
                            echo "OK Status: ${qg.status}"
                            updateGitlabCommitStatus(name: "SonarQube Quality Gate", state: "success")
                        }
                        echo "End~~~~"
                    }
                }
            }
        }*/

        stage('Spring Boot Clean & Build'){
            steps{
                sh "chmod +x gradlew;"
                sh "./gradlew clean;"  
                sh "./gradlew build -x test;"  
            }
        }   // build 시 test 없이 진행하고, test는 추후에 거르기 위해 이렇게 이용함.
        
        stage('Gradle Junit Test') {
            steps {
                    sh "chmod +x gradlew; ./gradlew test"
            }
        }   // test를 이용해서 확인함.
        stage('JUnit Test Publish') {
            steps {
                junit '**/build/test-results/test/*.xml'
            }
        }   // Junit 테스트 결과를 젠킨스 프로젝트 첫 화면에서 볼 수 있게 결과물을 출력한다. 이렇게 해주면 알아서 결과물을 보여준다.



        stage('Docker push image'){
            steps{


                script{
                    docker.withRegistry('https://202364957862.dkr.ecr.us-east-2.amazonaws.com', 'ecr:us-east-2:aws-ecr'){
                    def app = docker.build("202364957862.dkr.ecr.us-east-2.amazonaws.com/ci")
                    app.push("latest")
                    }
                }
            }
        }

        stage('Clean'){
            steps{
                sh "chmod +x gradlew;"
                sh "./gradlew clean;"  
            }
        }
    }
}

// build - JUnit - SonarQube - docker build, push - kubernetes deploy 이렇게 됨.
// stages는 1개만.
// gradlew 실행은 ./으로
// gradlew 권한 해결
// $ 표시는 injection 문제가 있기 때문에 '''를 이용해 주석처리.
// stage 이름 겹치면 안 됨/
// stage 안에 여러개를 넣고 싶으면 stage 내에 stages 넣기

 

'DevOps > Tutorial' 카테고리의 다른 글

build server 부터 배포까지 - 2. GKE Spring MySQL 배포 - GKE 클러스터 생성 및 spring 예제 배포  (0) 2022.10.05
build server 부터 배포까지 - 1. GCP + Docker + Jenkins + Gitlab + JUnit + SonarQube + GCR image push  (0) 2022.10.05
EC2 Docker Jenkins Spring Gitlab 자동 빌드 - 5. jenkins pipeline - JUnit + SonarQube  (0) 2022.10.05
EC2 Docker Jenkins Spring Gitlab 자동 빌드 - 4. docker image push  (0) 2022.10.04
EC2 Docker Jenkins Spring Gitlab 자동 빌드 - 3. gitlab project hooker 연동  (0) 2022.10.04
    hyelie
    hyelie

    티스토리툴바