Jenkinsを使ったiOSアプリビルド自動化9 トリガとセキュリティ


流れ的に説明を省略してしまった箇所がいくつかあるので、ここでまとめて触れておきます。

Jenkinsのセキュリティ設定

Jenkinsはブラウザ経由で操作します。標準の状態では、ブラウザでそのマシンにアクセスできる人であれば、誰でも自由に設定を変更したりビルドを実行できてしまいます。実際にJenkinsの運用を始める前にセキュリティの設定を変更しておきましょう。

Jenkinsの管理 – システムの設定から「セキュリティを有効化」にチェックを入れると、アクセス制限をかける事ができるようになります。ユーザについてはJenkins上で作成・管理することもできますが、Macの場合は「Unixユーザ/グループ データベース」を選択すればそのMac上のユーザデーターベースを使えて便利です。

権限管理の欄でユーザごとの権限を設定できます。気をつけなければいけないのはデフォルトの権限設定で、どうやらJenkinsではデフォルトでは匿名(ログインしていない)ユーザでも「閲覧」は可能になっているようです。「ログイン済みのユーザに許可」等を選ぶと、匿名ユーザはジョブを操作することはできなくなりますが、ジョブ自体を閲覧することが可能になっています。

匿名ユーザに閲覧されないようにするには、「行列による権限設定」を選び匿名ユーザはReadを含むすべての権限を持たないようにします。なお、自分のユーザ名を追加して管理権限(Administer)をセットするのを忘れないようにしましょう。

ログインしていない状態でJenkinsにアクセスしてみて、ジョブを表示できないことを確認できたらOKです。

トリガ

ジョブを作成する過程で動作確認をするには、ビルド実行をクリックしてきました。Jenkinsでは手動で「ビルド実行」を押した場合以外にも、様々なタイミングで自動的にビルドを実行させるようにできます。

定期的に実行

定期的にビルドを行います。スケジュールはCRONと同じ方式で指定できます。ソースコードに変更がない場合でも、定期的にビルドが実行されます。ビルドはライブラリや環境の変化の影響を受けることもあるので、定期的にビルドをしていればその影響を早く検知できます。また、テストの場合も時間帯あるいは外部環境によって結果がかわってくることがあるため、定期的に実行するのが良いでしょう。CIの基本ですね。

SCMをポーリング

ソースコードに変更があったときだけジョブを実行するようにするには、「定期的に実行」ではなく「SCMをポーリング」を指定します。スケジュールの指定方法はこちらもCRONと一緒です。

時間がかかるようなジョブは実行しすぎるとビルドキューが詰まってほかのジョブを遅延させてしまうので、必要に応じてSCMをポーリングを使うか、併用すると良いです。(SCMレポジトリを一時間置きにチェックして変更があったらビルド、変更に関係なく毎日0:00には必ずビルド等)

当然ながらポーリングの間隔を短くセットしてしまうとレポジトリの負荷が大きくなるので、注意が必要です。

hooksを利用する

SCMポーリングよりさらに効率のよいトリガとして、SCMのhooksを使う方法があります。hooksを使うと、ソースコードがレポジトリにpushされたタイミングでビルドを実行させることができるので、ポーリングよりも効率がよくなります。hooksの設定方法についてはSCMによって方法が異なりますが、GitHubを使っている場合はGitHub Pluginなどを使うと簡単にhooksを設定できます。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です