[CI/CD] Jenkins 설치 및 설정

RUNGOAT·2023년 6월 18일
0

CI/CD

목록 보기
3/11
post-custom-banner

저번 포스트에서 설치한 docker-compose를 사용해 Jenkins를 설치한다.

1️⃣   Jenkins 설치

docker-compose.yml 작성

vi docker-compose.yml
version: "3"
services:
  jenkins:
    image: jenkins/jenkins:lts
    container_name: ubuntu_jenkins
    user: root
    volumes:
      - /var/jenkins_home:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - 7777:8080
  • jenkins를 사용
  • user : 컨테이너가 실행될 리눅스의 사용자 계정을 root로 명시한다.
  • volumes : 도커 컨테이너의 데이터는 컨테이너가 종료되면 휘발된다. 도커 컨테이너의 데이터를 보존하기 위해 사용한다. (/var/jenkins_home 이라는 디렉터리를 /jenkins와 마운트하고 데이터를 보존할 수 있다.)
  • port : 좌측이 호스트 port, 우측이 컨테이너 port (컨테이너 외부와 내부 포트를 포워딩한다.)
    => docker-compose.yml이 존재하는 경로에서 도커 컨테이너를 실행할 수 있다.

백그라운드로 실행

docker-compose up -d
  • 성공했다면 {EC2 도메인 주소}:7777 로 접속해보길 바란다.

2️⃣   Jenkins 설정

Jenkins 초기 password 확인
초기 password는 위 사진의 Administrator password에 입력하면 된다.

$ sudo docker logs ubuntu_jenkins
  • jenkins 컨테이너에 출력된 로그를 확인할 수 있다.

또는

sudo su
cat /var/jenkins_home/secrets/initialAdminPassword

으로 확인할 수 있다.

  • 추가적으로 secrets는 root 계정만 접근할 수 있다.

젠킨스 접속

비밀번호를 입력하면 아래와 같은 화면이 나온다.

젠킨스 plugin 설치
install suggested plugin으로 선택하여 필수적인 plugin들을 설치받도록 한다.

  • 혹여나 설치가 실패해도 추후에 검색하여 설치할 수 있으니 실패해도 넘어가면 된다.

젠킨스 관리자 계정 생성

젠킨스 접속 완료

타임 존을 서울로 설정하기

System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Seoul')

Jenkins 관리 -> Script console에서 위 스크립트를 입력하면 타임 존이 서울로 설정된다.

플러그인 설치
메뉴 Jenkins 관리 -> 플러그인 관리 -> Available plugins 에서 검색하여 설치

  • Docker Pipeline
  • NodeJs Plugin
  • GitLab
  • Generic Webhook Trigger Plugin
  • SSH Agent

NodeJS 설치

  • Name : 임의로 설정(추후에 pipeline에서 사용됨)
  • Version : 사용하는 NodeJS 버전 선택하고 저장

Credential에 설정(접근 자격 설정)

-ec2_ssh_key : 서버에 접근하기 위한 권한

  • 메뉴 Jenkins관리→ Manage Credentials → system → Global credentials
  • 우측 상단 Add Credentials 클릭

  • Kind : SSH Username with private key 선택
  • ID : 임의의 ID
  • Username : ubuntu(키를 받은 우분투 유저 이름 , 보통 Ubuntu)
  • Private Key의 Enter directly 체크 후 Add 버튼 클릭
    - server 인스턴스의 pem 파일 내용을 넣어준다.
    • ----BEGIN RSA PRIVATE KEY---—부터 ----END RSA PRIVATE KEY---—까지 포함해서 다 복사하여 넣어준다.

-gitlab_token : GitLab에 접근하기 위한 권한

  • Kind : Username with password 선택
  • ID : 임의의 ID
  • Username : GitLab 아이디
  • password : GitLab에서 받은 키를 입력한다.
    - 만약 안된다면 GitLab 비밀번호를 넣는 방법도 있다고 한다.)
  • GitLab에서 key 받기

User Settings의 Access Tokens 접속

  • Token name : 임의의 이름

  • Select scopes : 전체 선택

Create personal access token 버튼 클릭하여 생성

생성된 key는 바로 복사해두는 것을 추천한다.
왜냐면 다시 못 보기 때문

(만약 위의 Username with password가 안된다면
kind : GitLab API token으로 시도해보길 바란다.)


3️⃣   Jenkins Container에 docker-compose 설치

다음 포스팅을 보면 Jenkins Pipeline에서 프로젝트 디렉토리에 있는 Dockerfile 과 docker-compose를 실행시킨다.

그러기 위해서는 Jenkins Container 내부에 docker와 docker-compose 가 설치되어 있어야 한다.

※ 참고) 이 방식은 DinD 방식인데 권장하는 방식은 아니다
Docker - DinD DooD

✅ 설치는 2가지 방법이 있다.

1. 직접 Jenkins Container에 접근해서 설치

✔ Jenkins Container 접근

docker exec -it {Jenkins Container Name} /bin/bash

✔ docker-compose 설치

curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

2. Jenkins Pipeline에 script를 작성하여 설치

✔ docker 설치

# docker image를 만들 때 아직 docker가 설치되지 않았다면 설치한다.
sh """
	if ! command -v docker > /dev/null; then
	curl -fsSL https://get.docker.com -o get-docker.sh
	sh get-docker.sh
	fi
"""

해당 script 내용은 다음 포스팅에서 확인할 수 있다.


📌 참고

profile
📞피드백 너무나 환영
post-custom-banner

0개의 댓글