2018-11-08 10:13:40 +00:00
|
|
|
import groovy.json.JsonBuilder
|
|
|
|
|
2019-02-05 09:35:14 +00:00
|
|
|
gh = load 'ci/github.groovy'
|
|
|
|
ci = load 'ci/jenkins.groovy'
|
|
|
|
gh = load 'ci/github.groovy'
|
|
|
|
utils = load 'ci/utils.groovy'
|
|
|
|
ghcmgr = load 'ci/ghcmgr.groovy'
|
2018-12-13 13:22:36 +00:00
|
|
|
|
2019-02-05 09:35:14 +00:00
|
|
|
/* Small Helpers -------------------------------------------------------------*/
|
2018-12-11 14:27:21 +00:00
|
|
|
|
|
|
|
def pkgUrl(build) {
|
2019-02-05 09:35:14 +00:00
|
|
|
return utils.getEnv(build, 'PKG_URL')
|
2018-10-02 20:40:36 +00:00
|
|
|
}
|
|
|
|
|
2019-02-22 20:35:22 +00:00
|
|
|
def updateBucketJSON(urls, fileName) {
|
2018-12-11 14:27:21 +00:00
|
|
|
/* latest.json has slightly different key names */
|
2019-02-22 20:35:22 +00:00
|
|
|
def content = [
|
|
|
|
DIAWI: urls.Diawi,
|
2018-12-11 14:27:21 +00:00
|
|
|
APK: urls.Apk, IOS: urls.iOS,
|
|
|
|
APP: urls.App, MAC: urls.Mac,
|
|
|
|
WIN: urls.Win, SHA: urls.SHA
|
|
|
|
]
|
2019-02-22 20:35:22 +00:00
|
|
|
def filePath = "${pwd()}/pkg/${fileName}"
|
2018-11-08 10:13:40 +00:00
|
|
|
/* it might not exist */
|
|
|
|
sh 'mkdir -p pkg'
|
2019-02-22 20:35:22 +00:00
|
|
|
def contentJson = new JsonBuilder(content).toPrettyString()
|
|
|
|
println "${fileName}:\n${contentJson}"
|
|
|
|
new File(filePath).write(contentJson)
|
2019-02-05 09:35:14 +00:00
|
|
|
return utils.uploadArtifact(filePath)
|
2018-09-25 17:01:48 +00:00
|
|
|
}
|
|
|
|
|
2019-02-05 09:35:14 +00:00
|
|
|
def notifyPR(success) {
|
|
|
|
if (utils.changeId() == null) { return }
|
|
|
|
try {
|
|
|
|
ghcmgr.postBuild(success)
|
|
|
|
} catch (ex) { /* fallback to posting directly to GitHub */
|
|
|
|
println "Failed to use GHCMGR: ${ex}"
|
|
|
|
switch (success) {
|
|
|
|
case true: gh.NotifyPRSuccess(); break
|
|
|
|
case false: gh.NotifyPRFailure(); break
|
|
|
|
}
|
|
|
|
}
|
2018-12-13 09:49:16 +00:00
|
|
|
}
|
|
|
|
|
2019-02-28 10:56:58 +00:00
|
|
|
def prepNixEnvironment() {
|
|
|
|
if (env.TARGET_PLATFORM == 'linux' || env.TARGET_PLATFORM == 'windows' || env.TARGET_PLATFORM == 'android') {
|
|
|
|
def glibcLocales = sh(
|
|
|
|
returnStdout: true,
|
|
|
|
script: ". ~/.nix-profile/etc/profile.d/nix.sh && nix-build --no-out-link '<nixpkgs>' -A glibcLocales"
|
|
|
|
).trim()
|
|
|
|
env.LOCALE_ARCHIVE_2_27 = "${glibcLocales}/lib/locale/locale-archive"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-03-22 13:24:58 +00:00
|
|
|
def prep(type = 'nightly') {
|
|
|
|
prepNixEnvironment()
|
|
|
|
|
|
|
|
utils.doGitRebase()
|
|
|
|
/* ensure that we start from a known state */
|
|
|
|
sh 'make clean'
|
|
|
|
/* select type of build */
|
|
|
|
switch (type) {
|
|
|
|
case 'nightly':
|
|
|
|
sh 'cp .env.nightly .env'; break
|
|
|
|
case 'release':
|
|
|
|
sh 'cp .env.prod .env'; break
|
|
|
|
case 'e2e':
|
|
|
|
sh 'cp .env.e2e .env'; break
|
|
|
|
default:
|
|
|
|
sh 'cp .env.jenkins .env'; break
|
|
|
|
}
|
|
|
|
if (env.TARGET_PLATFORM == 'android' || env.TARGET_PLATFORM == 'ios') {
|
|
|
|
/* Run at start to void mismatched numbers */
|
|
|
|
utils.genBuildNumber()
|
|
|
|
/* install ruby dependencies */
|
|
|
|
utils.nix_sh 'bundle install --quiet'
|
|
|
|
}
|
|
|
|
|
|
|
|
def prepareTarget=env.TARGET_PLATFORM
|
|
|
|
if (env.TARGET_PLATFORM == 'macos' || env.TARGET_PLATFORM == 'linux' || env.TARGET_PLATFORM == 'windows') {
|
|
|
|
prepareTarget='desktop'
|
|
|
|
}
|
|
|
|
/* node deps, pods, and status-go download */
|
|
|
|
utils.nix_sh "make prepare-${prepareTarget}"
|
|
|
|
}
|
|
|
|
|
2018-08-14 18:09:52 +00:00
|
|
|
return this
|