2017-11-23 5 views
0

「Project-based Matrix Authorization Strategy」(ProjectMatrixAuthorizationStrategy)でJenkinsを設定しました。 GitからJSONファイルを読み込んでADグループを追加または削除するGroovyスクリプトを実行するJenkinsジョブのグローバル権限を管理したいと思います。許可を更新するJenkinsジョブ

は、これまでのところ、私の試みは、このようなエラーで失敗する:

33:行33、列29 DEF authorizationStrategy =新しいProjectMatrixAuthorizationStrategy()

import jenkins.* 
import hudson.* 
import com.cloudbees.plugins.credentials.* 
import com.cloudbees.plugins.credentials.common.* 
import com.cloudbees.plugins.credentials.domains.* 
import com.cloudbees.jenkins.plugins.sshcredentials.impl.* 
import hudson.plugins.sshslaves.*; 
import hudson.model.* 
import jenkins.model.* 
import hudson.security.* 

def strategy = new ProjectMatrixAuthorizationStrategy() 

strategy.add(Jenkins.ADMINISTER, "me123") 

def instance = Jenkins.getInstance() 
instance.setAuthorizationStrategy(strategy) 
instance.save() 
@クラスProjectMatrixAuthorizationStrategy を解決することができません

上記は、http://jenkins/scriptから実行すると問題なく動作しますが、Groovyファイルを指すジョブから実行すると失敗します。

ProjectMatrixAuthorizationStrategyなどの一部のクラスが読み込まれていないことが原因で問題が発生している可能性があります。上記のスクリプトを仕事で働かせるにはどうすればいいですか?

ありがとうございます!

答えて

0

私はまだ他のプラグインのクラスを参照する方法を解決していませんが、私は回避策を見つけました(ただし、これは制限しています)。 this sourceのおかげで私は方法を見つけました。

以下を使用して、既存のProjectMatrixAuthorizationStrategyのインスタンスを取得できました。 Groovyでキャストする必要はありません。これは、明示的にキャストするとランタイムエラーが発生することがあります。

def instance = Jenkins.getInstance() 
def strategy = instance.getAuthorizationStrategy() 

また、新しいインスタンスを作成するために、私はこれを行うことができます:Jenkins.coreに固有の

def newStrategy = strategy.class.newInstance() 

休息を。

newStrategy.add(Jenkins.ADMINISTER, archeusSystemAccount) 
instance.setAuthorizationStrategy(newStrategy) 
instance.save() 

最終的な思考は、あなたがあなたのジェンキンスにインストールされているプラ​​グインによっては、ユーザー/グループのために追加のACLを追加することができます。プラグインからクラスをインポートする方法をまだ分かっていないので、Jenkins、Item、Computer、およびViewの戦略を追加するだけでした。

関連する問題