CI/CD 그대로 따라하기 1편

강재민·2022년 6월 3일
0
post-thumbnail

Chocolatey 설치

윈도우에 패키지 설치를 편하게 Code로 할 수 있게 해준다.


Vagrant 설치

가상머신을 간단한 Vagrantfile로 구성할 수 있게 도와준다.


Vagrantfile 구성

터미널이 적용되어있는 파워쉘을 실행시켜야한다.

### 혹시 vscode가 설치 안되어있는 사람은 해당 명령어로 설치해준다.

choco install -y vscode
cd ~
mkdir vagrant		# mkdir은 디렉토리를 만드는 명령어
cd vagrant			# cd는 뒤에오는 디렉토리로 들어가는 명령어
mkdir cicd
cd cicd
code Vagrantfile	# code는 비쥬얼스튜디오라는 편집기로 Vagrantfile이라는 파일을 만들어서 편집한다는 의미

Vagrant.configure("2") do |config|
        # Define VM
        config.vm.define "jenkins" do |ubuntu|
                ubuntu.vm.box = "ubuntu/focal64"
                ubuntu.vm.hostname = "jenkins"
                ubuntu.vm.network "private_network", ip: "192.168.59.10"
                ubuntu.vm.provider "virtualbox" do |vb|
                        vb.name = "jenkins"
                        vb.cpus = 2
                        vb.memory = 3000
                end
        end
        config.vm.provision "shell", inline: <<-SHELL
          sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
          sed -i 's/archive.ubuntu.com/mirror.kakao.com/g' /etc/apt/sources.list
          sed -i 's/security.ubuntu.com/mirror.kakao.com/g' /etc/apt/sources.list
          systemctl restart ssh
        SHELL
end

위 내용을 아래 사진처럼 붙여넣고 Ctrl+S를 눌러서 저장하고 X눌러서 종료


가상머신 시작

vagrant up


이제 vagrant up을 해서 가상머신을 실행한다.

vagrant status		# 현재 가상머신의 상태를 보여준다.


가상머신에 접속

vagrant ssh jenkins		# jenkins라는 가상머신에 ssh접속을 한다는 의미



폰트 다운로드

https://github.com/powerline/fonts/archive/refs/heads/master.zip
위 링크에서 폰트 패키지를 다운 받아주고 압축을 풀어주면

이런 목록을 볼 수 있는데
Meslo slashed를 들어가서

이렇게 4개를 드래그해서 엔터눌러주고 전부다 설치해주면된다.


폰트 적용

파워쉘에서

아래로 화살표 모양 (^의 반대모양)을 누르고 설정을 누른다

그리고 Windows PowerShell에 들어가서 추가설정의 모양을 누른다.

그러면 다음과같은 창이 나오는데

글꼴을 위 사진과같이 Meslo LG M for Powerline으로 변경해주고
저장해준다.
그리고 다시 터미널창으로 돌아오자.


powerlevel10k 설치

sudo apt update			# 패키지목록을 업데이트해야 패키지 설치가 가능하다. 우분투의 특징이다.
sudo apt install -y zsh	# zsh을 설치한다.
sudo apt install -y curl
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
질문이 나오면, Y			# 패키지를 설치하고 적용한다.
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
질문이 나오면, Y			# 패키지를 설치하고 적용한다.


powerlevel10k 테마 설정

vi ~/.zshrc


ZSH_THEME 부분을 위 사진처럼 편집해준다.
i를 눌러서 편집할 수 있다.
편집하고 저장하고 나가는건
: w q

그리고 터미널창에서..

exec zsh			#설정 적용

위 명령어를 입력하면 아래와 같은 화면이 나오게된다.

### 오른쪽은 질문이고 왼쪽은 그에대한 답변이다
### 해당하는 영문 또는 숫자를 입력하면 바로 다음 질문으로 넘어가게 된다.

y		#Does this look like a diamond (rotated square)?
n		#Does this look like a lock?
n		#Does this look like a lock?
3		#Prompt Style
1		#Character Set
2    	#Show current time?
2		#Prompt Separators
1		#Prompt Heads
1		#Prompt Tails
2		#Prompt Height
2		#Prompt Connection
4		#Prompt Frame
2		#Connection & Frame Color
1		#Prompt Spacing
2		#Prompt Flow
y		#Enable Transient Prompt?
1		#Instant Prompt Mode
y		#Apply changes to ~/.zshrc?


zsh 추가 패키지 설치

git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-completions ${ZSH_CUSTOM:-${ZSH:-~/.oh-my-zsh}/custom}/plugins/zsh-completions
wget https://github.com/ahmetb/kubectx/releases/download/v0.9.4/kubectx
wget https://github.com/ahmetb/kubectx/releases/download/v0.9.4/kubens
sudo install kubectx /usr/local/bin
sudo install kubens /usr/local/bin
source ~/.zshrc

zsh 플러그인 추가

