Jenkins Docker 静的エージェント ノードのビルド プロセス

Jenkins Docker 静的エージェント ノードのビルド プロセス

静的ノードはマシン上に固定されており、いくつかの固定コマンドを通じて起動されます。動的ノードには複数のタスクがあり、実行する複数のエージェントを作成するのに役立ちます。静的ノードとは異なり、複数のタスクが来た場合、タスク キューで待機してからビルドを実行します。これが静的と動的の違いです。

静的ノードは、java -jar コマンドを使用して起動できます。

1. 静的ノードの練習

まず、Jenkins で jnlp タイプのエージェントを作成し、接続に必要な認証とキー情報を取得します。

jar -jar コマンドの後には多くのパラメーターがあり、動的ノードを構成するか静的ノードを構成するかに関係なく使用されます。

java -jar agent.jar -jnlpUrl http://192.168.1.200:8080/computer/buildtest01/jenkins-agent.jnlp -secret 047a2627be5ee128c1a93f281051acc7bbbbd5221dcb56ae9fa408a494e72c2f -workDir "/home/jenkins"

1.1 Docker 静的ノード

イメージを起動し、認証パラメータを渡します。 (Docker を使用するということは、実際にはイメージを使用し、そのイメージ内でエージェントを実行し、これらのパラメータを渡すことを意味します)

仮想マシンに agent.jar パッケージをダウンロードし、これらのコマンドを手動で実行します。

コマンドラインでノードを起動します。java -jar agent.jar -jnlpUrl http://139.198.166.235:8080/computer/build%2D02/jenkins-agent.jnlp -secret 942d7e769a43f65388751ee954af20e90fa0c5f8bdb19e0584db4cc61adab8ba -workDir "/var/jenkins"
エージェントのコマンドラインから実行し、シークレットをファイルに保存します。
 
echo 942d7e769a43f65388751ee954af20e90fa0c5f8bdb19e0584db4cc61adab8ba > 秘密ファイル
java -jar agent.jar -jnlpUrl http://139.198.166.235:8080/computer/build%2D02/jenkins-agent.jnlp -secret @secret-file -workDir "/var/jenkins"

Docker にある場合は、エージェント イメージを見つける必要があります: inbound-agent image: Docker Hub

## テスト

[root@jenkins-agent ~]# docker run --init jenkins/inbound-agent -url http://139.198.166.235:8080 -workDir=/home/jenkins 942d7e769a43f65388751ee954af20e90fa0c5f8bdb19e0584db4cc61adab8ba build-02
 
 
 
2021年10月28日 午前2時19分25秒 hudson.remoting.jnlp.Main createEngine
情報: エージェントの設定: build-02
2021年10月28日午前2時19分25秒 hudson.remoting.jnlp.Main$CuiListener <init>
情報: Jenkins エージェントはヘッドレス モードで実行されています。
2021年10月28日 午前2時19分25秒 hudson.remoting.Engine startEngine
情報: リモート バージョン 4.11 を使用しています
2021年10月28日午前2時19分25秒 org.jenkinsci.remoting.engine.WorkDirManager 初期化WorkDir
情報: /home/jenkins/remoting をリモート作業ディレクトリとして使用しています
2021年10月28日 午前2時19分25秒 org.jenkinsci.remoting.engine.WorkDirManager セットアップログ
情報: エラーログと出力ログの両方が /home/jenkins/remoting に出力されます
2021年10月28日 午前2時19分25秒 hudson.remoting.jnlp.Main$CuiListenerステータス
情報: [http://139.198.166.235:8080/] 内でサーバーを検索しています
2021年10月28日 午前2時19分25秒 org.jenkinsci.remoting.engine.JnlpAgentEndpointResolver 解決
情報: リモート サーバーは次のプロトコルを受け入れます: [JNLP4-connect、Ping]
2021年10月28日 午前2時19分25秒 hudson.remoting.jnlp.Main$CuiListenerステータス
情報: エージェントの検出に成功しました
  エージェントアドレス: 139.198.166.235
  エージェントポート: 50000
  アイデンティティ: 67:e8:d2:73:d1:cf:01:f6:6c:a4:cb:b3:0f:25:8c:3d
2021年10月28日 午前2時19分25秒 hudson.remoting.jnlp.Main$CuiListenerステータス
情報: ハンドシェイク
2021年10月28日 午前2時19分25秒 hudson.remoting.jnlp.Main$CuiListenerステータス
情報: 139.198.166.235:50000 に接続しています
2021年10月28日 午前2時19分25秒 hudson.remoting.jnlp.Main$CuiListenerステータス
情報: プロトコルを試行中: JNLP4-connect
2021年10月28日午前2時19分25秒 org.jenkinsci.remoting.protocol.impl.BIONetworkLayer$Reader 実行
情報: ProtocolStack の起動を待機しています。
2021年10月28日 午前2時19分26秒 hudson.remoting.jnlp.Main$CuiListenerステータス
情報: リモート ID が確認されました: 67:e8:d2:73:d1:cf:01:f6:6c:a4:cb:b3:0f:25:8c:3d
2021年10月28日 午前2時19分26秒 hudson.remoting.jnlp.Main$CuiListenerステータス
情報: 接続済み

## 走る

[root@jenkins-agent ~]# docker run -itd --name build-02 jenkins/inbound-agent -url http://139.198.166.235:8080 -workDir=/home/jenkins 942d7e769a43f65388751ee954af20e90fa0c5f8bdb19e0584db4cc61adab8ba build-02
bd2500223dabb45ff41c234a8871651f93b38264458c4d2bed40f821577b8944
 
 
[root@jenkins-agent ~]# docker ps
コンテナID イメージ コマンド 作成ステータス ポート名
bd2500223dab jenkins/inbound-agent "/usr/local/bin/jenk?? 18秒前 18秒前 build-02

ここで注意すべき点は、静的 Docker エージェントにはビルド ツールなど何も含まれていないことです。

[root@jenkins-agent ~]# docker exec -it build-02 bash
ジェンキンス@bd2500223dab:~$ mvn
bash: mvn: コマンドが見つかりません

したがって、解決策としては、エージェント イメージをベース イメージとして使用し、ビルド ツールをその中に配置して使用するか、ツールをマウントします。

docker run -itd --name build-02 \
apache-maven-3.8.1 を /home/jenkins/apache-maven-3.8.1 にコピーします。
jenkins/inbound-agent -url http://139.198.166.235:8080 -workDir=/home/jenkins 942d7e769a43f65388751ee954af20e90fa0c5f8bdb19e0584db4cc61adab8ba ビルド-02

jenkins@2a682b01263b:~$ /home/jenkins/apache-maven-3.8.1/bin/mvn -v
Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d)
Maven ホーム: /home/jenkins/apache-maven-3.8.1
Java バージョン: 11.0.12、ベンダー: Eclipse Foundation、ランタイム: /opt/java/openjdk
デフォルトのロケール: en、プラットフォームのエンコーディング: UTF-8
OS 名: "linux"、バージョン: "3.10.0-693.el7.x86_64"、アーキテクチャ: "amd64"、ファミリ: "unix"

