(2) Jenkins + Github + Docker compose

김성훈·2021년 3월 17일
0
post-thumbnail

Jenkins

설치
$ yum install -y wget
$ yum install -y git
$ sudo wget -O /etc/yum.repos.d/jenkins.repo \
https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
sudo yum upgrade
sudo yum install jenkins java-11-openjdk.x86_64
sudo systemctl daemon-reload
$ sudo systemctl start jenkins
$ sudo usermod -a -G docker jenkins
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
$ service jenkins restart
$ sudo chmod 666 /var/run/docker.sock
jenkins sudo권한 허용
$ vi /etc/sudoers
jenkins ALL=(ALL) NOPASSWD:ALL

8080포트 허용

# 본인아이피:8080 접속

$ cat /var/lib/jenkins/secrets/initialAdminPassword
암호값 입력

Github Credential 연동

1) 이전글에서 VUE, Laravel프로젝트 동일한 깃허브 저장소로 사용하였는데 깃푸쉬를 하면 각각의 저장소에서 적용이 되게 하기 위해서 프로젝트별로 각각의 깃허브 저장소로 나눕니다.

2) 각각의 저장소에서 사용할 SSH키를 생성합니다.

SSH키 생성

$ cd /root/.ssh
$ mkdir vue
$ mkdir laravel

  • 물음에 엔터 누릅니다
    $ ssh-keygen -t rsa -f ~/.ssh/vue/vue

  • 물음에 엔터 누릅니다
    $ ssh-keygen -t rsa -f ~/.ssh/laravel/laravel

SSH키 Github 연동

  • Vue, Laravel연동
    각각의 저장소에서 Settings => Deploy keys => Add deploy key를 선택합니다.

  • vue 저장소


  • Centos에서 vue.pub키를 복사합니다.
    $ cat /root/.ssh/vue/vue.pub

  • 깃허브에 붙여넣습니다.

  • Webhook 추가
    setting => Webhooks => Add webhook을 선택합니다.
  • Payload URL에 자신의 IP또는 ${도메인}:8080/github-webhook/을 입력합니다.


  • laravel 저장소


  • Centos에서 laravel.pub키를 복사합니다.
    $ cat /root/.ssh/laravel/laravel.pub

  • 깃허브에 붙여넣습니다.

  • Webhook 추가
    setting => Webhooks => Add webhook을 선택합니다.
  • Payload URL에 자신의 IP또는 ${도메인}:8080/github-webhook/을 입력합니다.

SSH키 Jenkins 연동

  • Jenkins에 접속
  • Jenkins 관리 => Manage Credentials를 선택합니다.
  • global를 선택
  • Add Credentials 선택
  • Centos에서 vue 개인키를 복사합니다.
    $ cat /root/.ssh/vue/vue

  • SSH키를 선택하고 붙여넣습니다.

  • Centos에서 laravel 개인키를 복사합니다.
    $ cat /root/.ssh/laravel/laravel

  • SSH키를 선택하고 붙여넣습니다.

Vue 젠킨스 프로젝트

  • 새로운 Item을 선택

  • Freestyle project를 선택

  • 깃허브 저장소에서 SSH주소를 복사

  • 젠킨스에서 Repository URL, Credentials를 변경

  • Branches to build에서 main으로 변경합니다.

  • GitHub hook trigger for GITScm polling 체크

  • Build항목에서 Execute shell 체크

# Command 내용

cd /home/vue

sudo git pull https://16e6c697a91183743a6d196d4f63b3aa035207c5@github.com/seongs156/vue_4.5.11_init.git main

sudo docker ps -f name=vue-app -q | xargs --no-run-if-empty docker container stop

sudo docker container ls -a -fname=vue-app -q | xargs -r docker container rm

sudo docker images --no-trunc | grep 'vue_app' | awk '{ print $3 }' | xargs -r docker rmi

sudo docker-compose up -d --build

sudo docker rmi $(docker images -f "dangling=true" -q)
sudo docker ps -f name=vue-app -q | xargs --no-run-if-empty docker container stop

sudo docker container ls -a -fname=vue-app -q | xargs -r docker container rm

sudo docker images --no-trunc | grep 'vue_app' | awk '{ print $3 }' | xargs -r docker rmi

sudo rm -R -f /home/vue

sudo git clone https://16e6c697a91183743a6d196d4f63b3aa035207c5@github.com/seongs156/vue_4.5.11_init.git /home/vue

cd /home/vue

sudo docker-compose up -d --build

sudo docker rmi $(docker images -f "dangling=true" -q)

sudo docker restart leten-nginx-proxy

sudo docker restart nginx-proxy 

TEST

  • Vue 메세지 변경

  • Git push

  • Jenkins 빌드확인

  • 변경확인

laravel 젠킨스 프로젝트

  • 새로운 Item을 선택

  • Freestyle project를 선택

  • 깃허브 저장소에서 SSH주소를 복사

  • 젠킨스에서 Repository URL, Credentials를 변경

  • Branches to build에서 main으로 변경합니다.

  • GitHub hook trigger for GITScm polling 체크

  • Build항목에서 Execute shell 체크

# Command 내용

cd /home/user156_backend

sudo git pull https://16e6c697a91183743a6d196d4f63b3aa035207c5@github.com/seongs156/user156_backend.git master

sudo docker ps -f name=user156_backend-app -q | xargs --no-run-if-empty docker container stop

sudo docker container ls -a -fname=user156_backend-app -q | xargs -r docker container rm

sudo docker images --no-trunc | grep 'user156_backend' | awk '{ print $3 }' | xargs -r docker rmi

#sudo rm -R -f /home/user156_backend

#sudo git clone https://16e6c697a91183743a6d196d4f63b3aa035207c5@github.com/seongs156/user156_backend.git /home/yser156_backend

#sudo cp /home/user156_backend/.env.example /home/user156_backend/.env

#sudo chmod 777 -R /home/user156_backend

sudo docker-compose up -d --build

sudo docker exec user156_backend-app composer install

sudo docker exec user156_backend-app php artisan key:generate

sudo docker exec user156_backend-app php artisan passport:install

sudo docker restart leten-nginx-proxy

sudo docker restart nginx-proxy

TEST

  • Laravel 메세지 변경


  • Git push

  • Jenkins 빌드확인

  • 변경확인

0개의 댓글