설치
$ 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
암호값 입력
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키를 선택하고 붙여넣습니다.
- 새로운 Item을 선택
- Freestyle project를 선택
- 깃허브 저장소에서 SSH주소를 복사
- 젠킨스에서 Repository URL, Credentials를 변경
- Branches to build에서 main으로 변경합니다.
- GitHub hook trigger for GITScm polling 체크
- Build항목에서 Execute shell 체크
# Command 내용
- https://16e6c697a91183743a6d196d4f63b3aa035207c5@github.com/seongs156/vue_4.5.11_init.git 이부분을 자신에 주소로 변경해주면 됩니다.
- Pirvate저장소인 경우
16e6c697a91183743a6d196d4f63b3aa035207c5 이부분을 자신의 Github 엑세스 토큰으로 넣어야 합니다.
엑세스 토큰 생성 참고 : https://jootc.com/p/201905122828
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 빌드확인
- 변경확인
- 새로운 Item을 선택
- Freestyle project를 선택
- 깃허브 저장소에서 SSH주소를 복사
- 젠킨스에서 Repository URL, Credentials를 변경
- Branches to build에서 main으로 변경합니다.
- GitHub hook trigger for GITScm polling 체크
- Build항목에서 Execute shell 체크
# Command 내용
- https://16e6c697a91183743a6d196d4f63b3aa035207c5@github.com/seongs156/laravel_6.18_init.git 이부분을 자신에 주소로 변경해주면 됩니다.
- Pirvate저장소인 경우
16e6c697a91183743a6d196d4f63b3aa035207c5 이부분을 자신의 Github 엑세스 토큰으로 넣어야 합니다.
엑세스 토큰 생성 참고 : https://jootc.com/p/201905122828
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 빌드확인
- 변경확인