同様に、docker コマンドを使用してマウントします。

Jenkins Docker 静的エージェント ノードの構築に関するこの記事はこれで終わりです。Jenkins Docker ノードの詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Docker Gitlab+Jenkins+Harborは永続的なプラットフォーム運用を構築します
  • Docker+Jenkinsを使用して自動的にビルドおよびデプロイする
  • Docker環境でJenkinsを設定すると、タスクをビルドするときにコンソールログに文字化けした中国語の文字が表示されます
  • Docker での Jenkins ビルド環境の設定の詳細な説明
  • Jenkins が Docker イメージをビルドする例

<<:  MySQL の replace と replace into の詳細な例 into_Mysql

>>:  HTML Selectは、デフォルトの選択を設定するためにselected属性を使用します。

推薦する

MySQLオンラインDDL gh-ostの使用の概要

背景: DBA として、大規模なテーブルの DDL 変更のほとんどは、Percona の pt-on...

Vue ルーター vue-router 詳細説明ガイド

中国語ドキュメント: https://router.vuejs.org/zh/ Vue Router...

MySQL Server 8.0.3 のインストールと設定方法のグラフィックチュートリアル

この文書はMySQL Server 8.0.3のインストールと設定方法を参考のために記録したものです...

Dockerスペースがいっぱいでコンテナに入れない場合の解決策

トラブル発生が突然で、業務も迫っていたため、現場のスクリーンショットを撮る時間がありませんでしたので...

Vue 2.0 の基礎を詳しく解説

目次1. 特徴2. 例3. オプション4. 基本的な文法5. ライフサイクル6. ルーティング管理 ...

Vue で v-if と v-for を一緒に使用することが推奨されない理由の詳細な説明

この記事では主に、v-if と v-for を一緒に使用することが推奨されない理由を紹介します。詳細...

MySQLの連結関数CONCATの使い方の詳しい説明

前回の記事では、MySQL の置換関数 (Replace) とセグメンテーション関数 (SubStr...

Alibaba Cloud Ubuntu 16.04 が IPSec サービスを構築

IPSec の概要IPSec (インターネット プロトコル セキュリティ): ネットワーク層と適用さ...

TomcatコンポーネントはWebサーバーのアーキテクチャの進化を示しています

1. tomcat とは誰ですか? 2. Tomcat は何ができますか? Tomcat は Web...

Vue シンプル登録ページ + 確認コード送信機能の実装例

目次1. エフェクト表示2. 検証コードとメールプッシュ管理の強化(後述のブログを参照) 3. 一般...

虫眼鏡ケースのJavaScriptオブジェクト指向実装

この記事では、参考までに、虫眼鏡のJavaScriptオブジェクト指向実装の具体的なコードを紹介しま...

vue3 キャッシュページキープアライブと統合ルーティング処理の詳細な説明

目次1. はじめに2. 使用1. vue2とvue3の違い2. ページ上の一部のデータはキャッシュす...

組み込みオブジェクトに関するJavascriptの基礎

目次1. 組み込みオブジェクトの紹介1.1 数学オブジェクト1.2 数学における方法1.3 日付オブ...

Win10 での MySQL 5.7 の詳細なインストールと設定のチュートリアル

1. MySQL 5.7を解凍する2. 新しい設定ファイルmy.iniを作成し、 D:\Free\m...

HTML チュートリアル、簡単に学べる HTML 言語 (2)

*******************HTML言語入門(パート2)*****************...