TY_Daily

젠킨슨 최종 정리 -1 본문

SSAFY프로젝트

젠킨슨 최종 정리 -1

TY_TaeYeon 2024. 10. 13. 16:31

- 들어가기에 앞서 젠킨슨은 찾아보면 알겠지만 정말 방법이 다양하다! 그래서 내가한게 사용자에게 잘 안맞을수 있으니 그건 참고해주시면 바람 

- 현재 정리한것 까지가 https 정리 전까지니 그걸 참고 해주시면 감사하겠습니다!

 

 

일단 대충 이런 방식으로 ! 운행된다고 생각하면 쉬움!

 

- 일단 도커를 설치 해야한다!

- 먼저 apt-get install, update 실시!

- 도커설치 (공식문서)

$ sudo apt-get update
$ sudo apt-get install \
   ca-certificates \
   curl \
   gnupg \
   lsb-release

 

그다음 도커 설치!

$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

 

도커 설치 확인!

$ sudo docker run hello-world

 

 

- Jenkins 도커 설치

- 여기서 다른건 중요한거 보다! -v 는 볼륨이야 여기서 docker.sock 을 한 이유가 젠킨슨 컨테이너 안에서 도커를 사용하기 위함이야!!!!

sudo docker run -d -p 8080:8080 -v /home/ubuntu/jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock --name jenkins jenkins/jenkins:jdk21

여기서 --name이나 -p(포트번호 : 을 기준으로 앞에는 내 로컬에서 사용할 포트번호 뒤에 번호는 도커에서 연결할 포트번호이다!) jenkins버전은 자기가 원하는걸로 설치하면 된다! (나는 jdk21, 포트번호 8080으로 설정 연결 폴더)

 

 

- Dood Docker out of Docker로 진행하면서 도커 내에서도 도커 명령어를 입력하기 위해 다음과 같은 명령어 사용!

 

<주의!> 그래도 도커 안에 도커는 설치 안해도 도커 클라이언트은 설치해야한다 (cli!) docker ps -a 를 통해 docker exec 명령어를 통해 docker 컨테이너 속으로 접속! 

[docker cli 설치 참고 url] 도커 버전을 확인후 (로컬 docker 버전) 아래 명령어 입력 (도커 컨테이너 안에서!!!! 아래 도커 명령어 입력!)

 

DOCKER_VERSION=27.1.1
curl -fsSL https://download.docker.com/linux/static/stable/x86_64/docker-$DOCKER_VERSION.tgz | tar zxvf - --strip 1 -C /usr/local/bin docker/docker

 

- whoami 명령어를 통해 전킨슨의 사용자가 jenkins인것을 확인할수 있었다!

- docker group 안에 jenkins 사용자의 권한을 부여하는것으로

 

sudo groupadd docker
sudo usermod -aG docker jenkins
newgrp docker
docker restart 젠킨슨 컨테이너

- 이렇게 해도 안됬는데 그이유는 Docker 소켓의 권한이 변경되지 않아서다!

- 해답으로는 아래 명령어를 통해 Docker 소켓의 권한을 변경하는 것이다!!!! (로컬에서 진행해도 됬었음!)

 

sudo chmod 666 /var/run/docker.sock

 

 

* Dockerfile 생성

- 이번 서버 초기화 후 CI/CD 구축에 Dockerfile을 통한 구축을 진행하였다!.

 

 

sudo docker ps 명령어를 통해 도커가 실행되는것을 보면 컨테이너가 실행되고 있음을 확인할수 있을것이다.

 

컨테이너가 실행되고 있다면 {IP주소}:포트번호 이렇게 주소창에 들어가면 다음과 같은 페이지가 있을 것이다. 패스워드는 젠킨스 실행했다면 cmd 창에서 확인할수 있을것이다.

 

- 이렇게 비밀 번호 창이 나올껀데 만약에 처음 cmd 창에서 발견하지 못했다면 ? 도커(젠킨슨) 안에 들어가서 비밀번호를 확인해야함!

 

// jenkins 컨테이너에 접속
$ sudo docker exec -it jenkins bash
// 초기 관리자 키 확인
$ cat /var/jenkins_home/secrets/initialAdminPassword

docer exec 명령어나 여러가지를 통해 확인할수 도커안에서 파일을 확인할수 있을것이다.

 

 

 

(웬만하면 다설치되어야함!)

 

- 새로운 아이템가면 Free Style 과 Pipeline이 보일꺼야!

 

- 장단점에 대해 서술 

  장점 
Freestyle 방식  1. 웹 기반의 GUI를 통해 플러그인 쉽게 가능! 1. CI 파이프라인 변경 사항을 위해서는 젠킨스에 로그인해 각각의 프리스타일 설정 변경해야함
2. CI/CD 과정을 콘솔을 통해서만 확인 가능
3. 전체 과정에 대한 확인 및 피드백 힘듬!
Pipeline 방식 1. 파이프라인은 코드로 프로젝트 설정을 할수 있어 프리스타일과 다르게 젠킨스 웹에 직접 접근없이 변경 가능(물론 웹을 통한 변경도 가능!)
2. CI/CD 파이프라인 설정을 하나의 스크립트 파일(Jenkinsfile)을 통한 프로그래밍 제어 및 흐름제어 가능!
3. 버전 관리 가능!
4. GUI를 통한 과정 실행및 시간 확인 가능!
1. 스크립트 코딩이 쉽지 않음!

 

- 나는 Pipeline 방식으로 진행될 예정!

 

 

아래 파이프라인 스크립트 설정하는 방법은 2가지가 있어!

첫번째(Pipeline script)는 젠킨스 웹 내에서 스크립트를 작성하여 관리하는 방식이고

두번째 (Pipeline script from SCM) 는 프로젝트 내에서 Jenkinsfile에 스크립트를 작성하여 관리하는거야!

 

그리고 이 스크립트를 작성할수 있는 타입은 2가지야! Declative Pipeline 과 Scripted Pipeline [공식문서]

 

일단 Pipline script를 다음과 같이 작성하고 저장을 누르면 오류가 생겨!

 

pipeline{
	agent any
   
    stages{
    	stage('Checkout'){
        	steps{
            	git branch: 'master',
            	url: "https://lab.ssafy.com/s11-webmobile3-sub2/S11P12D101.git"
            }
        }
    }
}

 

<오류> Git 리포지 토리 에러야 즉 Git 에서 내가 접근하기 위한 권한이 필요한데 그게 없다는거야!

 

 

 

'SSAFY프로젝트' 카테고리의 다른 글

젠킨슨 최종 정리 -3  (1) 2024.10.17
젠킨슨 최종 정리 -2  (4) 2024.10.15
젠킨슨 공통2  (0) 2024.10.10
젠킨슨 백업  (0) 2024.08.07
Jenkins를 이용한 CI/CD 구축하기 -4 (백엔드 build & 배포 성공)  (0) 2024.08.02