Skip to content

Commit

Permalink
[1.1.1] Add Jenkins Group Support
Browse files Browse the repository at this point in the history
  • Loading branch information
gmitch215 authored Nov 10, 2024
1 parent 27e646a commit 31122e6
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 27 deletions.
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ plugins {
}

group = "io.codemc.api"
version = "1.1.0"
version = "1.1.1"
description = "Official API for CodeMC Jenkins & Nexus Services"

repositories {
Expand Down
5 changes: 4 additions & 1 deletion src/main/kotlin/io/codemc/api/jenkins/jenkins.kt
Original file line number Diff line number Diff line change
Expand Up @@ -177,15 +177,18 @@ fun changeJenkinsPassword(username: String, newPassword: String): Boolean = runB
* Creates a Jenkins user.
* @param username The username of the user.
* @param password The password of the user.
* @param group `true` if the user is an organization, `false` otherwise.
* @return `true` if the user was created, `false` otherwise.
*/
fun createJenkinsUser(username: String, password: String): Boolean = runBlocking(Dispatchers.IO) {
@JvmOverloads
fun createJenkinsUser(username: String, password: String, group: Boolean = false): Boolean = runBlocking(Dispatchers.IO) {
if (getJenkinsUser(username).isNotEmpty()) return@runBlocking false

val config0 = RESOURCE_CACHE[USER_CONFIG] ?: return@runBlocking false

val config = config0
.replace("{USERNAME}", username)
.replace("{TYPE}", if (group) "GROUP" else "USER")

val res = jenkins("${jenkinsConfig.url}/createItem?name=$username") {
POST(HttpRequest.BodyPublishers.ofString(config))
Expand Down
50 changes: 25 additions & 25 deletions src/main/resources/templates/jenkins/user-config.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,30 +27,30 @@
</org.jenkinsci.plugins.configfiles.folder.FolderConfigFileProperty>
<com.cloudbees.hudson.plugins.folder.properties.AuthorizationMatrixProperty>
<inheritanceStrategy class="org.jenkinsci.plugins.matrixauth.inheritance.InheritParentStrategy"/>
<permission>USER:com.cloudbees.plugins.credentials.CredentialsProvider.Create:{USERNAME}</permission>
<permission>USER:com.cloudbees.plugins.credentials.CredentialsProvider.Delete:{USERNAME}</permission>
<permission>USER:com.cloudbees.plugins.credentials.CredentialsProvider.ManageDomains:{USERNAME}</permission>
<permission>USER:com.cloudbees.plugins.credentials.CredentialsProvider.Update:{USERNAME}</permission>
<permission>USER:com.cloudbees.plugins.credentials.CredentialsProvider.View:{USERNAME}</permission>
<permission>USER:hudson.model.Item.Build:{USERNAME}</permission>
<permission>USER:hudson.model.Item.Cancel:{USERNAME}</permission>
<permission>USER:hudson.model.Item.Configure:{USERNAME}</permission>
<permission>USER:hudson.model.Item.Create:{USERNAME}</permission>
<permission>USER:hudson.model.Item.Delete:{USERNAME}</permission>
<permission>USER:hudson.model.Item.Discover:{USERNAME}</permission>
<permission>USER:hudson.model.Item.Move:{USERNAME}</permission>
<permission>USER:hudson.model.Item.Read:{USERNAME}</permission>
<permission>USER:hudson.model.Item.ViewStatus:{USERNAME}</permission>
<permission>USER:hudson.model.Item.Workspace:{USERNAME}</permission>
<permission>USER:hudson.model.Run.Delete:{USERNAME}</permission>
<permission>USER:hudson.model.Run.Replay:{USERNAME}</permission>
<permission>USER:hudson.model.Run.Update:{USERNAME}</permission>
<permission>USER:hudson.model.View.Configure:{USERNAME}</permission>
<permission>USER:hudson.model.View.Create:{USERNAME}</permission>
<permission>USER:hudson.model.View.Delete:{USERNAME}</permission>
<permission>USER:hudson.model.View.Read:{USERNAME}</permission>
<permission>USER:hudson.plugins.promoted_builds.Promotion.Promote:{USERNAME}</permission>
<permission>USER:hudson.scm.SCM.Tag:{USERNAME}</permission>
<permission>{TYPE}:com.cloudbees.plugins.credentials.CredentialsProvider.Create:{USERNAME}</permission>
<permission>{TYPE}:com.cloudbees.plugins.credentials.CredentialsProvider.Delete:{USERNAME}</permission>
<permission>{TYPE}:com.cloudbees.plugins.credentials.CredentialsProvider.ManageDomains:{USERNAME}</permission>
<permission>{TYPE}:com.cloudbees.plugins.credentials.CredentialsProvider.Update:{USERNAME}</permission>
<permission>{TYPE}:com.cloudbees.plugins.credentials.CredentialsProvider.View:{USERNAME}</permission>
<permission>{TYPE}:hudson.model.Item.Build:{USERNAME}</permission>
<permission>{TYPE}:hudson.model.Item.Cancel:{USERNAME}</permission>
<permission>{TYPE}:hudson.model.Item.Configure:{USERNAME}</permission>
<permission>{TYPE}:hudson.model.Item.Create:{USERNAME}</permission>
<permission>{TYPE}:hudson.model.Item.Delete:{USERNAME}</permission>
<permission>{TYPE}:hudson.model.Item.Discover:{USERNAME}</permission>
<permission>{TYPE}:hudson.model.Item.Move:{USERNAME}</permission>
<permission>{TYPE}:hudson.model.Item.Read:{USERNAME}</permission>
<permission>{TYPE}:hudson.model.Item.ViewStatus:{USERNAME}</permission>
<permission>{TYPE}:hudson.model.Item.Workspace:{USERNAME}</permission>
<permission>{TYPE}:hudson.model.Run.Delete:{USERNAME}</permission>
<permission>{TYPE}:hudson.model.Run.Replay:{USERNAME}</permission>
<permission>{TYPE}:hudson.model.Run.Update:{USERNAME}</permission>
<permission>{TYPE}:hudson.model.View.Configure:{USERNAME}</permission>
<permission>{TYPE}:hudson.model.View.Create:{USERNAME}</permission>
<permission>{TYPE}:hudson.model.View.Delete:{USERNAME}</permission>
<permission>{TYPE}:hudson.model.View.Read:{USERNAME}</permission>
<permission>{TYPE}:hudson.plugins.promoted_builds.Promotion.Promote:{USERNAME}</permission>
<permission>{TYPE}:hudson.scm.SCM.Tag:{USERNAME}</permission>
</com.cloudbees.hudson.plugins.folder.properties.AuthorizationMatrixProperty>
<org.jenkinsci.plugins.docker.workflow.declarative.FolderConfig>
<dockerLabel/>
Expand All @@ -60,7 +60,7 @@
<settings class="jenkins.mvn.DefaultSettingsProvider"/>
<globalSettings class="jenkins.mvn.DefaultGlobalSettingsProvider"/>
<override>false</override>
</org.jenkinsci.plugins.pipeline.maven.MavenConfigFolderOverrideProperty>
</org.jenkinsci.plugins.pipeline.maven.MavenConfigFolderOverridePro`perty>
</properties>
<folderViews class="com.cloudbees.hudson.plugins.folder.views.DefaultFolderViewHolder">
<views>
Expand Down

0 comments on commit 31122e6

Please sign in to comment.