git push 하면 Jenkins에서 컨테이너를 빌드하고 DockerHub에 Push하는 체인을 만듭니다.

5254 단어 Jenkins도커GitHub
앱의 코드를 써 컨테이너의 리포지토리에 푸시할 때까지의 자동화 환경을, 다음의 툴을 이용해 만들어 보았다.
1.GitHub
2.Jenkins
3.DockerHub
4.DockerCE
5.Java8
6.Ubuntu Linux
7.MyDNS

Jenkins 설치 및 설정



인터넷에 가상 서버를 설정



IBM Cloud 가상 서버를 구축했습니다. htps : // 이런. b 에미 x. 네 t/

MyDNS에서 도메인 이름 얻기


# m h  dom mon dow   command
#
0 2 * * * curl --user USERID:PASSWD http://www.mydns.jp/login.html > /tmp/mydns.txt

DockerCE 설치


# add repo Docker-CE
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
add-apt-repository "deb https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") $(lsb_release -cs) stable"
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -

# install Docker-CE
apt-get update
apt-get install -y docker-ce=$(apt-cache madison docker-ce | grep 17.03 | head -1 | awk '{print $3}')
usermod -aG docker myuserid

Java8 설치



이 사이트를 참고로 설치
htps : // 이 m / Tsuto Munaka Muura /

Jenkins 설치



Jenkins 다운로드
htps : ///지킨킨 s. 이오 / 도 w 응 아 d /

Jenkins 시작 스크립트
#!/bin/bash

export BASE=/$HOME/jenkins
export JENKINS_HOME=$BASE/data

nohup java -jar jenkins.war --httpPort=9080 1>$BASE/logs/jenkins.log 2>$BASE/logs/jenkins.err &

Jenkins 설정



Youtube를 참고로 설정
htps //w w. 요츠베. 이 m/와 tch? v = 89yW 쵸오이 sk

GitHub와 Jenkins 간의 협력 설정



GitHub Webhooks 설정



GitHub 리포지토리 htps : // 기주 b. 코 m / 태에서 9 / 으 b 긴 긴 x 에서 설정


Jenkins 자격 증명 만들기



자격 증명 -> System -> Add domain -> 도메인, 도메인 이름 부여 -> OK

자격 증명 추가 ->
종류 「사용자명과 패스워드」
사용자 이름 DockerHub의 사용자 ID
비밀번호 같은 비밀번호
ID 파이프라인 스크립트가 참조하는 레이블 dockerhub

Jenkins 작업 설정



새 작업 만들기 -> 다른 이름으로 파이프 라인 선택 -> OK로 작업 만들기

1.General GitHub project 확인
2. URL 설정 htps : // 기주 b. 코 m / 태에서 9 / 우에 b - 긴긴 x /
3. 빌드 트리거의 GitHub hook trigger for GITScm polling
4. 파이프라인 설정, 정의 Pipeline script 선택
node {
    stage('チェックアウト') {
        checkout([$class: 'GitSCM', 
        branches: [[name: '*/master']], 
        doGenerateSubmoduleConfigurations: false, 
        extensions: [], submoduleCfg: [], 
        userRemoteConfigs: [[url: 'https://github.com/takara9/web-nginx/']]])
    }

    // versionの読み込み
    def version = readFile('version').trim()
    def imageName = "maho/web-nginx:" + version
    print imageName

    stage('ビルド') {
        sh "docker build --tag " + imageName + " ."
    }

    stage ('DockerHubへプッシュ') {
        // jenkinsに登録した認証情報を利用する
        withCredentials([[$class: 'UsernamePasswordMultiBinding', 
                        credentialsId: 'dockerhub',
                        usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']]) {
            sh 'docker login -u $USERNAME -p $PASSWORD'
        }
        sh "docker push " + imageName
    }   
}

참고 자료 htps : // 코 m / 미야 사쿠라 _ / ms / 9d9 8873c333cb9 9f43

빌드 실행 테스트



빌드 실행을 클릭하여 빌드 테스트



git push 트리거의 컨테이너 빌드 & 푸시



(1) 소스 코드를 로컬로 복제
git clone htps : // 기주 b. 코 m / 태에서 9 / 으 b 긴 긴 x

(2) 코드 편집
편집기에서 수정
버전 파일에 DockerHub 리포지토리 태그 설정 예 0.1, 0.2

(3) 리포지토리로 push

git commit -m "update"
git push

(4) wehhooks에 의해 체크 아웃, 빌드, 푸시가 실행된다.

요약


  • 이상으로 GitHub, Jenkins, DockerHub까지의 툴 체인을 작성할 수 있었다.
  • Jenkins에는 Docker 컨테이너의 빌드 환경 등, 빌드의 환경은 만들어야 한다.
  • Jenkins는 JENKINS_HOME의 디렉토리 당 백업이 필요합니다
  • 좋은 웹페이지 즐겨찾기