====== Jenkins ====== * description : jenkins 관련 내용 기술 * author : 도봉산핵주먹 * email : hylee@repia.com * lastupdate : 2020-06-10 ===== Jenkins ===== ==== Jenkins란? ==== * 젠킨스(Jenkins)는 소프트웨어 개발 시 지속적 통합(CI : continuous integration) 서비스를 제공하는 툴이다. \\ * 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유 영역에 있는 Git등의 저장소에 빈번히 업로드함으로써 지속적 통합이 가능하도록 해 준다. \\ * 젠킨스는 오라클과의 분쟁 이후 허드슨으로부터 분기되었다. \\ * [[https://onlywis.tistory.com/9|CI/CD]] 도구 플러그인으로 정적분석도구(SpotBugs, ...)를 추가할 수 있음 > 출처 \\ * [[https://ko.wikipedia.org/wiki/젠킨스|위키백과]] \\ ===== 설치 ===== ==== 1. 다운로드 ==== [[https://jenkins.io/download/|Jenkins download]] \\ 아래 표시된 ''Past Releases'' 로 들어갑니다. \\ 제일 높은 버전을 받으면 됩니다. \\ Tip : ex) 2.50, 2.100 이 있으면 2.100이 최신입니다. (.뒤에 숫자가 높은게 최신)\\ Tip : jenkins는 2.54버전 부터 자바 8을 사용해야 합니다.\\ {{:wiki:third_party:jenkins:down_page.png?direct&200|}} \\ ==== 2. 구동 및 화면 띄우기 ==== .sh 파일을 만들어줍니다.. \\ 아래 code에 보면 알다싶이 #{jenkins 경로}/log 폴더를 만들어줘야 합니다. #jenkins.sh #!/bin/bash JAVA_HOME=#{java 경로} HTTP_PORT=9090 JENKINS_HOME=#{jenkins 경로} export JAVA_HOME HTTP_PORT nohup $JAVA_HOME/bin/java -jar $JENKINS_HOME/jenkins.war --httpPort=$HTTP_PORT --sessionTimeout=120 -XX:+AggressiveOpts >> ./logs/jenkins.log 2>&1 & \\ jenkins.sh 파일을 만든 후 port 방화벽을 풀고 실행해 줍니다. [search@localhost jenkins]$ sudo firewall-cmd --zone=public --add-port=9090/tcp --permanent success [search@localhost jenkins]$ sudo firewall-cmd --reload success [search@localhost jenkins]$ sudo firewall-cmd --list-ports 22/tcp 3306/tcp 8080/tcp 80/tcp 9090/tcp [search@localhost jenkins]$ ./jenkins.sh \\ 그럼 아래와 같이 나옵니다. {{:wiki:third_party:jenkins:login_page.png?direct&400|}} ==== 3. 로그인 ==== 위 화면을 보면 ''/home/search/.jenkins/secrets/initialAdminPassword'' 이런 문구가 있습니다. \\ 이건 search 계정으로 ./jenkins.sh를 실행해서 사용자가 search가 된거고 그 경로안에 패스워드가 있다는 겁입니다. \\ vi /home/search/.jenkins/secrets/initialAdminPassword 이렇게 치면 한줄로된 문자열이있는데 그걸 복사해서 Administrator password에 붙여넣고 로그인하면 됩니다. \\ {{:wiki:third_party:jenkins:plugin_suggest.png?direct&400|}}\\ 플러그인 설치화면이 나옵니다. \\ 그럼 ''suggested''를 클릭하면 플러그인을 설치합니다. \\ Tip : 플러그인 설치화면에서 다 false이 되면 jenkins 낮은 버전을 받은것입니다.\\ ==== 4. 설정 (svn + war배포)==== {{:wiki:third_party:jenkins:main.png?direct&400|}}\\ 로그인을 한다음 왼쪽 위에 새로운 Item을 클릭 합니다.\\ \\ {{:wiki:third_party:jenkins:new_item.png?direct&600|}}\\ ''Item name''을 입력한 다음 ''Freesyle project''를 클릭합니다.\\ {{:wiki:third_party:jenkins:sourc_code.png?direct&600|}}\\ 그림과 같이 네모 설정해주면 됩니다.\\ Credentials은 계정정보이며 Add를 클릭해서 계정정보를 입력해주면 됩니다.\\ Tip : ''Repository URL''은 현재 우리 Apps에 대한 Url (eclips에 설정되어 있는 Url)이며 꼭 ''/trunk''까지 지정해야 됩니다.\\ \\ \\ 여기까지 저장하고 Jenkins > Jenkins 관리 > Global Tool Configuration 로 들어가서 maven 설정을 먼저해줍니다.\\ {{:wiki:third_party:jenkins:setting_maven.png?direct&600|}}\\ \\ 그 후에 다시 설정하고 있던 Item으로 돌아 갑니다. \\ {{:wiki:third_party:jenkins:setting_maven2.png?direct&600|}}\\ Maven Version : 방금 위에서 설정한 값이 나오면 선택해 주면 됩니다. \\ Goals : clean install 을 입력해줍니다.\\ ==== 5. 빌드 후 조치 ==== === 5-1. jenkins 설치 서버내에 배포 === 4.번까지 완료후에 아래 ''Add build step''을 클릭해서 ''Execute shell''을 클릭하면 Command가 나오는데 \\ 이 셋팅은 jenkins를 설치한 서버에 .war를 풀어 배포를 하는 것이라면 추천합니다. \\ 평소에 .war를 풀던 .sh 파일을 실행만 시키면 됩니다.\\ === 5-2. jenkins 설치 서버외에 배포 === 5.1과는 달리 jenkins서버말고 다른서버나 여러 서버를 설정해서 다발적으로 또는 효율적으로 쓰려면 \\ 빌드 후 조치에서 Send build artifacts over SSH 를 선택해야 합니다.\\ Send build artifacts over SSH가 안보인다면 ''Publish Over SSH Plugin''를 설치해야 합니다.\\ Plugin이 설치가 됬다면 ''Jenkins > 환경설정''에 들어가서 맨 하단에 ''SSH Servers''가 생겼을 겁니다.\\ 그럼 아래 사진과 같이 설정해 주면됩니다.(Apps 기준 설정)\\ {{:wiki:third_party:jenkins:ssh_servers.png?direct&600|}}\\ 그 후에 다시 설정하고 있던 Item으로 돌아 갑니다. \\ {{:wiki:third_party:jenkins:Item_SSH_Servers.png?direct&600|}}\\ Remove prejix : 설정 안해주면 ROOT 경로에 ROOT/trunk/target/apps-1.0.0.war가 복사됩니다.\\ Exec command : 설정한 대로 빌드하고 끝나면 bash에 사용할 명령어를 쓰면 됩니다.\\ ===== Tip ===== ===== Troubleshooting ===== ===== Ref ===== * [[https://myjamong.tistory.com/11|CentOS 7 Jenkins 설치 :: 마이자몽]] * [[https://waspro.tistory.com/551|Jenkins 설치 가이드]] * [[https://qjadud22.tistory.com/34|CentOS 6 Jenkins로 SVN + Spring Maven 프로젝트 자동 빌드 배포 셋팅]] * [[https://heowc.tistory.com/77|CI - 젠킨스 원격지 배포하기(SSH)]] * [[https://yookeun.github.io/tools/2018/04/14/jenkins-remote/|젠킨스(Jenkins)에서 원격(Remote)으로 배포하기]] * [[https://midas123.tistory.com/230|젠킨스 빌드 도중 Cannot run program "mvn" error=2, No such file or directory]] {{tag>도봉산핵주먹 jenkins}}