Docker+jenkins+python3環境を使用して非常に詳細なチュートリアルを構築する

Docker+jenkins+python3環境を使用して非常に詳細なチュートリアルを構築する

序文:

自動化を記述した後、毎日サーバー上で実行する必要があります。このような問題に遭遇しました。Jenkins コンテナを docker にインストールし、git からコードを pull したところ、コードが Jenkins コンテナのディレクトリにあることがわかりました。実行すると、Python 環境とサードパーティのライブラリがインストールされていないというプロンプトが表示されました。

解決策は3つあります。

1つ目の方法: Jenkinsコンテナを起動するときに、コンテナディレクトリをホストディレクトリにマウントして実行する(この方法は実装できません)

2 番目の方法: Jenkins 上にローカル ノードを作成し、コードをローカルにプルしてローカル プロジェクトを実行します (ローカル マシンで使用する方が便利ですが、制限は比較的小さいです)

3番目の方法: jenkinsイメージを再パッケージ化し、jenkinsイメージにpython3環境をインストールして、コンテナ内でプロジェクトを実行します(手順は面倒ですが、将来的には永続的に使用されます)

最初の方法と 2 番目の方法では、Docker および Jenkins イメージがサーバーにインストールされている必要があります。

1. Dockerをインストールする

Docker をインストールします https://www.runoob.com/docker/docker-tutorial.html

2. jenkisnイメージをインストールする

1. dockerでイメージを探す docker search jenkins
  
2. 必要なイメージをダウンロードする docker pull jenkinsci/blueocean
  
3. Dockerイメージが正常にダウンロードされたかどうかを確認する
  
4. ダウンロードしたイメージを起動します。docker run -d -p 10240:8080 -p 10241:50000 -v /jenkins_autotest/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai --name jenkint_test jenkinsci/blueocean
 
#説明: docker run -d: コンテナをバックグラウンドで実行します -p: コンテナのポート マッピングを指定します -p 10240:8080 は、コンテナの 8080 ポートをホストの 10240 ポートにマッピングすることを意味します。複数のポートをマッピングするには、-p 8082:8080 -p 8083:8081 を使用します
   -v: ホスト ディレクトリと Docker コンテナ内のディレクトリをマウントします /Users/songpeilun/jenkins_home ローカル ホストの絶対ディレクトリ、/var/jenkins_home コンテナ ディレクトリ (コンテナ ディレクトリをローカルにマウントします)
   -v:/etc/localtime:/etc/localtime ローカル時間とコンテナ時間を同期します -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai コンテナ時間を上海時間に設定します (そうでない場合、コンテナ時間とローカル時間は 8 時間異なります)
   --name jenkint_test コンテナの名前を jenkinsci/blueocean に設定します。コンテナを起動するためのイメージ名を選択します (最新のものはデフォルトのイメージに追加されます。作成したイメージをプルする場合は、独自のバージョン番号 jenkinsci/blueocean: バージョン番号 TAG を追加します)

   ⚠️ コンテナディレクトリにローカルディレクトリをマウントする場合は、必ずローカルフォルダに権限を付与してください: chmod 777 jenkins_home

docker imagesと入力して、jenkinsイメージが正常にインストールされているかどうかを確認します。

Docker イメージ

コンテナが実行中かどうかを確認する

ドッカーps

dockerにはすでに実行中のコンテナjenkinsがあることがわかります

これは、Jenkins がインストールされ、Jenkins を起動できることを意味します。

3. Jenkinsを起動する

ブラウザにサーバーのIP + ポート番号を入力します http://47.99.98.250:10240/ アクセスできない場合は、システムのファイアウォールをオフにしてください

パスワードを表示する方法は2つあります。1つ目はサーバーのコンテナで表示する方法、2つ目はマップされたローカルで表示する方法(ローカルディレクトリをマップしている場合)

はい、Jenkins がここにインストールされました。

コンテナ内のパスワードを表示します: cat /var/jenkins_home/secrets/initialAdminPassword
ローカルディレクトリをマップする: cat /Users/songpeilun/jenkins_home/secrets/initialAdminPassword
#/Users/songpeilun/jenkins_home ローカル マッピング ディレクトリ アドレス

3. 方法2: 新しいローカルノードを作成する

方法 2 の具体的なロジックについて説明します。主に、Jenkins の新しいローカル ノードを作成し、その新しいノードを使用して git 上のコードをローカル (ホスト) にプルしてコードを実行します。

この方法は、主に python3 環境がすでにあるローカル環境に適しています。自動化を直接実行し、ローカル継続的インテグレーションを使用して毎日の自動化レポートを実現できます (欠点: ローカルノードはホストマシンのアドレスを IP として使用するため、毎回コンピューターと Jenkins アドレスを開く必要があり、外部ネットワークはアクセスできません。制限は小さいです)

ステップ1: JenkinsにSSHエージェントプラグインをインストールする

SSHエージェントプラグインシステム設定 - プラグイン管理 - オプションプラグインをインストールし、SSHエージェント検索を入力します

ステップ2: 新しいノードを追加する

システム設定 - ノード管理 - 新しいノード (ノード名は重複できません)

例:

ノード名: 中国語の文字ではなく英語の文字を使用してください (プロジェクトの作成時にノードを選択すると警告が表示されます)

ノードの説明: オプション

実行者の数: 同時に実行されるノードの数

リモート作業ディレクトリ: ローカル作業ディレクトリ (/Users/songpeilun/jenkins) では、このファイルに対する完全な権限を持つルート権限を持つユーザーが必要です。

タグ: オプション

使用法: 可能な限りこのノードを使用する

起動方法: SSH経由でエージェントを起動する

ホスト: このマシンのネットワーク IP アドレス (ネットワーク - ネットワーク設定 - IP)

資格情報: 追加されたローカルアカウントとパスワードを選択します

ホストキー検証戦略: 非検証検証戦略

可用性: エージェントをオンライン状態に維持する

ノードプロパティ --git: git インストールパス

次にノードを起動すると、起動が成功したことが示されます。次に、ローカル ホスト ディレクトリ フォルダーにノード ファイルがあるかどうかを確認します。

3. 方法3: コンテナにPython 3環境をインストールする

方法3の具体的なロジックについてお話しします。主にコンテナ内のコードを実行します。Gitはデフォルトでマッピングなしでコンテナ内にコードをプルし、コンテナ内のコードを直接実行します(メリット:サーバーのリソースサイズを占有せず、いつでも起動可能。ローカル起動サービスを必要とせず、サーバーアドレスを直接使用できる。デメリット:インストールが少し面倒😈)

ステップ1: Jenkinsコンテナに入る必要があります  

docker exec -itu ルートコンテナID /bin/sh

Python3をインストールするには2つの方法があります

1. Weget のインストール (推奨されません。基本的に現在のインストール方法と同じですが、最初に gcc などのいくつかの依存パッケージをインストールする必要があります)

2.apk add インストール (このバージョンは alpine: apk add なので、すぐにインストールできます)

最後に、システム バージョンの問題に注意してください。

Centosならyum、Ubuntuならapt-get、Alpineならapk

ステップ2: apkを使用してpython3をインストールする

cd /etc/apk/
echo "https://mirrors.ustc.edu.cn/alpine/v3.6/main/" > リポジトリ
echo "https://mirrors.ustc.edu.cn/alpine/v3.6/community/" >> リポジトリ

ダウンロードが速くなるようにapkソースを更新します

apkアップデート

ステップ3: apk addを使用してpython3環境をインストールする

apk python3 を追加

ステップ4: pip3を更新する

pip3 インストール --upgrade pip

Python環境を確認する python -V
ピップ3-V

上記のインストールが成功したら、サードパーティライブラリのプラグインをインストールできます。これでインストールは半分完了です。

プロジェクトのニーズに応じてプラグインをインストールします。例として私のプロジェクトを示します。

ステップ5: Pythonサードパーティライブラリをインストールする

まずrequirements.txtファイルを作成します

pip フリーズ > requirements.txt

pip インストール -r 要件.txt

次にvi requirements.txtを使用してファイルを開き、編集します。

base64-テスト0926==1.0.0
        pyMySQL == 1.0.2
        pytest==6.2.3
        python-jenkins==1.7.0
        pyYAML == 5.4.1 です
        レディス==3.5.3
        リクエスト==2.25.1
        SQLアルケミー==1.4.10
        urllib3 == 1.26.4
        ホイール==0.36.2
        アリュール-pytest==2.8.40
        アリュール-Python-commons==2.8.40

最後の 2 つはインストール前に Allure レポートの構成が必要です。そうしないとエラーが報告されます。

⚠️ インストールがうまくいかなくても、心配せずにゆっくりと理由を見つけてください。以前エラーが発生した後、私は長い時間をかけて理由を探しました。それは Greenlet プラグインが不足していたためです (後で方法を紹介します)

問題がなければ、インストールは成功です。独自のコードをコンテナにコピーしてテストすることができます。問題がなければ、画像をパッケージ化することができます

ローカルファイルをコンテナのxxディレクトリにコピーする

docker cp /Users/songpeilun/python_data/allure-2.13.0.zip jenkint_test:/xx ディレクトリ

ここではAllureレポートを使用するのでインストールする必要があります

ステップ6: アリュールレポートをインストールする

Allure は解凍されたパッケージです。こちらがダウンロードしたパッケージです。ダウンロード後、コンテナにコピーして解凍してください。

リンク: https://pan.baidu.com/s/1JbBXOfA0j6saZh7H8RMipw パスワード: qfnv

#コンテナ内のファイルを解凍します unzip allure-2.13.0.zip

#環境変数を設定する vi /etc/profile
PATH の後に追加: $PATH:/allure-2.13.0/bin (allure のフルパス)
source /etc/profile 保存して有効にする

ステップ7: 魅力を確認する

魅力 --バージョン

4. 画像のパッケージ化/アップロード

今後のアップデートにご期待ください。

5. Jenkins環境を構成する

Docker+jenkins+python3 を使用した環境構築に関する超詳細なチュートリアルに関するこの記事はこれで終わりです。Docker+jenkins+python3 環境に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • DockerはJenkinsを構築し、プロジェクトのパッケージ化とデプロイの手順を自動化します
  • Docker+gitlab+jenkins は、ゼロから自動デプロイメントを構築します
  • Dockerはjenkins+mavenコード構築および展開プラットフォームを構築します
  • Docker で Jenkins サービスを構築する例
  • Docker環境でJenkinsを設定すると、タスクをビルドするときにコンソールログに文字化けした中国語の文字が表示されます
  • Dockerを使用したJenkins自動化ツールの実装

<<:  VUEトークンの無効化プロセスの詳細な説明

>>:  MySQLデータ復旧のさまざまな方法の概要

推薦する

フロントエンドは画像を遅延ロードする方法を知っている必要があります(3つの方法)

目次1. 遅延読み込みとは何ですか? 2. 遅延読み込みを実装する🌄: 2.1 最初の方法: 2.2...

JavaScriptオフセットは、ウィンドウ内でのマウス座標の取得とモジュールのドラッグを実装します。

オフセットOffset はオフセットです。関連プロパティの offset シリーズを使用すると、次の...

JS の難しさ 同期と非同期、スコープとクロージャ、プロトタイプとプロトタイプ チェーンの詳細な説明

目次JS スリーマウンテンズ同期 非同期同期と非同期の違い範囲、終了関数スコープチェーンブロックスコ...

MySQLソートにおけるCASE WHENの使用例

序文以前のプロジェクトでは、SQL の CASE WHEN ソート関数が使用されました。ではブログメ...

HTML ウェブページ作成のための 8 つの強力なテクニック

<br />作業を簡単に完了できる Web ページ作成ツールは数多くありますが、HTML...

Vueコンポーネント間の通信の非常に詳細な要約

目次序文1. Props、$emit一方向データフロー2. $親、$子3. $attrs、$list...

Docker ロード後にイメージ名が none になる問題の解決方法

最近、docker load -i コマンドを使用してイメージ パッケージを圧縮した後、イメージ名と...

CSSファイルをインポートする3つの方法の詳細な説明

CSS を導入する方法には、インライン スタイル、内部スタイル シート、外部スタイル シートの 3 ...

水平プログレスバーの最後にテキストを表示するための実装コードの CSS 記述

問題の説明仕事で以下の成果を達成したいと考えています。 解決div タグに相対配置を追加し、絶対配置...

バックエンド管理システムを構築するためのvue-element-adminの実装手順

最近、カンファレンスの健康申告システムに取り組んでいたとき、バックエンドを構築する必要があり、vue...

jsを使って簡単な計算機を作る

この記事では、jsで簡単な計算機を作成する具体的なコードを参考までに共有します。具体的な内容は次のと...

15行のCSSコードがAppleデバイスをクラッシュさせる可能性があり、最新のiOS 12も例外ではない

たった15行のCSSでiPhoneがクラッシュするWire のセキュリティ研究者 Sabri Had...

Linux カーネル デバイス ドライバー キャラクタ デバイス ドライバー ノート

/******************** * キャラクターデバイスドライバー**********...

MysqlチューニングExplainツールの詳細な説明と実践的な演習(推奨)

MySQL チューニング ツールの詳細な説明と実践的な演習の説明 ツールの紹介の説明 分析例の説明...

IE6 で JS エラーが発生し、CSS が適用されない HTML エンコードの問題の解決策

テストでは、ページ定義がutf-8でエンコードされている場合、 js ファイルに中国語などのマルチバ...