問題タブ [jenkinsfile]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jenkins - Jenkinsfile java.lang.NoSuchMethodError: No such DSL method '$' found within steps
MESOS にデプロイしようとすると、以下の奇妙なエラーが発生します。
コードのスニペットは次のようになります
残念ながら、以下のエラーで失敗します
marathon 1.3.2 プラグインがインストールされていることがわかります。ただし、何かが間違っているようです。
アントワーヌ
jenkins - 静的メソッドを呼び出さずに、Groovy Jenkinsfile で XML 文字をエスケープする方法
私の Jenkinsfile では、パラメーター値で構成される XML 文字列を作成する必要があります。一部の値は、XML 属性として設定できるように「xml エスケープ」する必要があります。
これを行う簡単な方法の 1 つは、"XmlUtil.escapeXml(text)" を呼び出すことです (ただし、これはスペースを使用しないと思います)。
ただし、Jenkinsfile では静的メソッドの呼び出しが許可されていないため、これは高レベルでは失敗します。
Jenkinsfileでこの種のことを行うための最も簡単な戦略は何ですか?
更新:
Groovy の原則をいくつか思い出した後、MarkupBuilder がこれに対する解決策になることに気付きましたが、「スクリプトは新しい groovy.xml.MarkupBuilder の使用を許可されていません」ということさえ許しません。
更新:
OK、セキュリティ制限をオーバーライドできましたが、Pipeline DSL 内で MarkupBuilder DSL を使用すると問題が発生します。
Jenkinsfile の最後 (全体的な「ノード」ブロックの後) に次のメソッドを定義しました。
これを groovyConsole でテストしたところ、問題なく動作しました。
ただし、このメソッドを呼び出すジョブを実行すると、次のようになります。
java.lang.NoSuchMethodError: ステップ [VersionNumber、アーカイブ、awaitDeployment、... の中にそのような DSL メソッド「ステートメント」が見つかりません
そこにリストされているステップは Pipeline DSL からのものであるため、「methodMissing」ルックアップは MarkupBuilder クラスではなく Pipeline DSL に向かうようです。
メソッド定義に「@NonCPS」を追加しようとしたことに注意してください。それは違いはありませんでした。
更新:
これに対する解決策を見つけました。「statement」を「delegate.statement」に変更すると、これを回避できます。
python - Jenkinsfile 構文 - 共有 Python ビルド ステップの DRY 例はありますか?
私は今日、Jenkinsのさまざまな「シェルの実行」ビルドステップで実行する共有pythonビルドスクリプトを含むレポ「A」を持っています。この手順/スクリプトは、job-dsl groovy コードからシードされています。
レポ「B」(アプリのソースコードが存在する場所) で新しい Jenkins 2 パイプラインの概念を使用する場合、このレポの Jenkinsfile を DRY に保ち、既存の Python ビルド スクリプトを再利用するには、どのように見える必要がありますか?
私はプラグイン「workflow-cps-global-lib」を研究し、Jenkins マスターで「パイプライン ライブラリ」をセットアップしようとしましたが、このセットアップは groovy 指向であるため、正しい方法のように感じません。正しい構文に慣れていません。この特定のユースケースの例は見つかりません。
基本的に、私はJenkinsfileでこれをしたいだけです:
- アプリのソース リポジトリ ('B') を複製する
- 私のレポ「A」から私の共有pythonビルドスクリプトを利用可能にする
- さまざまな「シェルの実行」ステップから python ビルド スクリプトを実行します。
- など...
git - Jenkinsfile で変数の変更を処理する
私は次のことをどのように処理するのが最善かを考えています。
マスターブランチにJenkinsfileがあり、次のようなものを実行します
そのため、プロセス内ですべて相互に接続する 3 つの個別のアプリケーションを構築します。
私が探しているのは、機能ブランチが作成されたときに、アプリケーションごとに異なるブランチでビルドを実行する必要があるという方法です。これは手動で変更してコミットできますが、マスターへのマージが完了すると、その情報は引き続き存在し、マスター ビルドを変更します。
この種のセットアップを処理する効率的な方法はありますか?
ありがとう
jenkins - jenkinsの「パスワード付きのユーザー名」パラメータからユーザー名とパスワードを抽出する方法は?
私はジェンキンスパイプラインの仕事をしています。いくつかのパラメーターが必要ですが、そのうちの 1 つは「Username with password」パラメーターで、プロビジョニングした「サービス アカウント」に設定されています。
これは「StashNotifier」で使用され、ビルドの結果を BitBucket に通知します。
いくつかの「scp/ssh」ステップをジョブに追加する必要があり、同じサービス アカウント プリンシパルと資格情報を使用したいと考えています。サービス アカウント パラメータのユーザー名とパスワードの冗長コピーという 2 つのパラメータを手動で追加できますが、既存の「ユーザー名とパスワード」パラメータから断片を抽出したいだけです。
それは可能ですか?
maven - docker.image を使用して Jenkins ビルドにマネージド ファイルを提供するにはどうすればよいですか?
Jenkins Pipelines を使用して Maven Java プロジェクトを構築し、そのアーティファクトを Nexus にデプロイしようとしています。Nexus 資格情報は Jenkins によって管理されるため、Maven の settings.xml ファイルを提供するには Jenkins が必要です。私のパイプラインはdocker
、ビルドを実行するために使用します。私Jenkinsfile
のように見えます:
これまでのところ、正しい Maven 設定を提供できません。withMaven (Maven パイプライン プラグイン、 https: //wiki.jenkins-ci.org/display/JENKINS/Pipeline+Maven+Plugin )には、いくつかの「既知の制限」があります。
回避策はありますか? configFileProvider を使用しようとしましたが、セキュリティ上の理由から UnsupportedOperationException がスローされます。
jenkins - Jenkinsfile の sshagent ブロックにより NotSerializableException が発生する
パイプライン ジョブの Jenkinsfile で、javadoc jar をリモート ホストに scp する必要があります。これを行うために必要な部品に一日中苦労していますが、まだ機能していません。
これには「sshagent」を使用しようとしています。ブロックから参照している「秘密鍵付きのユーザー名」資格情報を定義しました。ブロック内で、実行する scp/ssh シェル コマンドをいくつか作成します。
現在、ステージ内のコード ブロックは次のようになっています。
これを実行すると、次のように表示されます。
スタック トレースは、スクリプトのどの行が問題になっているのかについての直接的な手がかりを提供しません。「sshagent」ブロックをコメントアウトしてみましたが、例外は発生しません (そしてジョブは何も役に立ちません)。そのため、そのブロックからエラーが発生していることは明らかです。
シリアライゼーションの問題は通常 @NonCPS メソッドに行くことを示していると聞きましたが、これを変換してこれを解決する方法がわかりません。
git - git コマンドによる特定のフォルダーへの Jenkinsfile のチェックアウト
このコマンドをjenkinsfileで実行したい
しかし、私はこのエラーが発生します
Jenkinsfileでどうすればそれを行うことができますか? ファイルを特定のフォルダにチェックアウトできますか?