mirror of
https://github.com/BepInEx/BepInEx.git
synced 2026-10-20 01:46:13 +00:00
78 lines
3.4 KiB
Groovy
78 lines
3.4 KiB
Groovy
/*
|
|
* BepInEx Bleeding Edge build CI jenkinsfile
|
|
*/
|
|
lastBuildCommit = ""
|
|
|
|
pipeline {
|
|
agent any
|
|
parameters {
|
|
// Check if the build is Bleeding Edge. Affects whether the result is pushed to BepisBuilds
|
|
booleanParam(name: "IS_BE")
|
|
}
|
|
stages {
|
|
stage('Pull Projects') {
|
|
steps {
|
|
script {
|
|
if(currentBuild.previousBuild != null && currentBuild.previousBuild.buildVariables.containsKey("LAST_BUILD"))
|
|
lastBuildCommit = currentBuild.previousBuild.buildVariables["LAST_BUILD"]
|
|
}
|
|
// Clean up old project before starting
|
|
cleanWs()
|
|
|
|
dir('BepInEx') {
|
|
git 'https://github.com/BepInEx/BepInEx.git'
|
|
|
|
script {
|
|
longCommit = sh(returnStdout: true, script: "git rev-parse HEAD").trim()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stage('Build BepInEx') {
|
|
steps {
|
|
dir('BepInEx') {
|
|
sh "chmod u+x build.sh"
|
|
sh "./build.sh --target=Pack --bleeding_edge=${params.IS_BE} --build_id=${currentBuild.id} --last_build_commit=${lastBuildCommit}"
|
|
}
|
|
}
|
|
}
|
|
stage('Package') {
|
|
steps {
|
|
dir('BepInEx/bin/dist') {
|
|
archiveArtifacts "*.zip"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
cleanup {
|
|
script {
|
|
env.LAST_BUILD = lastBuildCommit
|
|
}
|
|
}
|
|
success {
|
|
script {
|
|
lastBuildCommit = longCommit
|
|
if(params.IS_BE) {
|
|
dir('BepInEx/bin/dist') {
|
|
def filesToSend = findFiles(glob: '*.*').collect {it.name}
|
|
withCredentials([string(credentialsId: 'bepisbuilds_addr', variable: 'BEPISBUILDS_ADDR')]) {
|
|
sh """curl --upload-file "{${filesToSend.join(',')}}" --ftp-pasv --ftp-skip-pasv-ip --ftp-create-dirs --ftp-method singlecwd --disable-epsv ftp://${BEPISBUILDS_ADDR}/bepinex_be/artifacts/${env.BUILD_NUMBER}/"""
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Notify Bepin Discord of successfull build
|
|
withCredentials([string(credentialsId: 'discord-notify-webhook', variable: 'DISCORD_WEBHOOK')]) {
|
|
discordSend description: "**Build:** [${currentBuild.id}](${env.BUILD_URL})\n**Status:** [${currentBuild.currentResult}](${env.BUILD_URL})\n\n[**Artifacts on BepisBuilds**](https://builds.bepis.io/projects/bepinex_be)", footer: 'Jenkins via Discord Notifier', link: env.BUILD_URL, successful: currentBuild.resultIsBetterOrEqualTo('SUCCESS'), title: "${env.JOB_NAME} #${currentBuild.id}", webhookURL: DISCORD_WEBHOOK
|
|
}
|
|
}
|
|
failure {
|
|
//Notify Discord of failed build
|
|
withCredentials([string(credentialsId: 'discord-notify-webhook', variable: 'DISCORD_WEBHOOK')]) {
|
|
discordSend description: "**Build:** [${currentBuild.id}](${env.BUILD_URL})\n**Status:** [${currentBuild.currentResult}](${env.BUILD_URL})", footer: 'Jenkins via Discord Notifier', link: env.BUILD_URL, successful: currentBuild.resultIsBetterOrEqualTo('SUCCESS'), title: "${env.JOB_NAME} #${currentBuild.id}", webhookURL: DISCORD_WEBHOOK
|
|
}
|
|
}
|
|
}
|
|
} |