-
Notifications
You must be signed in to change notification settings - Fork 54
/
Jenkinsfile.lin
107 lines (87 loc) · 3.09 KB
/
Jenkinsfile.lin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#!/usr/bin/env groovy
/*
TRIGGERING JOB
```groovy
node(LINUX_BUILD_NODE) {
step([
$class: 'CopyArtifact',
projectName: TRIGGERING_JOB_NAME,
selector: [$class: 'SpecificBuildSelector', buildNumber: TRIGGERING_BUILD_NUMBER],
target: 'artifacts'
])
def helpers = load "artifacts/build-helpers.groovy"
stage('Checkout') {
helpers.checkoutSCM(REPO_URL, COMMIT_ID)
}
load ENTRY_POINT
}
}
```
*/
def imageName = 'browser-f'
try {
// authorize docker deamon to access registry
sh "`aws ecr get-login --region=$AWS_REGION`"
docker.withRegistry(DOCKER_REGISTRY_URL) {
def image = docker.image(imageName)
image.pull()
imageName = image.imageName()
}
} catch (e) {
// if registry fails, build image localy
// Build params with context
def cacheParams = LIN_REBUILD_IMAGE.toBoolean() ? '--pull --no-cache=true' : ''
// Avoiding docker context
sh 'rm -rf docker_lin && mkdir docker_lin && cp docker/Dockerfile docker_lin/'
// Build image with a specific user
sh "cd docker_lin && docker build -t ${imageName} ${cacheParams} --build-arg user=`whoami` --build-arg uid=`id -u` --build-arg gid=`id -g` ."
}
docker.image(imageName).inside() {
withEnv([
"CQZ_BUILD_ID=$CQZ_BUILD_ID",
"CQZ_COMMIT=$COMMIT_ID",
"CQZ_RELEASE_CHANNEL=$CQZ_RELEASE_CHANNEL",
"CQZ_BUILD_DE_LOCALIZATION=$CQZ_BUILD_DE_LOCALIZATION"]) {
withCredentials([
[$class: 'StringBinding', credentialsId: CQZ_GOOGLE_API_KEY_CREDENTIAL_ID, variable: 'CQZ_GOOGLE_API_KEY'],
[$class: 'StringBinding', credentialsId: CQZ_MOZILLA_API_KEY_CREDENTIAL_ID, variable: 'MOZ_MOZILLA_API_KEY']]) {
stage('fix keys') {
writeFile file: "mozilla-desktop-geoloc-api.key", text: "${MOZ_MOZILLA_API_KEY}"
writeFile file: "google-desktop-api.key", text: "${CQZ_GOOGLE_API_KEY}"
}
stage('Build Browser') {
try {
sh '/bin/bash -lc "./magic_build_and_package.sh --clobber"'
} catch (e) {
archive 'obj/config.log'
throw e
}
}
}
withCredentials([[
$class: 'UsernamePasswordMultiBinding',
credentialsId: CQZ_AWS_CREDENTIAL_ID,
passwordVariable: 'AWS_SECRET_ACCESS_KEY',
usernameVariable: 'AWS_ACCESS_KEY_ID']]) {
stage('Publisher (Debian Repo)') {
try {
withCredentials([
[$class: 'FileBinding', credentialsId: DEBIAN_GPG_KEY_CREDENTIAL_ID, variable: 'DEBIAN_GPG_KEY'],
[$class: 'StringBinding', credentialsId: DEBIAN_GPG_PASS_CREDENTIAL_ID, variable: 'DEBIAN_GPG_PASS']]) {
sh 'echo $DEBIAN_GPG_PASS > debian.gpg.pass'
withEnv([
"CQZ_S3_DEBIAN_REPOSITORY_URL=$CQZ_S3_DEBIAN_REPOSITORY_URL"]) {
sh '/bin/bash -lc "./sign_lin.sh"'
}
}
} finally {
sh 'rm -rf debian.gpg.pass'
}
}
stage('Publisher (Internal)') {
sh '/bin/bash -lc "./magic_upload_files.sh"'
archiveArtifacts 'obj/build_properties.json'
}
}
}
}