Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

jenkins 학습하기 #5

Open
pbg0205 opened this issue Dec 12, 2022 · 5 comments
Open

jenkins 학습하기 #5

pbg0205 opened this issue Dec 12, 2022 · 5 comments
Assignees
Labels

Comments

@pbg0205
Copy link
Owner

pbg0205 commented Dec 12, 2022

No description provided.

@pbg0205 pbg0205 self-assigned this Dec 12, 2022
@pbg0205
Copy link
Owner Author

pbg0205 commented Dec 16, 2022

@pbg0205
Copy link
Owner Author

pbg0205 commented Dec 18, 2022

jenkins docker container 실행하기

참고 레퍼런스 : Jenkins 로 도커 이미지 Build & Push 자동화하기

Jenkins???

  • 젠킨스는 배포 관련된 모든 종류의 작업을 자동화할 수 있는 오픈 소스 자동화 서버이다.

Jenkins 특징

  1. Jenkinsfile : Job 또는 파이프 라인을 정의할 수 있다.
  2. Scritped Pipeline : Groovy 언어를 통해 관리된다.
  3. Declaretive Pipeline : 사전에 정의된 구조만 사용할 수 있기 때문에 파이프라인이 단순한 경우에 적합하다.

docker coontainer 에서 젠킨스 실행시키기

1. jenkins 이미지 다운로드

docker pull jenkins/jenkins:lts

2. jenkins docker container 실행

docker run -d \
--name jenkins-docker \
-p 7979:8080 -p 50000:50000 \ 
-v /var/run/docker.sock:/var/run/docker.sock \
-v jenkins_home:/var/jenkins_home \
-u root \
jenkins/jenkins:lts
  • --name : container name

  • -p : <host port>:<container port>

  • -d : 백그라운드에서 컨테이너를 실행 유지

  • -v : volume mount

  • -u : user


3. jenkins 내부에서 docker 명령어를 사용하기 위해 도커를 설치

# jenkins container bash 실행
docker exec -it jenkins-docker bash 


curl https://get.docker.com/ > dockerinstall && chmod 777 dockerinstall && ./dockerinstall

# docker-compose 명령어를 사용하기 위해 필요
apt install docker-compose 

4. dokcer.sock 파일 권한 666으로 변경해서 다른 사용자도 접근 가능하도록 변경

exit # 컨테이너 접속해제 후 진행
sudo chmod 666 /var/run/docker.sock
  • 도커 엔진은 Host OS 의 /var/run./docker.sock 아래에 마운트된 Unix 소켓을 사용한다.
  • docker.sock : 도커 컨테이너 내부에서 데몬과 상호 작용을 할 수 있게 하는 Unix 소켓이다.
    (출처 : [Docker] docker.sock 이란?)

5. jenkins 접속

  1. 만약 비밀번호를 읽어버렸다면 /var/jenkins_home/config.xml 파일에서 <useSecurity>false 로 번경해 초기 로그인 기능을 종료하고 재시작
  2. dashboard > Jenkins 관리 > [Security] Configure Global Security 설정 >Security Realm : Jenkins' own user database 설정
  3. dashboard > Jenkins 관리 > [Security] Manage Users 에서 계정 삭제하고 다시 추가
    (출처 : [Jenkins on Docker] 계정 재생성(계정 정보 확인, 비밀번호 변경))

@pbg0205
Copy link
Owner Author

pbg0205 commented Dec 18, 2022

EC2 에서 jenkins CI 구축하기

참고 레퍼런스

  1. [jenkins doc] installing/linux
  2. AWS EC2 에 Jenkins 서버 구축하기

배포 환경

  • Amazon linux : t2.micro

Steps

1. yum 패키지 매지너 최신 업데이트

sudo yum -y update

2. yum 이 설치할 jenkins repository 경로 추가

sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo

3. Jenkins GPG key 추가

  • Jenkins 를 설치할 때, 파일들이 신뢰할 수 있는 source 로 부터 제공됨을 증명하기 위해 로컬 GPG 키링에 Jenkins GPG key 를 추가
sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key

4. Jenkins 설치

sudo yum install jenkins

5. jenkins 시작

sudo service jenkins start

6. 서버 포트 확인

netstat -ntlp | grep :8080

7. init password 확인

image

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

8. customize jenkins > Install suggested plugins

9. create user

@pbg0205
Copy link
Owner Author

pbg0205 commented Dec 18, 2022

파이프라인 practice

참고 레퍼런스
1. [jojoldu] 젠킨스 파이프라인 정리 - 1. 파이프라인 샘플 만들기
2. [jojoldu] 젠킨스 파이프라인 정리 - 2. Scripted

1. pipeline sample

image

  • scripted 문법 방식의 장점 : Groovy 로 빌드되기 때문에 Declarative 보다 훨씬 유연한 방법이다. (Declarative의 경우 Scripted보다 훨씬 더 간단하게 작성할 수 있는 방법)

2. scripted 문법 소개

(1) 문법

  1. node : scripted 파이프라인을 실행하는 젠킨스 에이전트 (Scripted 를 사용하면 node는 필수로 선언)
  2. dir : 명령을 수행할 디렉토리 / 폴더 정의
  3. stage : 파이프라인 각 단계를 말하며 어떤 단계에서 어던 작업을 실행할지 선언하는 곳
  4. git :Git 원격 저장소에서 프로젝트 클론
  5. sh : Unix 환경에서 실행할 명령어 실행
  6. def : Groovy 변수 혹은 함수 선언

@pbg0205
Copy link
Owner Author

pbg0205 commented Dec 18, 2022

jenkins ssh key 를 통해 인증하기

참고 레퍼런스

  1. [jojoldu] 2. Jenkins로 Beanstalk + Multi Module 배포하기 - Jenkins와 Github 연동하기

1. SSH 키 생성 및 등록

  • Github 연동을 ID & Password 방식으로 하면 보안에 취약하기 때문에 ssh 키로 연동
ssh-keygen -t rsa -f id_rsa
  • -t : key type (e.g. rsa)
  • -f : filename

(출처 : Ssh-keygen - 리눅스 명령 - 유닉스 명령)


키 확인

cat id_rsa

image


2. Jenkins > Credentials/System > Add Credentials 설정

  • kind : SSH Username with private key
  • private key 에 위에서 확인한 내용을 첨부 (with. start line, end line)

3. repository deploy key 설정

  • repository > settings > deploy keys 에서 public key 추가

image


4. repository webhook 설정

# 예시
http://ec12345678.compute-1.amazonaws.com/github-webhook/
  • payload url 을 첨부해서 설정

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant