GeekFactory

int128.hatenablog.com

jenkins

AWS CodeBuildとJenkinsの連携

TL;DR AWS CodeBuildとJenkinsを連携させると、これまでJenkins Agentで実行していたビルド処理をAWS CodeBuildに置き換えることができます。以下のメリットがあります。 AWS CodeBuildは無限に*1スケールするので、ビルドキューの待ち行列がなくなる ビルド…

Jenkinsでテストケースを並列実行して所要時間を短縮する

プロダクトが成長するにつれてCIの所要時間が長くなる悩みを抱えている方は多いと思います。本稿では、テストケースの並列実行でスローテストを乗り越える方法を検討します。 CIの所要時間を短縮する戦略 CIの所要時間が長くなる主な原因はテストです。だが…

第10回Jenkins勉強会でエモい話をした

第10回Jenkins勉強会に参加しました。 今回はMultibranch Pipelineの話が多かったですね。GitHub + Jenkinsでチーム開発する時のデファクトですね。 私は本番環境のリリースを自動化したエモい話をしました。 speakerdeck.com LTだったので技術的な話は省き…

Jenkinsfileによるジョブ管理のメリットと実例

ジョブの設定をJenkinsfileで管理し始めてから3か月ぐらい経ったので、知見をまとめてみます。 Jenkinsfileを使うメリット Jenkinsの画面でジョブを管理していると以下のような問題が起きることが多いと思います。 誰かが勝手にJenkinsの設定を変更して動か…

Jenkins MultibranchでPull Requestをビルド

JenkinsのMultibranch Pipelineを利用してPull Requestをビルドしたい場合、ジョブをどのように設定すべきか調べてみました。 Branch SourcesでGitHub *1 を追加すると、以下を選択できます。 Build origin branches Build origin branches also filed as PR…

Jenkinsで自分でビルドしたGitコマンドを使う

Jenkins Agentで自分でビルドしたGitコマンドを使う方法を説明します。新しいバージョンのGitを使いたい場合に有用です。 方針 JenkinsにはGitやAntなどの外部ツールを管理する機能があります。 外部ツールが必要になった場合に自動的にインストールスクリプ…

Jenkins PipelineでGitリポジトリにpushする

JenkinsのジョブでGitリポジトリにブランチやタグをpushしたい場合があります。Jenkinsfileでどのように実装するか調べてみました。 実装例 お急ぎの方は下記のコードを参考にしてください。 def userRemoteConfig = scm.userRemoteConfigs.head() withCrede…

Using env.BRANCH_NAME on Jenkins Multibranch Pipeline

Jenkins Multibranch Pipelineで、ビルドの契機となったブランチに応じて固有の処理を行いたい場合があります。例えば、masterブランチがpushされた場合のみテスト環境にデプロイするといった使い方が考えられます。Travis CIの TRAVIS_BRANCH 、Circle CIの…

スクリプトコンソール上でSlaveでコマンドを実行する

Jenkinsのスクリプトコンソールを利用すると、Slaveで任意のコマンドを実行できます。具体的には、 RemotingDiagnostics.executeGroovy() メソッドを利用してSlaveでGroovyスクリプトを実行します。 import hudson.util.RemotingDiagnostics // Slaveノード…

Multibranch PipelineによるJenkinsとGitBucketの連携

JenkinsのMultibranch Pipelineを利用するとCIで以下ができるようになります。 ビルドの設定を Jenkinsfile に書いてバージョン管理できる。 リポジトリへのpushやPull Requestのマージを契機にジョブを実行できる。 パイプラインでビルドフローを分かりやす…

Jenkins GitHub PluginをGitBucketで利用する

JenkinsとGitBucketの連携にGitHub Pluginが使えるか調べてみました。GitBucket APIはGitHubと互換性があるので、理論上はGitHub Pluginが使えるはずです。 結論 GitHub互換のURL形式でリダイレクトを設定することで、GitHub PluginでもGitBucketのWebhookを…

Jenkins Workflow PluginのDSLを拡張する試み

Jenkins Workflow PluginのDSLを拡張する仕組みを調べたのでメモします. Workflow basic stepsを参考にする Workflow Pluginはbasic stepsという基礎的な命令セットと一緒にリリースされています.basic stepsには下記が含まれます. ArtifactArchiverStep …

Jenkins Workflow Pluginを使ってみる

先日リリースされたJenkins Workflow Plugin 1.0を使ってみました。年明けのJenkinsユーザカンファレンスで詳しい発表があると思うので、今から楽しみですね! Workflow Pluginでできること Workflow Pluginを使うと、Jenkinsジョブの動作をGroovyで記述する…

Jenkinsでジョブの結果を集計する

Jenkinsはジョブを実行するだけでなく、結果を集計する機能にも優れています。Jenkinsには標準でJUnitの結果を集計する機能が付いており、これを応用すると、複数サーバで実行したジョブの結果を分かりやすく表示するといったことが簡単にできます。複数サー…

GitとJenkinsを使ってChefを運用する(続き)

id:mi_kattun / Cookbookを完全にGitで管理するのであれば、サーバにgitやデプロイツールでCookbookをコピーしてchef-solo実行するほうがシンプルな気がするけどChef Serverを使うメリットは何なんだろう。一覧性かな http://b.hatena.ne.jp/entry/d.hatena.…

GitとJenkinsを使ってChefを運用する

Chefはリポジトリをバージョン管理する仕組みを持っていますが、チームでの協調作業を考えるとバージョン管理システムを使う方が運用しやすいと考えます。本稿では、GitとJenkinsを使ってChefを運用するための1つのパターンを考えます。以下があることを前提…

Jenkinsを用いた継続的RPMビルド

RHEL系を使っていて、yumで取得できないバージョンのパッケージを使いたい場合、一般に以下の選択肢があります: 他ディストリビューションのSRPMをビルドしてRPMを生成する。 配布元のtar ballをビルドしてRPMを生成する。 配布元のtar ballを /usr/local …

第6回Jenkins勉強会に参加しました

第6回Jenkins勉強会 - connpass に参加しました。某試験等の影響により遅くなってしまいましたが、まとめを書いてみます。不備がありましたらご連絡頂けますと幸いです。 Gerrit Trigger Pluginを使ってJenkinsをコードレビューシステムGerritのレビューアー…

Windows上のJenkinsでドメイン認証を使う

Active Directory環境にあるJenkinsをドメイン認証(統合Windows認証)でシングルサインオン化する方法について説明します。ここでのシングルサインオンは、ドメインアカウントでWindowsにログオンしていて、WebブラウザでJenkinsを開くと自動的にログイン済…

パフォーマンステスト自動化の取り組み

このところ、Webアプリやバッチのパフォーマンステストを自動化するために四苦八苦してるので書いてみます。パフォーマンステストは泥臭い作業です。毎回似たような感じで待ち時間の長い単調作業と、ボトルネックを解析して実装やミドルウェア設定を見直すよ…

JenkinsとApache Ivyで開発からデプロイまでを管理する

Eclipse, Jenkins, Apache Ivyを使ったプロジェクトにおける開発からデプロイまでの流れを図に描いてみました。図では書き表せないことがありますね。テスト実行時のクラスパスは実行時ライブラリを含むとか、図で描くとカオスになります。GUIツールでビルド…