對我來說,下面的groovy代碼正在編程配置Jenkins'全局安全部分中的Authorize Project Plugin。我將腳本放在Jenkins的init.groovy.d/目錄中,以便在每次啓動時觸發它。
import jenkins.*
import jenkins.model.*
import hudson.model.*
import jenkins.model.Jenkins
import org.jenkinsci.plugins.authorizeproject.*
import org.jenkinsci.plugins.authorizeproject.strategy.*
import jenkins.security.QueueItemAuthenticatorConfiguration
def instance = Jenkins.getInstance()
// Define which strategies you want to allow to be set per project
def strategyMap = [
(instance.getDescriptor(AnonymousAuthorizationStrategy.class).getId()): true,
(instance.getDescriptor(TriggeringUsersAuthorizationStrategy.class).getId()): true,
(instance.getDescriptor(SpecificUsersAuthorizationStrategy.class).getId()): true,
(instance.getDescriptor(SystemAuthorizationStrategy.class).getId()): false
]
def authenticators = QueueItemAuthenticatorConfiguration.get().getAuthenticators()
def configureProjectAuthenticator = true
for(authenticator in authenticators) {
if(authenticator instanceof ProjectQueueItemAuthenticator) {
// only add if it does not already exist
configureProjectAuthenticator = false
}
}
if(configureProjectAuthenticator) {
authenticators.add(new ProjectQueueItemAuthenticator(strategyMap))
}
instance.save()
他們的插件javadoc有助於瞭解這些類。此外,我看看他們在github上的測試,找出如何在Jenkins中配置這些對象。
從現在開始,我可以通過JobDSL插件這樣的設置作業的授權規則:
job("SEED/SeedMainJobs") {
properties {
authorizeProjectProperty {
strategy {
triggeringUsersAuthorizationStrategy()
}
}
}
...
}
檢查生成的XML,如果JobDSL插件沒有提供此一步驟(還沒有找到任何),然後使用['configure'](https://jenkinsci.github.io/job-dsl-plugin/#path/multibranchPipelineJob-configure)步驟手動製作XML。 – StephenKing
謝謝。這應該夠了吧。我現在有一個完全自動化的Jenkins設置。現在生活很好! – Gerb
請將結果代碼發佈爲答案。我也會對結果感興趣! – StephenKing