問題タブ [go-cd]
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.
deployment - Go-CD: テンプレート使用時のパイプラインの自動トリガーと手動トリガー
デプロイ パイプラインにはテンプレートを使用しています。デプロイする 3 つの環境があります。私たちが直面している問題は、パイプラインのトリガーです。
理想的なシナリオは、デプロイ後に API レベルの機能テストを実行する開発環境に自動デプロイし、手動および自動テストの結果に満足したら、手動で UAT および本番環境にデプロイすることです。
デプロイ パイプラインは同じで、環境名をパラメーターとしてテンプレートから作成します。テンプレートから条件付きでパイプライン ビルドを開始するように GO CD に指示する方法はありますか (if dev start automatic else start manual
メタ言語のようなもの)?
go-cd - GoCD - マシン/パイプライン間でファイルをコピーする方法
異なるエージェントで実行されている 2 つのパイプラインがあります。1 つはビルドを作成して単体テストを実行し、もう 1 つはアーティファクトを tomcat にデプロイします。最初のパイプラインは成果物を格納するように構成され、ファイルは server/artifacts/pipelines/xx フォルダーにコピーされます。2 番目のパイプラインで 2 番目のエージェントにファイルをコピーするにはどうすればよいですか?
windows - Go cd 構成の問題
Windows サーバーのプライベート リポジトリから github マテリアルを追加しようとすると問題が発生します。
多くの人がsshキーを追加する方法と、UNIXベースのシステム以外の場所を提案しているのを見てきました。Windows サーバーに関連するものは見つかりませんでした。
Go の最新リリースを使用しており、Git がインストールされた Windows Server 2008 に Go Server と Agent をインストールしました。
Git Bash を使用してプライベート リポジトリに接続できます。
マテリアルを追加しようとするたびに、接続を確認していますと表示され続け、永遠にそこにとどまっているように見えます。
基本認証を使用すると機能しますが、URL でパスワードを公開せずに機能させたいと考えています。
それを行う方法はありますか?
java - Go SBT タスクで JVM フラグを指定するにはどうすればよいですか?
Go CD とgocd-sbt-pluginを使用して、SBT で Java+Scala マルチモジュール プロジェクトを構築しています。しかし、java.lang.OutOfMemoryError: Java heap space
モジュールをコンパイルしてパッケージ化しようとすると、メモリが不足します ( )。
Jenkins CI では、SBT プラグインにより、ビルド アクションに JVM フラグと sbt フラグを追加するオプションが提供されます。現在、これらの JVM フラグを使用しています。
-Xmx2G -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -Xss2M
Go のドキュメントで、または上記の引数を「追加オプション」テキストボックスに入れようとしても、答えが見つかりませんでした。
後者を試したところ、次のスタックトレースが得られました。
Jenkins ビルドが成功するこれらのフラグを使用していないため、タスクはまだ失敗していると思います。上記の JVM フラグを Go SBT タスクに渡すことができる場所を誰か指摘できますか?
maven - 冗長なMavenタスクを実行せずにタスクとパイプライン間でMavenタスクを分割する方法
次のように GoCD を使用してデプロイ パイプラインをセットアップしようとしています。
- コンパイル、テスト、Maven リポジトリへのデプロイ
- SVN からソース コードをチェックアウトする
- mvn clean compile test install を実行します
- mvn deploy を実行して、WAR アーティファクトを Sonatype リポジトリにデプロイします。
- Tomcat サーバーにデプロイする
- Sonatype リポジトリから WAR アーティファクトを取得する
- mvn tomcat7:redeploy を実行して、実行中の Tomcat インスタンスにデプロイします
問題は、1.2 と 1.3 を (たとえば) 1.3 でソース コード全体のチェックアウト全体を再実行しなければ分割できないように見えることです。私はすでにパッケージ段階まで取得しており、そこから実行を続けることができるはずなので、これは冗長に思えます。
1.3 と 2.2 の間では、Sonatype から WAR アーティファクトを取得できることがわかりますが、maven タスクを実行するための pom.xml がないため、maven ではあまり処理できません。もちろん、ソース コード マテリアルを追加して、mvn パッケージの tomcat7:redeploy サイクル全体をもう一度実行することもできますが、これが最初に設計された目的ではないことは確かです。
また、シェル スクリプトを作成し、それを実行して WAR ファイルを適切な場所にコピーするように Go に依頼することもできます。展開パイプラインを視覚化するのにあまり役に立たない単一のボックス。
Maven タスク フローを異なる Go タスク / パイプラインに分割したい場合、このパイプラインをどのように設計すべきかについてアドバイスをもらえますか?
ありがとうウォン
go-cd - root 権限で GoCD のジョブとタスクを実行するには?
GoCD でシェル スクリプトをタスクとして実行しようとしていますが、スクリプトには特定のコマンドを実行するためのルート権限がないようです。
postman - GoCDを使用してPostmanとの継続的統合を行うことは可能ですか?
現在、私は API 自動化のためにポストマンを調査しており、継続的な統合プロセスに行き詰まっています。GoCD を使用して Postman との継続的統合を行うことは可能ですか? Jenkins と Postman を使用した CI のドキュメントのみを取得しています。
git - コンテナへの新バージョンのデプロイ
AWS で CoreOS クラスターを実行しています。AWS の各インスタンスで、docker コンテナーを実行します。たとえば、最新のソフトウェア バージョンで Docker イメージを実行する API という名前の 2 つのインスタンスがあります。
また、最新バージョンの別の Docker イメージを実行する 6 つのプロセッサ インスタンスがあります。
クラスター内のすべてのコンテナーを更新したいので、今日はパイプラインでGoCDを使用して、すべての作業を行う ansible-playbook をアクティブにします。パイプラインは github プロジェクトをリッスンし、そのブランチに変更をプッシュすると、パイプラインがアクティブになります。
API とプロセッサの新しい docker イメージを構築し、新しい更新されたイメージを dockerhub にアップロードします。次に、AWS インスタンスに接続し、アップロードしたばかりのイメージに対して docker pull を発行します。最終的に、新しくプルされたイメージでコンテナを起動します。
これは、現在、バージョンの展開を制御する方法です。
問題は次のとおりです。
- 長い時間がかかります
- さまざまな理由で失敗することがあります
- 柔軟性がありません(githubでリッスンしてファイルをプルするには、特定のブランチをハードコーディングする必要があります)
この仕事を成し遂げるための他の提案やツールはありますか? 場合によっては 3 台のマシンを更新する必要があり、場合によっては 7 台のマシンを更新する必要があり、スケーリングできるものが必要です。
git - gocd から最新のコミットを取得し、特定のフォルダーが変更されたことを検出するにはどうすればよいですか?
gocd 継続的配信ツール + git を使用しています。私のプロジェクトは多くのサブプロジェクトで構成されています。各コミットですべてのサブプロジェクトを再構築したくないため、サブプロジェクトごとに 1 つのパイプラインを作成しました。各パイプラインについて、たとえば project1 については、適切な作業ディレクトリを選択して、次のように実行する必要があることを知っています。
- gocd ビルドをトリガーした git commit を取得します。
- そのコミットの変更に project1 フォルダーが含まれているかどうかを検出する
- プロジェクト全体の変更も project1 フォルダーに影響する場合、project1 のカスタム ビルド コマンドを実行します。
現在のビルドをトリガーした gocd からコミットを取得するにはどうすればよいですか? それは単にgitの最新のコミットですか?最新のコミットは、多くの同時コミットの場合に安全なオプションではないため、gocd から直接取得する必要があります。ビルド トリガー イベントごとに保存されることを願っています。コミットがbashのフォルダに与える影響をどのように検出しますか?