ユーザ用ツール

サイト用ツール


software:jenkins

Jenkins

Windows

(1) jenkins install

  1. OpenJDK 11 install
  2. jenkins install
    1. jenkins install path の設定 (default で OK)
    2. user の選択
      • “Run service as LocalSystem (not recommended)”
        • Windows Home の場合はこちら
      • “Run service as local or domain user:”
        • 任意のユーザーを入力可能。事前にサービスとしてログオンの設定が必要
          • ローカルセキュリティポリシー → ローカルポリシー → ユーザー権利の割当 → サービスとしてログオン にユーザーを追加しておく
    3. port 設定
    4. OpenJDK のインストールパス選択
    5. install
  3. browser で initialAdminPassword を入力
  4. ユーザー作成
  5. おすすめ plugin のインストール

(2) 必要な場合のみ Jenkins HOME (workspace path) の変更

  1. コンピューターの管理 → サービスとアプリケーション → サービス → Jenkins 停止
  2. インストールフォルダ内の jenkins.xml を編集
    • JENKINS_HOME の value=“%LocalAppData%\Jenkins\.jenkins” を変更する。
    • 例: value=“C:\Jenkins”
  3. 元の JENKINS_HOME のフォルダの内容を新しいフォルダに全部コピー
    • 例: %LocalAppData%\Jenkins\.jenkis の内容を C:\Jenkins にコピー
  4. コンピューターの管理 → サービスとアプリケーション → サービス → Jenkins 開始
  5. 正しく動作することが確認できたら、元の JENKINS_HOME の内容を削除
  6. Jenkins の管理 → システムの設定 → ホームディレクトリ で確認可能

(3) Windows 10 Home の場合、User の変更

  1. 先に Jenkins HOME を別の絶対パスで指定したフォルダに移動しておく
  2. コンピューターの管理 → サービスとアプリケーション → サービス
  3. Jenkins → プロパティ → ログオンタブを開いて、アカウントを入力

(4) その他設定

  1. Plugin
    1. Jenkins の管理 → プラグインの管理
      • P4 Plugin, Slack Notification, Discord Notifier など
    2. 利用可能タブで検索して必要なものにチェックし Install without restart
    3. 全部インストールしたらリスタート
  2. 変数
    1. Jenkins の管理 → システムの設定
    2. グローバルプロパティの環境変数に、共通で使う設定を登録しておく
  3. git 名の変更
    1. Jenkins の管理 → Global Tool Configuration
    2. GIt の「Git実行形式へのパス」を “git.exe” から “git” のみに変更
      • これをしておかないと、Windows Master から Linux Agent を呼び出した場合に GitSCM の checkout が失敗する
  4. Agent
    1. Jenkins の管理 → ノードの管理
    2. master も使う場合、master → 設定 → ラベルに任意の名前を設定 (windows など)
    3. 新規ノード作成 → ノード名設定、Permanent Agent On → OK
      • 必要に応じて追加
      • Linux Agent は ssh 設定 + openjdk だけで利用できる。

Linux

Ubuntu, Debian 等

  1. install
    • $ sudo apt install openjdk-11-jdk
      $ sudo apt install jenkins
  2. ブラウザで http://localhsot:8080/ を開いてセットアップ

Pipeline の設定

  1. 新規ジョブ作成 → パイプライン

SCM ポーリング

  • Pipeline script で SCM ポーリングを行う場合は、一度スクリプトを走らせておく必要あり。
  • 以前実行した script 中に checkout コマンド (poll:true) ある場合に、そのリポジトリがポーリング対象になる。
    • スクリプトコードを登録しただけではポーリングが行われない。
    • リポジトリは複数存在していても良い。
def script_repo= "${GIT_REPOSITORY}/gitsync.git"
checkout changelog: false, poll: true,
        scm: [$class: 'GitSCM',
            branches: [[name: '*/master']],
            extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'script']],
            userRemoteConfigs: [[url: script_repo]]]

外部コードの読み込み

  • load コマンドを使って、他のファイルを読み込むことができる。
  • 読み込まれる側のスクリプトは、最後に “return this” が必要。
  • jenkins 上の設定は最小限のコード (ローダーのみ) にしておいて、続きはリポジトリ内のスクリプトを読み込んで実行することができる。
// ローダー
def script_lib= load "${WORKSPACE}/script/library_code.groovy"
script_lib.lib_main()
// library_code.groovy
 
def lib_main()
{}
 
return this

外部コードのプロパティ

外部コード上で変数に値を保存しておいて、それを参照することはできない。

// library_code.groovy
 
def LocalPath= '~'
 
def getLocalPath()
{
    return LocalPath  // ← できない
}
 
return this

変数宣言は return this を返す実行コンテキストのローカル変数とみなされるため。

もし上記のような使い方をしたい場合は、@Field を使う。

// library_code.groovy
import  groovy.transform.Field
 
@Field def LocalPath= '~'
 
def getLocalPath()
{
    return LocalPath  // ← 期待通りに動く
}
 
return this

名前付き引数

名前付き引数による関数呼び出しは、辞書 (Map) に変換される。 関数宣言時に引数を Map で宣言する。

def message( Map args )
{
    echo args.url}
message url: ~

引数が省略された場合は null になるので、null 判定でデフォルト引数に置き換える事ができる。

Agent の指定

特定の Agent 上でジョブを実行したい場合は node() に引数として名前を与える。 ノード名や、Node に割り当てたラベルを指定できる。

node( 'windows' ){// ラベル 'windows' を与えた Agent 上で実行
}
 
node( 'linux' ){// ラベル 'linux' を与えた Agent 上で実行
}
software/jenkins.txt · 最終更新: 2021/10/29 23:40 by oga