vi ~/.zshrc
### 아래와같이 plugins 부분을 편집해주고 저장
### 밑으로 찾다보면 발견할 수 있다.

# Standard plugins can be found in $ZSH/plugins/
# Custom plugins may be added to $ZSH_CUSTOM/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(
        git
        zsh-autosuggestions
        zsh-completions
        docker
        kubectl
)

source $ZSH/oh-my-zsh.sh

# User configuration

# export MANPATH="/usr/local/man:$MANPATH"

# You may need to manually set your language environment

source ~/.zshrc				#앞서 했던 모든 설정을 적용시켜준다.

Jenkins 설치

아래 명령어를 한 줄 한 줄 실행시키면 된다.

sudo apt install -y openjdk-11-jdk
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee \
    /usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
    https://pkg.jenkins.io/debian-stable binary/" | sudo tee \
    /etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt-get update
sudo apt-get install -y fontconfig jenkins
systemctl status jenkins

아래 메시지를 확인하고 빠져 나올 때는 ctrl + c를 누르면 된다.

vi .zshrc

Shift + g 를 누르면 맨 아랫단으로 이동할 수 있다. 아래 내용을 복사해서

JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/

PATH=$PATH:$JAVA_HOME

아래 사진과 같이 편집해주고 저장해준다. esc :wq

아래 명령어로 변경사항을 적용시켜준다.

source ~/.zshrc

Jenkins 접속

### 크롬 주소창에

http://192.168.59.10:8080


이렇게 비밀번호를 입력하라는 창이 나오는데
아래 명령어를 통해 비밀번호를 얻을 수 있다.

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


비밀번호를 입력하고 들어가면

여기서 Select plugins to install을 클릭한다.
이것을 클릭하면 plugin을 custom해서 사용할 수 있게 된다.
그리고 아무것도 설정하지 않고 오른쪽 아래의 install버튼을 클릭한다.


설치가 완료가 되면 다음과같이 알아서 설정해주고 Save and Continue를 클릭해준다.

여기서도 Save and Finish를 클릭 그리고 바로 Start using Jenkins클릭

다음과 같은 화면이 출력되면 된다.


jenkins 간단한 실습


새로운 Item 클릭

이름은 원하는거 아무거나 쓰고
Freestyle project 클릭
아래에 OK클릭

이런 페이지가 나올 것이다. 당황하지 말고 아래에서 Build를 찾아서 Add build step클릭하면

아래와 같이 나올 것이다. 여기서 Execute shell 클릭

echo "Hello My First Project" > /tmp/hello_first_project.txt

위의 문구를 복사해서 아래와 같이 붙여넣어준다.

아래 사진의 버튼에서 Apply를 먼저 누르고 저장을 누른다.

그리고

왼쪽 메뉴바에서 Build Now를 누르면 Jenkins가 우리가 등록해놓은 명령어를 실행한다.
터미널 창에서 아래 명령어를 입력하면

cat /tmp/hello_first_project.txt


결과가 잘 나오는 것을 확인할 수 있다.


Git 회원가입

https://github.com/
위 링크에 들어가서 본인 Git 계정을 만들자.


Fork

https://github.com/c1t1d0s7/source-java-maven-hello-world
위 링크를 들어가서 오른쪽 상단의

Fork 를 누르고 내 레포지토리에 가져온다.

Fork를 하면 본인 계정이름/source-java-maven-hello-world으로 된 레포지토리가 추가된 것을 확인할 수 있다.


Git에 ssh등록하기

가져온 내 레포지토리에서..
Code를 누르고 SSH를 누르면 다음과 같은 창이 나오는데

add a new public key를 선택한다.

이런 창이 뜨게 되는데 Title에는 원하는 이름을 적으면 되고 아래 Key에는 퍼블릭키를 붙여넣으면 된다.

퍼블릭키를 받아오는 방법은 다음과 같다.
터미널창에서..

ssh-keygen						#이후 그냥 엔터엔터엔터
sudo cat ~/.ssh/id_rsa.pub		#출력값을 복사해서 붙여넣으면 된다.

붙여넣고 Add SSH key 클릭

다시 레포지토리로 돌아와서
CodeSSH를 누르면 다음과 같이 바뀌어 있는 것을 확인할 수 있다.


Git clone 가져오기

터미널 창으로 돌아와서..

mkdir cicd
cd cicd
git clone <Fork한 리포지토리 주소를 복사해서 붙여넣는다>

###예를들면 아래와 같은 식이다 꼭 본인 레포지토리를 사용해야한다.
###아래 주소를 복사해서 넣으면 안된다.
git clone https://github.com/re-Push/source-java-maven-hello-world
###


다음과 같이 레포지토리를 불러온 것을 확인할 수 있다.


Maven 설치하기

sudo apt install -y maven

Maven 실행해보기

cd ~/cicd/source-java-maven-hello-world
mvn package					#이전에 빌드된 정보를 지워줌
mvn clean					#자바코드를 빌드해서 WAR파일로 만들어준다.

