forked from rstudio/rstudio
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Jenkinsfile.pull-request
107 lines (97 loc) · 3.07 KB
/
Jenkinsfile.pull-request
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
def utils
pipeline {
agent {
label 'linux && x86_64'
}
options {
timestamps()
disableConcurrentBuilds()
buildDiscarder(logRotator(numToKeepStr: '10'))
}
environment {
GITHUB_LOGIN = credentials('github-rstudio-jenkins')
OS = 'jammy'
ARCH = 'x86_64'
FLAVOR = 'server'
TYPE = 'DEB'
AWS_ACCOUNT_ID = '749683154838'
RSTUDIO_VERSION_FLOWER = ''
IS_PRO = false
}
stages {
stage('Load Utils') {
steps {
script {
sh 'printenv'
sh "echo 'Loading utils from ${env.WORKSPACE}/utils.groovy'"
utils = load "${env.WORKSPACE}/utils.groovy"
utils.addRemoteRef("${env.CHANGE_TARGET}")
RSTUDIO_VERSION_FLOWER = readFile(file: 'version/RELEASE').replaceAll(" ", "-").toLowerCase().trim()
IS_PRO = JOB_URL.contains('Pro')
}
}
}
stage('Build') {
when {
expression {
// Passing true makes this return true if there are any changes outside of 'docs'
return utils.hasChangesIn('docs', true)
}
}
stages {
stage('Prepare Build Container') {
steps {
// AWS is here for the S3 bucket that we use for sccache
withAWS(role: 'build', roleAccount: AWS_ACCOUNT_ID) {
pullBuildPush(
image_name: 'jenkins/ide',
image_tag: "${IS_PRO ? 'pro-' : ''}${OS}-${ARCH}-${RSTUDIO_VERSION_FLOWER}",
dockerfile: "docker/jenkins/Dockerfile.${OS}",
build_arg_jenkins_uid: 'JENKINS_UID',
build_arg_jenkins_gid: 'JENKINS_GID',
builds_args: "--build-arg GITHUB_LOGIN=${GITHUB_LOGIN}",
push: false)
}
}
}
stage('Build Package and Test') {
agent {
docker {
image "jenkins/ide:${IS_PRO? 'pro-' : '' }${OS}-${ARCH}-${RSTUDIO_VERSION_FLOWER}"
reuseNode true
}
}
stages {
stage('Build Package') {
steps {
dir ("package/linux") {
// AWS is here for the S3 bucket that we use for sccache
withAWS(role: 'build', roleAccount: AWS_ACCOUNT_ID) {
// perform the compilation
sh "SCCACHE_ENABLED=1 PACKAGE_OS=${OS} ./make-${FLAVOR}-package ${type} clean"
}
}
}
}
stage('Run GWT Unit Tests') {
steps {
dir ("package/linux/build-${FLAVOR.capitalize()}-${TYPE}/src/gwt") {
// attempt to run ant (gwt) unit tests
sh "./gwt-unit-tests.sh"
}
}
}
stage('Run C++ Unit Tests') {
steps {
dir ("package/linux/build-${FLAVOR.capitalize()}-${type}/src/cpp") {
// attempt to run cpp unit tests
sh "./rstudio-tests"
}
}
}
}
}
}
}
}
}