CI, CD: 22개의 글
CI/CD ? CI(Continuous Intergration)란 개발자들이 빠른 주기로 작업한 내용을 통합 브랜치에 통합하고 빌드하는 개발 방식을 의미한다. 현재 진행하고 있는 프로젝트에서도 giflow 브랜치 전략을 이용해 하나의 기능을 feature라는 브랜치로 분리해 작업한후 develop 브랜치로 병합하는 작업을 거치고있다. CI는 위 예시처럼 개인이 작업한 코드를 master 또는 develop 브랜치에 통합하는 과정에서 발생하는 이슈를 빠르게 발견하기 위해서 필요하다. CD 는 Continuous Delivery 혹은 Continuous Depolyment 두 용어 모두의 축약어이다. Continuous Delivery는 공유 레포지토리까지 자동으로 Release하는 것을 의미하며, Cont..
오늘 다루어볼 포스팅은 Git과 Jenkins를 연동한 이후에 Jenkins Mulibranch pipeline으로 springboot web project를 docker image로 빌드 후 push하는 것까지 다루어볼 것이다. 이전까지는 오늘 다루어볼 포스팅의 연습 및 준비단계였고 본격적으로 CI/CD에 대해 다루어본다. 물론 오늘 다루어볼 포스팅 내용이 실무에서 그대로 활용하기 애매할 수는 있지만 포스팅을 이어나가면서 좀 더 보완해나갈 것이다. 1. Git & Jenkins 연동 후 Multibranch pipeline 작성 Jenkins - CentOS에 docker 환경으로 Jenkins 설치(Jenkins&GitHub CI) Jenkins - Jenkins&GitHub을 이용하여 아주 간단한 ..
아마 이번 포스팅부터 Jenkins(젠킨스)에서 정말 쓸모 있는 부분을 다룰 것 같다. 젠킨스 파이프라인을 다루기 전에 Jenkins 안에서 dood(docker out of docker)로 docker agent를 실행하는 방법에 대해 다루어 볼 것이다. 실제로 많이 사용하는 유즈케이스이기도 하다. 그 이유는 필요한 라이브러리를 직접 설치하거나 하지 않고 Jenkins pipeline 스크립트 안에서 docker agent를 이용해 설치하면 별도로 의존성있는 라이브러리를 직접 설치하지 않아도 되고, 또한 Jenkins에서 Docker image를 빌드할때도 필요하다. 즉, 요즘 같이 도커가 대중화되있는 시대에는 거의 필수이지 않을까 싶다.(더 좋은 방법이 있다면 댓글로 알려주시면 감사하겠다.) 우리가 ..
오늘 다루어볼 포스팅은 간단하게 젠킨스의 빌드 시작과 성공/실패에 대한 알림을 슬랙으로 받는 방법이다. 간단해서 아주 짧은 포스팅이 될 것 같다. 1. Slack Jenkins CI app install 예제는 이미 슬랙이 설치되어있고 계정이 있다는 가정에서 진행한다. 채널을 하나 생성해준 후 밑의 Apps 버튼을 누른다. 젠킨스(Jenkins)로 검색하여 다운로드 한다. 알림받을 채널을 입력한다. 진행하다보면 슬랙의 Team Subdomain과 인증 token을 받을 수 있다. 이러한 데이터를 이용하여 Jenkins에서 Slack과의 연동 설정을 할것이다. 젠킨스 설정에서 이제 슬랙과 연동을 할 것이다. 플러그인 관리에서 Slack Notification plugin을 install 해준다. 이제 Je..
이전 포스팅에 이어 Jenkins&GitHub을 이용한 CI 실습을 다루어볼 것이다. 이번 포스팅에서는 본격적으로 실습을 진행하기 전에 아주 간단한 echo를 찍어주는 pipeline 하나를 만들어 볼 것이다. 사실 이것을 설명하는 이유는 멀티브랜치 파이프라인에 대해 조금 이해해보기 위함이다. 1. Multibranch Pipeline 생성 사실 우리가 개발할때, 버전관리 시스템에서 브랜치를 하나만 사용하여 개발하지 않는다. 각 회사마다의 브랜치 전략이 있겠지만 가장 대중적인 브랜치 전략은 아래와 같다. Feature branch Integration branch Master branch(production branch) 이렇게 여러개의 브랜치를 가지고 개발을 진행하고 이러한 멀티 브랜치 전략에 대해 J..
오늘 다루어볼 내용은 CI의 핵심 젠킨스(Jenkins)를 다루어볼 것이다. 사실 이번 포스팅을 시작으로 젠킨스(Jenkins) 관련 몇개의 포스팅이 더 있을 듯하다. 오늘은 간단히 CentOS환경에 docker로 Jenkins를 설치해볼 것이다. 바로 예제로 넘어간다. 필자는 미리 CentOS VM을 준비하였다.(사실 회사에서 장비를 맘껏 받아쓸 수 있어서 ㅎㅎ 실습용으로 생성했다.) 이번 포스팅은 CentOS가 준비되어 있다라는 가정이다. 1. CentOS에 Docker Engine 설치 첫번째로 Docker Engine을 설치해보자. > sudo yum -y update > sudo yum -y install docker docker-registry > sudo systemctl start dock..
목록 설치하기 소스관리 : Jenkins + 원격 Git Server 사용하기 배포설정 : Jenkins + Node.js 프로젝트 배포하기 빌드 및 배포 : Jenkins + Node 연동하기 1) node 빌드를 위한 매개변수 추가 - remote_ip : 원격접속 아이피 - app_root : 프로젝트 소스가 들어있는 경로 - branch_name : git 에서 받을 브랜치 이름 2) Jenkins 관리 > 플러그인 관리 3) 설치 가능 탭 클릭 4) Managed Script 설치 5) Jenkins 관리 > Managed files 클릭 6) Add a new Config 클릭 7) Managed script file 를 체크한 다음 Submit 버튼 클릭 8) 위에서 선언한 Argument ..
목록 설치하기 소스관리 : Jenkins + 원격 Git Server 사용하기 배포설정 : Jenkins + Node.js 프로젝트 배포하기 소스코드관리 : Jenkins + Remote Git 사용하기 1) 빌드를 위한 git 설치 # yum install -y git 2) ssh key 생성 $ mkdir .ssh $ cd ./.ssh $ ssh-keygen -t rsa 3) Git Server에 ssh key 전송하기 # scp id_rsa.pub git@[Git Server 아이피]/home/[Git Server 사용자이름]/.ssh/jenkins_id_rsa.pub # scp id_rsa.pub git@192.168.136.122/home/git/.ssh/jenkins_id_rsa.pub 4) ..
목록 설치하기 소스관리 : Jenkins + 원격 Git Server 사용하기 배포설정 : Jenkins + Node.js 프로젝트 배포하기 1) wget 설치 # yum install -y wget 2) jenkins 레포지토리 추가/ key 파일 임포트 # wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo # rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key 3) jenkins 설치 # yum install -y jenkins 4) jenkins 포트변경 8080 ---> 9090 # vi /etc/sysconfig/jenkins JEN..
1. 환경- Ubuntu 12.04.4 LTS- JAVA7- jenkins 1.565- Tomcat 7.0- Maven 1.7.0_55 2. 다운로드 http://jenkins-ci.org/jenkins.war 파일을 다운받고 tomcat에 Deploy한다.tomcat에 Deploy하는 방법은 따로 설명하지 않겠다. 간단하게 webapps폴더에 넣고 tomcat실행하면 자동으로 Deploy된다. 접근 url 또한 http://localhost:8080/jenkins 이렇게 접근하면 된다. 3. 시스템 설정 - tomcat-users.xml 설정jenkins를 사용하여 tomcat에 자동 Deploy를 설정하기 위해서tomcat/conf/tomcat-users.xml 파일을 수정한다. - jenkins 관..