97 lines
3.0 KiB
Groovy
97 lines
3.0 KiB
Groovy
pipeline {
|
|
agent { label 'rust' }
|
|
stages {
|
|
stage('Prepare workspace') {
|
|
environment {
|
|
PATH="/home/jenkins/.cargo/bin:$PATH"
|
|
}
|
|
steps {
|
|
sh 'cargo clean'
|
|
sh 'cross clean'
|
|
}
|
|
}
|
|
stage('Unit tests') {
|
|
environment {
|
|
PATH="/home/jenkins/.cargo/bin:$PATH"
|
|
}
|
|
steps {
|
|
sh 'cargo test --release'
|
|
}
|
|
}
|
|
stage('Build Linux x86-64') {
|
|
environment {
|
|
PATH="/home/jenkins/.cargo/bin:$PATH"
|
|
}
|
|
steps {
|
|
sh 'cargo build --release'
|
|
sh 'upx target/release/doscontainer'
|
|
}
|
|
}
|
|
stage('Build Windows x86-64') {
|
|
environment {
|
|
PATH="/home/jenkins/.cargo/bin:$PATH"
|
|
}
|
|
steps {
|
|
sh 'cross build --release --target x86_64-pc-windows-gnu'
|
|
sh 'upx target/x86_64-pc-windows-gnu/release/doscontainer.exe'
|
|
}
|
|
}
|
|
stage('Build Windows x86') {
|
|
environment {
|
|
PATH="/home/jenkins/.cargo/bin:$PATH"
|
|
}
|
|
steps {
|
|
sh 'cross build --release --target i686-pc-windows-gnu'
|
|
sh 'upx target/i686-pc-windows-gnu/release/doscontainer.exe'
|
|
}
|
|
}
|
|
stage('Build ARMv7 (MiSTer native)') {
|
|
environment {
|
|
PATH="/home/jenkins/.cargo/bin:$PATH"
|
|
}
|
|
steps {
|
|
sh 'cross build --release --target armv7-unknown-linux-musleabihf'
|
|
sh 'upx target/armv7-unknown-linux-musleabihf/release/doscontainer'
|
|
}
|
|
}
|
|
stage('Generate PDF manual') {
|
|
steps {
|
|
sh 'cd docs ; xelatex manual.tex ; xelatex manual.tex'
|
|
}
|
|
}
|
|
stage('Malware scan') {
|
|
steps {
|
|
sh 'clamscan -r -i /home/jenkins/workspace'
|
|
}
|
|
}
|
|
stage('Package') {
|
|
steps {
|
|
sh 'mkdir upload'
|
|
sh 'mkdir upload/linux_armv7'
|
|
sh 'mkdir upload/linux_x86_64'
|
|
sh 'mkdir upload/windows_x86_64'
|
|
sh 'mkdir upload/windows_x86'
|
|
sh 'cp target/armv7-unknown-linux-musleabihf/release/doscontainer upload/linux_armv7'
|
|
sh 'cp target/i686-pc-windows-gnu/release/doscontainer.exe upload/windows_x86'
|
|
sh 'cp target/x86_64-pc-windows-gnu/release/doscontainer.exe upload/windows_x86_64'
|
|
sh 'cp target/release/doscontainer upload/linux_x86_64'
|
|
sh 'cp docs/manual.pdf upload/manual.pdf'
|
|
sh 'cd upload ; zip -r ../doscontainer-${BUILD_NUMBER}.zip ./'
|
|
}
|
|
}
|
|
stage('Publish ZIP file') {
|
|
steps {
|
|
sshagent(credentials: ['jenkins-sshkey']) {
|
|
sh 'scp ./doscontainer-${BUILD_NUMBER}.zip uploader@10.20.0.17:/srv/ftp/doscontainer/builds/doscontainer-${BUILD_NUMBER}.zip'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
// Clean after build
|
|
always {
|
|
cleanWs()
|
|
}
|
|
}
|
|
}
|