Maven 환경변수 설정해주기

터미널 창에서..

vi ~/.zshrc

아래 내용을 복사해서 맨 아래로 커서를 내려서

M2_HOME=/usr/share/maven
M2=$M2_HOME/bin


이렇게 붙여넣어주고
esc :wq해준다. 그리고 아래 명령어를 실행시켜준다.

source ~/.zshrc

Jenkins에 Maven Plugin 설치하기

Jenkins 웹페이지로 돌아가서 왼쪽 메뉴바를 보면

Jenkins 관리를 클릭한다.

플러그인 관리를 클릭한다.

설치가능을 클릭한다.
오른쪽 상단에

SearchMaven을 입력한다.


Maven Integration의 왼쪽 체크박스를 클릭하고 아래로 스크롤을 내려보면서 찾아보면 Maven Invoker가 있다. 이것 또한 왼쪽 체크박스를 클릭해서 활성화 시켜준다.

활성화 시켰으면 아래 사진처럼 가장 아래에 Install without restart를 클릭한다.

스크롤 맨 아래로 내려서 기다려주면

설치를 완료한다.


Jenkins에서 Maven실습해보기


이렇게 대시보드로 돌아오고 시작한다..
왼쪽 메뉴바에서 새로운 Item을 클릭한다.

Maven project가 새로 생긴것을 확인할 수 있다. 이름은 대충 test로 짓고 Maven project를 클릭하고 OK를 눌른다.

소스관리에서 Git을 클릭해서 활성화시켜준다.


Repository URL 이곳에 본인이 아까 Fork한 깃허브의 레포지토리를 복사해서 붙여넣어준다.

나의 경우는 이렇다. 각자 다른 URL을 가지고 있을 것이다.

그리고 아래 사진부분의 mastermain으로 바꿔준다.

그리고

위 사진과 같은 에러가 나오는 이유는 환경변수 설정을 통해 해결할 수 있다.
the tool configuration링크를 클릭한다.


위 사진에서 add JDK를 클릭한다.

NAME은 JAVA_HOME 으로 입력하고

해당 화면에서 Install automatically를 클릭하면 아래 사진과 같이 바뀐다.

JAVA_HOME에는 아래 입력값을 붙여넣어준다.

/usr/lib/jvm/java-11-openjdk-amd64/

그리고 아래로 스크롤을 내려서
똑같이 Install automatically를 비활성화 시켜주고
아래 사진과 같이 설정해준다.

M2_HOME

/usr/share/maven


Apply클릭 하고 Save클릭

그리고 다시 대쉬보드로 들어가서


test로 들어간다.

왼쪽 메뉴에서 구성 클릭
혹시나 저장이 안되어있다면 아까 적어놓았던 것들을 다시 채워넣자.

그리고 아까와 같은 오류메시지가 뜨지 않는 것을 확인할 수 있다.

그리고 Goals and options항목에 clean package를 입력하고

apply하고 저장을 누른다.

그리고

Build Now를 클릭한다.그리고 Build History에 해당 빌드넘버 우측 메뉴를 클릭해서 Console Outpout을 클릭해서 보면

실행이 잘 되는 것을 확인할 수 있다.
그리고 실행결과 우리가 얻게되는 파일은

cd /var/lib/jenkins/workspace/test/webapp/target
ls


webapp.war 파일이다.
나중에 이 파일을 받아서 웹페이지를 구성할 수 있게된다.


가상머신 추가

터미널 창으로 돌아와서

exit
exit

위 명령어를 입력해서 나오고

code Vagrantfile
Vagrant.configure("2") do |config|
    # Define VM
    config.vm.define "jenkins" do |ubuntu|
            ubuntu.vm.box = "ubuntu/focal64"
            ubuntu.vm.hostname = "jenkins"
            ubuntu.vm.network "private_network", ip: "192.168.59.10"
            ubuntu.vm.provider "virtualbox" do |vb|
                    vb.name = "jenkins"
                    vb.cpus = 2
                    vb.memory = 3000
            end
    end
    config.vm.define "tomcat" do |ubuntu|
	    ubuntu.vm.box = "ubuntu/focal64"
	    ubuntu.vm.hostname = "tomcat"
	    ubuntu.vm.network "private_network", ip: "192.168.59.11"
	    ubuntu.vm.provider "virtualbox" do |vb|
	            vb.name = "tomcat"
		    vb.cpus = 2
		    vb.memory = 2000
            end
    end
    
    config.vm.provision "shell", inline: <<-SHELL
      sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
      sed -i 's/archive.ubuntu.com/mirror.kakao.com/g' /etc/apt/sources.list
      sed -i 's/security.ubuntu.com/mirror.kakao.com/g' /etc/apt/sources.list
      systemctl restart ssh
    SHELL
end

아래 사진과 같이 Vagrantfile을 수정한다.

Ctrl+s눌러서 저장하고 나온다.
터미널창에

vagrant up
vagrant status


0개의 댓글