- 순서
- JDK 설치
- Tomcat 설치 및 설정
- Docker 설치
- Jenkins(Docker) 설치
- Jenkins 빌드 및 배포
- Jenkins Pipeline (View, Script, Git Script)
OpenJDK 설치 - https://jdk.java.net/11/
https://tomcat.apache.org (9.x 버전 사용)
- Tomcat 설정 변경
- 포트 변경 경로 : %TOMCAT_HOME%\conf\server.xml
<Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
- 접근 엑세스 변경
- 경로 : %TOMCAT_HOME%\webapps\manager\META-INF\context.xml
- 경로 : %TOMCAT_HOME%\webapps\host-manager\META-INF\context.xml
다음 코드를 주석처리 한다.
<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->
- 유저 추가 %TOMCAT_HOME%\conf\tomcat-users.xml
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jxm"/>
<role rolename="manager-status"/>
<user username="admin" password="admin" roles="manager-gui, manager-script, manager-jxm, manager-status"/>
<user username="deployer" password="deployer" roles="manager-script"/>
<user username="tomcat" password="tomcat" roles="manager-gui"/>
- Docker 명령어
- 이미지 목록 확인
docker image ls
- 컨테이너 목록 확인
docker container ls
- 네트워크 목록 확인
docker network ls
- jenkins 설치
- https://github.com/jenkinsci/docker (github)
- https://www.jenkins.io/download/ 에서 docker 항목으로 이동
- https://hub.docker.com/r/jenkins/jenkins
- 이미지 다운로드
docker pull jenkins/jenkins
- Jenkins 실행 port 변경(컨테이너 외부 호출 : 컨테이너 내부 호출), name(이름 설정, 설정안하는 경우 임의 생성), restart(fail이라면 restart) -d(터미널 사용을 위해 백그라운드 데몬 형태로 실행)
docker run -d -p 8080:8080 -p 50000:50000 --name jenkins-server --restart=on-failure jenkins/jenkins:lts-jdk11
- Jenkins 초기 접속 http://127.0.0.1:8080 Administrator password
- 컨테이너 내 파일 확인 Docker 컨테이너에 직접 접속해서 파일을 확인할 수도 있다 도커가 설치된 경로 (윈도우)
C:\WINDOWS\system32>docker exec jenkins-server cat /var/jenkins_home/secrets/initialAdminPassword
docker ps
docker container exec -it 'docker container id를 입력' bash
- plugin : delivery pipeline
- 각각의 job에서 빌드 후 조치 : Build other projects > Trigger only if build is stable
(2) 새로운 View 추가 및 설정
pipeline {
agent any //실행가능한 어느 서버에서든 pipeline 실행
stages {
stage('build') {
//build stage 선언
}
stage('test') {
//test stage 선언
}
stage('deploy') {
//deploy stage 선언
}
}
}
-
Pipeline project 생성 및 Pipeline Syntax (1) item 생성 >Pipeline (project) > 하단 Pipeline scirpt > Pipeline Syntax (2) Steps > git: Git 선택 > Repository, Branch, 입력 & Generate Pipeline Script -> 생성된 git command를 다음에 복사
- stages에 설정한 대로 stage view 에 노출이 된다.
pipeline {
agent any
stages {
stage('Compile') {
steps {
echo "Compiled successfully!";
}
}
stage('JUnit') {
steps {
echo "JUnit passed successfully!";
}
}
stage('Code Analysis') {
steps {
echo "Code Analysis completed successfully!";
}
}
stage('Deploy') {
steps {
echo "Deployed successfully!";
}
}
}
post {
always {
echo "This will always run"
}
success {
echo "This will run when the run finished successfully"
}
failure {
echo "This will run if failed"
}
unstable {
echo "This will run when the run was marked as unstable"
}
changed {
echo "This will run when the state of the pipeline has changed"
}
}
}
- 스크립트에 의한 파일 실행 권한이 없으므로 파일을 실행할때 권한 문제가 발생된다.
서버에서 확인해보니 해당 파일에 실행권한이 없었다.
경로 : /var/jenkins_home/workspace/My-Second-Pipeline
파일 : .sh
- 해당 파일이 있는 경로에서 git 명령어 실행
git update-index --add --chmod=+x build.sh
git update-index --add --chmod=+x deploy.sh
git update-index --add --chmod=+x quality.sh
git update-index --add --chmod=+x unit.sh
git commit -m "Make build.sh executable"
git push -u origin master
(참고 : https://stackoverflow.com/questions/42154912/permission-denied-for-build-sh-file)
pipeline {
agent any
tools {
maven 'Maven3.8.5' // Jenkins > manage > configureTools 에서 Maven 항목을 열어보면 버전을 확인할 수 있다.
}
stages {
stage('github clone') {
steps {
git 'https://github.com/amirer21/cicd-project' // 해당 items에서 > Configure > 하단에 Pipeline Syntax > Step항목 Git Repository, branch를 넣고 Generate
}
}
stage('build') {
steps {
sh '''
echo build start
mvn clean compile package -DskipTests=true
'''
}
}
}
}