DevOps

[docker-compose] jenkins 설치 및 초기셋팅

nineDeveloper 2020. 3. 15. 17:35
728x90

docker 설치로 수동 작업해준 것들이 불편해 docker-compose 설치법으로 개편
docker, docker-compose, zulu jdk 13 까지 모두 자동으로 설치된 jenkins 서버가 생성됨

1. Dockerfile 생성

FROM jenkins/jenkins:latest
## 현재 유저권한으로
USER $USER
## docker 설치 
RUN curl -s https://get.docker.com/ | sh
## docker-compose 설치
RUN curl -L "https://github.com/docker/compose/releases/download/1.28.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && \
    chmod +x /usr/local/bin/docker-compose && \
    ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
## dcs 툴 설치
RUN curl -sL bit.ly/ralf_dcs -o ./dcs && \
    chmod 755 dcs && \
    mv dcs /usr/local/bin/dcs
## zulu jdk 11 설치
RUN apt-get update && apt-get -y install software-properties-common && \
    apt-add-repository 'deb http://repos.azulsystems.com/ubuntu stable main' && \
    apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xB1998361219BD9C9 && \
    apt-get update && apt-get -y install zulu-11
## docker group 에 jenkins 추가 
RUN usermod -aG docker jenkins

2. docker-compose.yml 생성

ports 만 원하는 HOST포트로 변경 해주면 된다

설정방법: HOST포트:Container포트

version: '3'

services:
  jenkins:
    privileged: true
    build: .
    restart: always
    ports:
        - "9080:8080"
        - "50010:50000"
    expose:
        - "8080"
        - "50000"
    volumes:
        - './jenkins_home:/var/jenkins_home'
        - '/var/run/docker.sock:/var/run/docker.sock'
    environment:
        TZ: "Asia/Seoul"

3. docker-compose 명령어 alias 등록

~/.bashrc 에 아래의 내용을 등록하고 source ~/.bashrc 하면 alias 가 등록된다

alias dco='docker-compose'
alias dcb='docker-compose build'
alias dce='docker-compose exec'
alias dcps='docker-compose ps'
alias dcr='docker-compose run'
alias dcup='docker-compose up'
alias dcdn='docker-compose down'
alias dcl='docker-compose logs'
alias dclf='docker-compose logs -f'

4. docker-compose 구동

dcup -d

5. jenkins_home User로 소유자 변경

sudo chown -R $USER:$USER jenkins_home

6. 패스워드

1. docker-compose logs로 최근 로그 보기

dcl

2. 로그에서 패스워드 복사

예시에서는 56afea9214194f32b6f06a5e4fb8c807 패스워드를 복사한다
예시) 56afea9214194f32b6f06a5e4fb8c807

jenkins_1  | *************************************************************
jenkins_1  | *************************************************************
jenkins_1  | *************************************************************
jenkins_1  |
jenkins_1  | Jenkins initial setup is required. An admin user has been created and a password generated.
jenkins_1  | Please use the following password to proceed to installation:
jenkins_1  |
jenkins_1  | 56afea9214194f32b6f06a5e4fb8c807
jenkins_1  |
jenkins_1  | This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
jenkins_1  |
jenkins_1  | *************************************************************
jenkins_1  | *************************************************************
jenkins_1  | *************************************************************

3. 로그에서 패스워드를 찾을 수 없을 때

jenkins_home/secrets/initialAdminPassword 위치에 초기 패스워드 정보가 있으므로
아래의 명령어로 패스워드 정보를 찾아서 복사

cat ./jenkins_home/secrets/initialAdminPassword

4. jenkins 웹에 패스워드 복사

jenkins 웹에 접속해서 패스워드 복사 후 continue 클릭

5. 필수 Plugin 설치

Install suggested plugins 를 클릭하고 필수 플러그인 설치

필수 Plugin 설치 중 화면

6. ADMIN 계정 생성

admin 게정 생성 후 Save and Continue 를 클릭

7. 추가 Plugin 설치

로그인 후 - Jenkins 관리 - 플러그인 관리 - 설치 가능 탭 에서

아래의 Plugin에 있는 추가 Plugin 설치 후 아래 지금 다운로드하고 재시작 후 설치하기 클릭

Date Parameter

https://plugins.jenkins.io/date-parameter/
Spring Batch 파라메터 관련

Notification plugin

https://plugins.jenkins.io/notification/
jenkins Notification

Maven Integration

https://plugins.jenkins.io/maven-plugin/

Publish Over SSH

https://plugins.jenkins.io/publish-over-ssh/

GitLab

https://plugins.jenkins.io/gitlab-plugin/

Gitlab Hook Plugin

https://plugins.jenkins.io/gitlab-hook/

Blue Ocean

https://plugins.jenkins.io/blueocean/

Jenkins Pipeline 참조

https://kingbbode.tistory.com/42

Extensible Choice Parameter

참조: https://kingbbode.tistory.com/42
https://plugins.jenkins.io/extensible-choice-parameter/

Rebuilder

참조: https://kingbbode.tistory.com/42
https://plugins.jenkins.io/rebuild/

Nvm Wrapper

참조: https://kingbbode.tistory.com/42
https://plugins.jenkins.io/nvm-wrapper/

설치 안함

docker-build-step

https://plugins.jenkins.io/docker-build-step/

Docker Compose Build Step

https://plugins.jenkins.io/docker-compose-build-step/

Pipeline Maven Integration

https://plugins.jenkins.io/pipeline-maven/

Pipeline restFul API

https://plugins.jenkins.io/pipeline-restful-api/

Pipeline timeline

https://plugins.jenkins.io/pipeline-timeline/

SSH Pipeline Steps

https://plugins.jenkins.io/ssh-steps/

Kubernetes :: Pipeline :: DevOps Steps

https://plugins.jenkins.io/kubernetes-pipeline-devops-steps/

추가 Plugin 설치 후 재시작

아래 설치가 끝나고 실행중인 작업이 없으면 Jenkins 재시작에 체크하면 설치가 완료되고 jenkins 를 재시작함

6. Global Tool Configuration 설정

Jenkins 관리 - Global Tool Configuration 클릭

JDK 항목에 설치된 zulu JDK 13 정보 등록

install automatically 체크박스를 해제 하고 아래 정보를 입력
Name: zulu jdk 13
JAVA_HOME: /usr/lib/jvm/zulu-13-amd64

Git, Gradle, Maven 설치

7. 시스템 설정

Jenkins 관리 - 시스템 설정 클릭

글로벌 변수 등록

필요한 글로벌 변수가 있다면 등록

SSH Servers 등록

배포를 진행할 SSH 서버 정보 등록

8. Credentials 등록

Credentials - (global) 클릭

Add Credentials

Add Credentials 클릭 - GitLab 인증 정보 등록 후 OK

728x90