Windows で Jenkins を使用してビルド、パッケージ、デプロイ(フリースタイル方式)#
@TOC
前言#
Jenkins を迅速に始めるために、クラウドサーバーはそれほど多くないため、Windows をビルドサーバーとして使用し、別の Tencent Cloud をデプロイサーバーとして使用します。
一、インストール#
説明:以前は docker-desktop に Jenkins をインストールしていましたが、問題が発生しました。それは、docker 内の Jenkins が Windows の docker コマンドをどのように使用するかということです。(Windows での docker 呼び出しファイルは Linux とは異なります)
- 公式サイトから Jenkins をダウンロード
https://www.jenkins.io/
デフォルトのインストールを進め、インストールパスを選択する際に他のドライブにインストールできます。
P.S.
ここで注意が必要なのは、Jenkins のデフォルトの作業パスが C ドライブにあることです:C:\Users\ ユーザー名 \AppData\Local
他のドライブに変更する場合は、インストール時に選択したパスにある jenkins.xml ファイルを見つけて、以下のように変更します:D ドライブの変更に注意してください:
<env name="JENKINS_HOME" value="D:\java\jenkins-win\home\Jenkins\.jenkins"/>
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "D:\java\jenkins-win\jenkins.war" --httpPort=9091 --webroot="D:\java\jenkins-win\home\Jenkins\war"</arguments>
<pidfile>D:\java\jenkins-win\home\Jenkins\jenkins.pid</pidfile>
完全な設定
<!--
The MIT License
Copyright (c) 2004-2017, Sun Microsystems, Inc., Kohsuke Kawaguchi, Oleg Nenashev, and other Jenkins contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-->
<!--
Windowsサービス定義のJenkins。
アンインストールするには、「jenkins.exe stop」を実行してサービスを停止し、「jenkins.exe uninstall」を実行してサービスをアンインストールします。
両方のコマンドは、実行が成功した場合、出力を生成しません。
-->
<service>
<id>jenkins</id>
<name>Jenkins</name>
<description>このサービスはJenkins自動化サーバーを実行します。</description>
<env name="JENKINS_HOME" value="D:\java\jenkins-win\home\Jenkins\.jenkins"/>
<!--
特定のJavaバージョンでJenkinsを実行したい場合は、java.exeへのフルパスを指定してください。
次の値は、PATHにJavaがあることを前提としています。
-->
<executable>D:\java\jdk\jdk-11.0.4\bin\java.exe</executable>
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "D:\java\jenkins-win\jenkins.war" --httpPort=9091 --webroot="D:\java\jenkins-win\home\Jenkins\war"</arguments>
<!--
インタラクティブフラグは、空の黒いJavaウィンドウを表示します。
まだデバッグ中です。
<interactive />
-->
<logmode>rotate</logmode>
<onfailure action="restart"/>
<!--
WinSWが終了し、プロセスが漏れた場合、JENKINS_HOMEの破損を防ぐために
これらの暴走JARプロセスを起動時に中止したいと考えています。
したがって、この拡張機能はデフォルトで有効になっています。
-->
<extensions>
<!-- これはRunawayProcessKiller拡張のサンプル設定です。 -->
<extension enabled="true" className="winsw.Plugins.RunawayProcessKiller.RunawayProcessKillerExtension" id="killOnStartup">
<pidfile>D:\java\jenkins-win\home\Jenkins\jenkins.pid</pidfile>
<stopTimeout>10000</stopTimeout>
<stopParentFirst>false</stopParentFirst>
</extension>
</extensions>
<!-- 参照された例を見て、さらにオプションを確認してください -->
</service>
最後に Jenkins サービスを再起動します
二、一般的なプラグインのインストール#
1.Publish Over SSH (リモートプッシュ)#
三、システム設定#
設定場所は以下の通りです
Manage Jenkins - > System Configuration -> Configure System
1.SSH サーバーの設定
四、グローバル設定#
設定場所
Manage Jenkins - > System Configuration -> Global Tool Configuration
1.maven の settings 設定:
自動インストールも可能です
2.jdk 設定
自動インストールも可能です
3.maven 設定
自動インストールも可能です
五、資格情報の設定#
ここでは主に git のログイン名とパスワード、リモートホストのログインパスワードを追加する必要があります。
六、マイクロサービスのビルド、パッケージ、デプロイ#
基本的な考え方:Windows 上の Jenkins がリポジトリのプロジェクトを取得してビルドし、jar ファイルを生成します。その後、jar ファイルと Dockerfile などのパッケージに必要なファイルをリモートデプロイサーバーにプッシュし、リモートサーバーで docker のパッケージングとデプロイを行います。
ここでは pipeline を使用せず、コマンドを bat(Linux では shell)スクリプトファイルに書き込んでいません
プロジェクト構造:
1. 新しいアイテムを作成し、Freestyle プロジェクトを選択
説明は自由に記入
1.1 Jenkins の環境変数の設定
パラメータ設定をチェックすると、Jenkins はこのパラメータを shell または bat コマンドに渡します。
ここでは主にコンテナ名、イメージ名、Spring Boot の実行環境などの変数を設定しました:
コンテナ名
イメージ名
Spring Boot のアクティブな実行環境(設定可能)
コンテナ内の Spring Boot のアクティブ環境
1.2 JDK の選択:
1.3 ソースコード管理:
1.4 ビルドのトップレベル maven 目標
説明:
clean install :ローカルリポジトリにクリーンインストール
-pl パッケージするモジュールを指定
-am -pl で依存しているモジュールもコンパイルする(これを追加しないと、すべてのモジュールが見つからなくなります)
pom: トップレベルの pom があるパスを指定(maven コマンドが実行されるパス);${WORKSPACE}/pom.xml git プロジェクトの最上位のパス
例えばプロジェクトの構造:
A-cloud:
B-gateway
pom.xml
C-common
pom.xml
この時、${WORKSPACE}=A-cloud のパス
-pl B-gateway : A-cloud の下の B-gateway をパッケージモジュールとして指定
-am 依存しているモジュールもビルドパッケージします。(この時は A-cloud の pom から探します)
1.5 ビルドステップを追加し、ローカルホストの bat コマンドを実行:
ここではまずイメージをクリーンアップし、docker イメージをパッケージします:
ここではまずコンテナを削除し、実行します:
重要なポイント、ビルドで生成された jar ファイルと関連する Dockerfile をリモートホストにプッシュし、リモートホストで docker を構築して実行する方法。
1.6 ビルド後の操作:
リモートにプッシュするオプションを使用します。
dockerFIle:
FROM openjdk:11.0.14.1-slim-buster
MAINTAINER FICUS
WORKDIR myapp
VOLUME /tmp
ARG JAR_FILE=./target/*.jar
COPY ${JAR_FILE} app.jar
EXPOSE 7070
#ENTRYPOINT ["sh","-c","java -jar -Dspring.profiles.active=dev2 app.jar "]
ENTRYPOINT ["sh","-c","java -jar app.jar --spring.profiles.active=dev2"]
#CMDはENTRY POINTの後に実行されます
#CMD [ "redis-server" ]
P.S.
/ficus-cloud も ${WORKSPACE} で置き換え可能
source files: ローカルでプッシュする必要のあるファイル
remote prefix: パスのプレフィックスを削除します。(ここでは記入していないため、リモートに ficus-gateway/target ディレクトリが作成され、ficus-gateway ディレクトリが作成されます)
remote directory: プッシュ先の基本パス、このパスは以前のシステム設定の作業パスの後に追加されます
つまり:/root/mytarget/ficus-cloud
cd mytarget/ficus-cloud :プロジェクトディレクトリに移動します(コマンドのデフォルトの位置はユーザーのホームディレクトリです)。
1.7 実行
七、ビルド、パッケージ、デプロイ vue(TODO)#
TODO
まとめ#
使用しているのは Windows 上の Jenkins ビルドで、リモート Linux でパッケージングとデプロイを行います。自由形式の Jenkins ビルド方式を使用し、関連する bat(Linux では shell)コマンドはファイルに書き込まれていません。