2024.07.12

김무영·2024년 7월 15일

jenkins 로컬 Docker war 배포

  1. Plugin 설치 (docker plugin, docker pipeline)

  2. 디렉토리 생성

  1. back-end/Jenkinsfile 수정
  pipeline {
      agent any
      tools{
          maven 'Maven'//젠킨스 tools의 설정한 Maven 이름
      }
      environment{
          JAVA_HOME = 'D:\\dev\\java-11-openjdk-11.0.15.9-1' //자바가 설치된 경로
          PATH = "${env.JAVA_HOME}\\bin;${env.PATH}"
      }
      // trigger{
      //     pollSCM('H/6 * * * 1-5')
      // }
      stages {
          stage('clone repository') {
              steps {
               git branch:'main',credentialsId:'github-token', 
                          url:'https://github.com/wooshinkwak/test_jenkins2.git'
              }
          }
          stage('build WAR'){
              steps{
                  script{
                      def mvnHome = tool name:'Maven', type:'hudson.tasks.Maven$MavenInstallation'
                      withEnv(["MAVEN_HOME=${mvnHome}"] ){
                          //pom.xml에 version노드의 이름으로 war가 targit 디렉토리에 생성된다.
                          bat "\"${mvnHome}\\bin\\mvn\" clean package -DskipTests"
                      }
                  }
              }
          }
          stage('Copy WAR') {
              steps {
                  script {
                      def warFile = 'target\\sist-1.0.0-BUILD-SNAPSHOT.war'
                      def destDir = 'd:\\test_docker'
                      bat """
                      if not exist ${destDir} mkdir ${destDir}
                      copy ${warFile} ${destDir}\\test_jenkins.war
                      """
                  }
              }
          }
         stage('Build Docker Image') {
              steps {
                  script {
                      def imageName = "test_jenkins_image"
                      def containerName = "test_jenkins_container"

                      // 기존 Docker 컨테이너 중지 및 삭제
                      bat """
                      docker stop ${containerName} || exit 0
                      docker rm ${containerName} || exit 0
                      """

                      // 기존 Docker 이미지 삭제
                      bat """
                      docker rmi -f ${imageName} || exit 0
                      """

                      // Dockerfile이 있는 디렉토리로 이동
                      dir('d:\\test_docker') {
                          def app = docker.build(imageName)
                      }
                  }
              }
          }
          stage('Run Docker Image') {
              steps {
                  script {
                      def containerName = "test_jenkins_container"
                      // Docker 이미지 실행
                      docker.image("test_jenkins_image").run("-d --name ${containerName} -p 80:8080")
                  }
              }
          }
          }
  }
  1. Github push

  2. Jenkins build

  3. Docker에서 image생성과 container생성 확인

    • docker images
    • docker ps -a
  4. 브라우저 열고 접속


#
  • WINGET Install nektos.act

  • act 버전체크

    • act --version
  • repository fork 후 VS코드에 Clone repository (지금은 바탕화면에 java_githubaction 폴더 생성)

  • github cli 설치

    • winget install --id github.cli
  • C:\Users\user\Desktop\java_githubaction\test-java11-17.git\hooks

0개의 댓글