サイト内を検索

ローカルMacにJenkinsを入れてGodotエンジンをビルドしてみよう

はじめに

どうもクライアント開発者のYです。みなさんJenkins使ってますか?

ココネの社内業務でもクライアントのビルドやリソースの配信などにJenkinsは日常的に利用されていて、とてもお世話になっているツールのひとつです。しかしJenkinsの内部動作についてはあまり理解せずに使っていたり、苦手意識もあるのでいざトラブルが発生しても手も足も出なかったりします。

そんな便利だけどミステリアスなJenkinsさんと仲良くなるため、お手軽に試せるローカル環境にインストールしてみることにしましょう。

 

インストール環境

MacBook Pro 2017 13-Inch

メモリ 16 GB / SSD 1TB

macOS Ventura 13.5.1

 

Jenkinsのインストール手順

インストールはHomebrewで行いますが、至極結構簡単です。

Homebrew のインストール

オフィシャルサイト(https://brew.sh/)を参考にして以下のコマンドをターミナルで実行してください。

/bin/bash - "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

 

Jenkinsのインストール

続いてターミナルから以下のコマンドを実行してJenkinsをインストールします。

brew install jenkins

しばらくインストールが終わるまで待って、Jenkins自体のインストールはこれで完了です。

実際にやってみるとびっくりするほど簡単でした。

 

Jenkinsの起動と初期化

起動

続いて以下のコマンドを実行してJenkinsを起動させます。

brew services start jenkins

上記のコマンドの実行に成功したらブラウザなどで http://localhost:8080/ を開くと次のJenkinsのアンロックに進めます。

【TIPS】Jenkinsにアクセスできなくなってしまった!

プラグインの追加後などうまく再起動しない場合があります。その場合にはコマンドラインから以下のように入力してJenkinsを再起動してください。

brew services restart jenkins

アンロック

ブラウザで localhost:8080 を開くと最初にJenkinsのロック解除画面が表示されます。

.jenkinsフォルダは隠しフォルダなので、ファインダーから探せない場合はコンソールから以下のコマンドを入力しても確認できます。

cat ~/.jenkins/secrets/initialAdminPassword

このパスワードを入力して「Continue」ボタンを押すと次に進めます。

プラグインのインストール

ひとまず「Initial Suggested plugins」を選択して先に進みます。

アカウント作成

プラグインのインストール後に最初のユーザのアカウント作成を行います。

名前やパスワード、メールアドレスなど入力して「Save and Continue」で先に進みます。

Jenkinsのアドレス設定

ここはローカルで使うだけなので、ひとまずlocalhostのままで進みます。

 

最後まで設定を終えるといよいよJenkinsが使えるようになります!

 

ひとまず「Jenkinsさえインストールできたら満足!」という人はここまでで終了です。

「もう少し深くJenkinsを使ってみたい!」という意欲のある人は次のGodotエンジンのビルドも挑戦してみてください。

Godotエンジンのビルドpipeline構築

せっかくJenkinsをローカルで動かせるようになったので、もう少し理解を深められるよう最近気になるオープンソースのゲームエンジンGodotエンジン(https://godotengine.org/)のビルド環境を構築してみます。

MacでGodotビルドに必要な環境準備

以下の公式ドキュメント(https://docs.godotengine.org/ja/stable/development/compiling/compiling_for_osx.html#doc-compiling-for-osx)が参考になります。

GodotのビルドにはPythonとSconsが必要なのですが、Homebrewを利用して以下のコマンドでインストールできます。

 

brew install python3 scons

さらに、MacOSでGodotエンジンをビルドする場合にはVulkanSDKも必要になります。

こちらのサイト(https://vulkan.lunarg.com/sdk/home#mac)からMacOS用のSDKをダウンロードしてインストールしてください。

(インストールの設定は全てディフォルトのままで問題ありません。)

Jenkinsの設定

この後ビルドを行うためのジョブを作成していくのですが、その前に少しJenkinsの操作に慣れるためにいくつか設定をしてみましょう。

プラグイン追加

まず、ジョブ設定で使用したいプラグインを追加してみましょう。

Jenkinsのダッシュボード画面の左から「Jenkinsの管理」>「Plugins」を選択してください。

Pluginsの画面が表示されるので画面左から「Avalable plugins」を選択、上の検索入力欄に「Extended Choice Parameter」と入力してください。

見つかったらそれをチェックして右上の「Install」ボタンを押すことでプラグインを追加できます。

 

環境変数の設定

次にビルドに使用される環境変数を設定します。

環境変数の設定は「Jenkinsの管理」>「System」の「グローバルプロパティ」で行います。

ここでは検索パスを追加したいので、以下のパラメータを追加してください。

 

項目
キー PATH+EXTRA
/usr/local/bin

 

もし、独自のジョブを作成して利用する検索パスが増える場合は、このPATH+EXTRAに追加してください。

Jenkinsのジョブ作成

Jenkinsはビルドなどの一連の処理を「ジョブ」という単位で管理しています。

さっそくビルド用のジョブを作ってみましょう。

ジョブの作成

ダッシュボードの左から「新規ジョブ作成」ボタンを押してください。

次にジョブ名は「godot-engine-build」として、ジョブの種類は「パイプライン」を選択して「OK」ボタンを押します。

ビルドのパラメータ設定

次の画面でビルドに関する設定を行いますが、ここで設定を間違えても後から何度でも修正できるので安心してください。

まずはビルドに必要なパラメータを追加します。

「ビルドのパラメータ化」をチェックすると各種パラメータを追加できるようになるので、先ほどプラグインを追加した「Extended Choice Parameter」を選択しましょう。

この後が少し複雑ですが、以下のようにパラメータを指定してください。

項目 設定する値 備考
Name BRANCH
Basic Parameter
Typesをチェック
Number of Visible Items 5
Delimiter? , 半角カンマ
Choose Source
for Value 
Groovy Script スクリプトには以下のコードを入力

#!/usr/bin/env groovy 

import hudson.model.* 
import jenkins.model.* 

def listBranches() {     
// target repo url     
def gitURL = "https://github.com/godotengine/godot.git"     
// get branches     
def branches = ("git ls-remote -t -h ${gitURL}").execute()     
return branches.text.readLines().collect { it.split()[1].replaceAll('refs/heads/|refs/tags/', '') }.unique().join(",") 
} 
return listBranches()
Choose Source
for Default Value
Default Value 値は以下の数値を入力

4.1

スクリーンショットにすると、こんな感じになります。

パイプラインのスクリプト記入

次はパイプラインのスクリプトを記入します。

定義は「Pipeline Script」、Scriptには以下のコードを入力してください。

pipeline {
    agent any
 
     stages {
        stage('Enviroment') {
            steps {
                sh 'printenv'
            }
        }
  
        stage('Checkout') {
            steps {
                git branch: "${params.BRANCH}", url: 'https://github.com/godotengine/godot.git'
            }
        }
 
        stage('Build for Intel (x86-64)') {
            steps {
                sh 'scons platform=macos arch=x86_64 --jobs=$(sysctl -n hw.logicalcpu)'
            }
        }
 
        stage('Build fro AppleSillicon (ARM64)') {
            steps {
                sh 'scons platform=macos arch=arm64 --jobs=$(sysctl -n hw.logicalcpu)'
            }
        }
 
        stage('lipo') {
            steps {
                sh 'lipo -create bin/godot.macos.editor.x86_64 bin/godot.macos.editor.arm64 -output bin/godot.macos.editor.universal'
            }
        }
 
        stage('Generate App') {
            steps {
                sh 'cp -r misc/dist/macos_tools.app ./Godot.app'
                sh 'mkdir -p Godot.app/Contents/MacOS'
                sh 'cp bin/godot.macos.editor.universal Godot.app/Contents/MacOS/Godot'
                sh 'chmod +x Godot.app/Contents/MacOS/Godot'
                sh 'zip -q -9 -r Godot.app.zip Godot.app'
            }
        }
 
        stage('Archive') {
            steps {
                archiveArtifacts artifacts: '*.app.zip', followSymlinks: false
            }
        }
    }
}

 

上記のスクリプトはGodotの公式ドキュメントを参考にしています。

人力でターミナルで実行する内容をJenkinsに指定して自動化してもらいましょう。

【TIPS】もっとJenkinsのスクリプトの書き方が知りたい

そんな時にはPipeline Syntaxの項目を選んでみてください。

例えばGitのチェックアウトであれば、ドロップダウンメニューから「git: Git」を選択すると必要な項目を入力するUIが表示されます。ここに必要項目を入力して「Generate Pipeline Script」ボタンを押すと、必要なスクリプトが生成されるのでこれをコピペして利用します。

成果物の保存(archiveArtifacts)や、ワークスペースの削除(clearWs)など色々あるので必要そうなものを試してみてください。

 

ジョブ設定の保存

お疲れ様でした、これで設定は全て終了です!

画面下の「保存」ボタンを押して、設定完了です。

いざビルド

では早速ビルドしてみましょう!

しかし、先ほど作成したジョブの「パラメータ付きビルド」を選択すると何やらメッセージが。。

Groovy Scriptを実行するために実行許可が必要なので「In-Process Script Approval」のリンク先でスクリプトを「Approve」してください。

気を取り直して、先ほどのジョブに戻って「パラメータ付きビルド」を選択するとブランチを選択できるようになっています。

ブランチに「4.1」(ディフォルト値)を選択して「ビルド」ボタンを押せばビルド開始です。

無事に終わればGodot4.1の実行可能なアプリケーションのバイナリ完成です!

 

おわりに

駆け足での説明となりましたが、なんだか難しそうだったJenkinsに少しは親近感が湧きましたか?

Jenkinsはビルドや自動テストなどの目的で使われる場合も多いですが、日常の業務でよく使うバッチなどをUI化してJenkinsから走らせるのも便利そうです。

ぜひローカルマシンで色々試して、みなさんのJenkins使いこなしを披露してみてください!

ココネエンジニアリングでは一緒に働く仲間を募集中です。

ご興味のある方は、ぜひこちらのエンジニア採用サイトをご覧ください。

→ココネエンジニアリング株式会社エンジニアの求人一覧

Tag

Category

Tag