Jenkins에서 프런트 엔드와 백엔드를 하나의 WAR 파일로 결합

2717 단어 Jenkinswebpackgradle

개요



Jenkins2 계에서 표준으로 사용할 수있게 된 파이프 라인 빌드를 사용하여
프런트 엔드와 백엔드의 소스를 하나의 WAR 파일로서 빌드하는 설정을 쓸 때의 내용.
  • Jenkins Windows 버전 (2.164.1)
  • 프런트 엔드: Vue.js + webpack (3.8.1)
  • 백엔드: SpringBoot + gradle(5.4.1)

  • 상세


  • Jenkins 작업으로 "파이프 라인"작업을 만듭니다.
  • 파이프라인 스크립트로서 이하의 내용을 기술한다.
  • pipeline {
        agent any
        stages {
            // フロントエンドのビルド
            stage('frontend_build') {
                steps {
                    node('master') {
                        deleteDir()
                        git branch: 'master', changelog: false, poll: false, url: '【フロントエンドのリポジトリURL】'
                        bat label: '', script: 'npm install'
                        bat label: '', script: 'npm run build_dev'
                        // ビルドしたファイルを stash で退避
                        stash name: 'frontend', includes: 'dist/**'
                        echo 'frontend build success'
                    }
                }
            }
            // warファイルのビルド
            stage('backend_build') {
                steps {
                    node('master') {
                        deleteDir()
                        git branch: 'master', changelog: false, poll: false, url: '【フロントエンドのリポジトリURL】'
                        // ビルドしたファイルを unstash で取り出す
                        unstash 'frontend'
                        bat label: 'delete_sample', script: 'rd /s /q src\\main\\resources\\static'
                        bat label: 'mkdir_static', script: 'mkdir src\\main\\resources\\static'
                        bat label: 'copy_frontend_build', script: 'xcopy /S dist src\\main\\resources\\static'
                        bat label: 'delete_frontend_build', script: 'rd /s /q dist'
                        withEnv(['JAVA_HOME=C:\\Program Files\\Java\\jdk1.8.0_201']) {
                            bat label: 'bootWar', script: 'gradlew.bat bootWar'
                        }
                        archiveArtifacts 'build/libs/**'
                        echo 'backend build success'
                    }   
                }    
            }    
        }    
    }
    

    요약



    노드간의 빌드한 파일의 전달이 「stash」 「unstash」로 용이하게 할 수 있으므로, 생각했던 것보다 간단하게 실현할 수 있었다.

    프런트 엔드의 빌드에 사용하는 노드를 다른 서버로 움직이거나 하는 편이 좋다고는 당초부터 생각하고 있었지만,
    그다지 시간도 걸리지 않았기 때문에, 움직이는 것을 우선해서 상기와 같은 설정이 되어 있다.

    움직이기 시작해 큰 문제가 없기 때문에, 현상 유지의 뒤틀림이라고 말해 버리고 있지만,

    좋은 웹페이지 즐겨찾기