2017-10-17 181 views
1

我使用DSL創建不同的作業。然而,當我開始了我的詹金斯的容器中,我得到這個錯誤:Jenkins:以編程方式添加項目默認構建授權

Processing DSL script neojob.groovy 
ERROR: script not yet approved for use 
Finished: FAILURE 

要修正這個錯誤,我要選擇「Run as用戶誰觸發下生成」項目默認構建授權,像這樣:

enter image description here 我的問題是我該如何在groovy腳本或編程方式中做到這一點,因此我的容器可以完全初始化Jenkins。

任何幫助將不勝感激。

+0

檢查生成的XML,如果JobDSL插件沒有提供此一步驟(還沒有找到任何),然後使用['configure'](https://jenkinsci.github.io/job-dsl-plugin/#path/multibranchPipelineJob-configure)步驟手動製作XML。 – StephenKing

+0

謝謝。這應該夠了吧。我現在有一個完全自動化的Jenkins設置。現在生活很好! – Gerb

+0

請將結果代碼發佈爲答案。我也會對結果感興趣! – StephenKing

回答

0

對我來說,下面的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() 
     } 
    } 
    } 

    ... 
} 
相關問題