Jenkinsでフロントエンドとバックエンドを一つのWARファイルにまとめる
概要
Jenkins2系から標準で使えるようになった、パイプラインビルドを使って
フロントエンドとバックエンドのソースを一つのWARファイルとしてビルドする設定を書いたときの内容。
- Jenkins Windows版(2.164.1)
- フロントエンド:Vue.js + webpack(3.8.1)
- バックエンド :SpringBoot + gradle(5.4.1)
詳細
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'
}
}
}
}
}
まとめ
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」で容易にできるので、思ってたより簡単に実現できた。
フロントエンドのビルドに使うノードを別のサーバーで動かしたりしたほうがいいなぁとは当初から考えていたが、
あまり時間も取れなかったため、動かすのを優先して上記のような設定になっている。
動かし始めて大きな問題がないため、現状維持のままずるずるといってしまっているが、
Author And Source
この問題について(Jenkinsでフロントエンドとバックエンドを一つのWARファイルにまとめる), 我々は、より多くの情報をここで見つけました https://qiita.com/nkk777dev/items/d3dd0e52b5d992e70616著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .