序文:自動化を記述した後、毎日サーバー上で実行する必要があります。このような問題に遭遇しました。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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
張新旭氏の記事を引用して皆さんにシェアしたいと思います。 変更を加えたい場合は、対応する画像によって...
目次序文オプション1:オプション2:オプション3:オプション4(最終的に採用されたオプション):要約...
目次過去1週間の時間を取得する過去1か月の時間を取得する過去3か月分を取得新しい Date() と ...
explain コマンドは、クエリ オプティマイザーがクエリの実行を決定した方法を確認する主な方法で...
1. 括弧の役割1.1 角括弧 [ ]属性名が角括弧で囲まれている場合、右側には式の値が割り当てられ...
目次導入なぜわざわざ?落とし穴のあるコミュニティソリューション(Vue を例に挙げる)現時点では良い...
Vue を使用してプロジェクトを開発する過程で、次のような問題によく遭遇します。Vue のデータでオ...
[LeetCode] 177. 最も高い給与従業員テーブルからn番目に高い給与を取得する SQL ...
基本環境パゴダ設置サービスパゴダにインストールされた[Pythonプロジェクトマネージャー]パゴダに...
画像をプルする docker pull season/fastdfs:1.2トラッカーを開始 doc...
Nginx 502 Bad Gateway エラーに何度か遭遇しました。ここでメモしておこうと思いま...
MySQL エラー: パラメータ インデックスが範囲外です (1 > パラメータ数、つまり 0...
目次1. Javascript とは何ですか? 2. DOMとは何か3. JSコードの実行方法4. ...
jvm.options ファイルを elasticsearch 構成に追加し、スタック サイズを変更...
目次序文VirtualDOM とは何ですか? VirtualDOMを使用する理由DOMレンダリングペ...