Skip to content
This repository was archived by the owner on Jul 17, 2018. It is now read-only.

Commit 46d6d8c

Browse files
author
Darren Jones
committed
Added github auth configuration groovy script
1 parent 542fbbe commit 46d6d8c

File tree

4 files changed

+49
-1
lines changed

4 files changed

+49
-1
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,4 @@ releases/**/*.tgz
1414
#*
1515
tmp
1616
import.yml
17+
import.yml*

jobs/jenkins-master/spec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ templates:
2222
config/config.xml.erb: config/config.xml
2323
config/config-oauth.xml.erb: config/config-oauth.xml
2424
config/configure-access.groovy.erb: init.groovy.d/configure-access.groovy
25+
config/configure-github-access.groovy.erb: init.groovy.d/configure-github-access.groovy
2526
config/configure-master-access-control.groovy.erb: init.groovy.d/configure-master-access-control.groovy
2627
config/configure-maven.groovy.erb: init.groovy.d/configure-maven.groovy
2728
config/envInject.xml.erb: config/envInject.xml

jobs/jenkins-master/templates/bin/pre-start.erb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ set -e # exit immediately if a simple command exits with a non-zero status
44
set -u # report the usage of uninitialized variables
55

66
mkdir -p /var/vcap/store/jenkins-master
7-
mkdir -p /var/vcap/store/jenkins-master/init.groovy.d
7+
mkdir -p /var/vcap/store/jenkins-master/init.groovy.d
88
mkdir -p /var/vcap/store/jenkins-master/plugins
99

1010
JENKINS_CONFIG="<%= p('jenkins.config') %>"
@@ -21,11 +21,14 @@ fi
2121
if [[ $(ls /var/vcap/jobs/jenkins-master/init.groovy.d/*.groovy) ]]; then
2222
echo "Copying Groovy..."
2323
cp /var/vcap/jobs/jenkins-master/init.groovy.d/*.groovy /var/vcap/store/jenkins-master/init.groovy.d/
24+
# We want standard Jenkins managed access unless defined
25+
rm /var/vcap/store/jenkins-master/init.groovy.d/configure-github-access.groovy
2426
fi
2527

2628
if [ ${JENKINS_CONFIG} == "config-oauth.xml" ]; then
2729
# This is temporary until we use this groovy script to construct the config
2830
rm /var/vcap/store/jenkins-master/init.d/configure-access.groovy
31+
cp /var/vcap/jobs/jenkins-master/init.groovy.d/configure-github-access.groovy /var/vcap/store/jenkins-master/init.groovy.d/configure-github-access.groovy
2932
fi
3033

3134
echo "Configuring Plugins..."
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import hudson.security.SecurityRealm
2+
import org.jenkinsci.plugins.GithubSecurityRealm
3+
import org.jenkinsci.plugins.GithubAuthorizationStrategy
4+
import hudson.security.AuthorizationStrategy
5+
6+
String githubWebUri = '<%= p('jenkins.github.oauth.url.web') %>'
7+
String githubApiUri = '<%= p('jenkins.github.oauth.url.api') %>'
8+
String clientID = '<%= p('jenkins.github.oauth.client.id') %>'
9+
String clientSecret = '<%= p('jenkins.github.oauth.client.secret') %>'
10+
String oauthScopes = 'read:org'
11+
12+
SecurityRealm github_realm = new GithubSecurityRealm(githubWebUri, githubApiUri, clientID, clientSecret, oauthScopes)
13+
//check for equality, no need to modify the runtime if no settings changed
14+
if(!github_realm.equals(Jenkins.instance.getSecurityRealm())) {
15+
Jenkins.instance.setSecurityRealm(github_realm)
16+
Jenkins.instance.save()
17+
}
18+
19+
String adminUserNames = '<%= p('jenkins.github.oauth.admins.admin1') %>,<%= p('jenkins.github.oauth.admins.admin2') %>,<%= p('jenkins.github.oauth.admins.admin3') %>'
20+
String organizationNames = '<%= p('jenkins.github.oauth.org_name') %>'
21+
boolean useRepositoryPermissions = true
22+
boolean authenticatedUserReadPermission = false
23+
boolean authenticatedUserCreateJobPermission = false
24+
boolean allowGithubWebHookPermission = false
25+
boolean allowCcTrayPermission = false
26+
boolean allowAnonymousReadPermission = false
27+
boolean allowAnonymousJobStatusPermission = false
28+
29+
AuthorizationStrategy github_authorization = new GithubAuthorizationStrategy(adminUserNames,
30+
authenticatedUserReadPermission,
31+
useRepositoryPermissions,
32+
authenticatedUserCreateJobPermission,
33+
organizationNames,
34+
allowGithubWebHookPermission,
35+
allowCcTrayPermission,
36+
allowAnonymousReadPermission,
37+
allowAnonymousJobStatusPermission)
38+
39+
//check for equality, no need to modify the runtime if no settings changed
40+
if(!github_authorization.equals(Jenkins.instance.getAuthorizationStrategy())) {
41+
Jenkins.instance.setAuthorizationStrategy(github_authorization)
42+
Jenkins.instance.save()
43+
}

0 commit comments

Comments
 (0)