この記事の要点
- オープンソース化された Swift プロジェクトに、継続的インテグレーション(CI) が導入されました。CI は Jenkins で動作し、Apple プラットフォーム(macOS と iOS シミュレータ)と Linux(Ubuntu 14.04 / 15.10、いずれも x86_64)でビルドとテストを実行します。
- CI はアクティブなブランチのテストに使われるだけでなく、Swift.org からダウンロードできるスナップショットのビルドも担います。
- 特に重要なのが、pull request 内でのテスト実行 が統合された点です。コミットを
masterブランチに反映する前にテストでき、ブランチを不安定にすることなく変更をレビューできます。
何が発表されたのか
Swift プロジェクトに、Jenkins を基盤とする CI システムがロールアウトされたことが発表されました。この CI は次の役割を担います。
- 複数プラットフォームでのビルドとテスト: Apple プラットフォームでは macOS と iOS シミュレータ、Linux では Ubuntu 14.04 と Ubuntu 15.10(いずれも x86_64)でビルドし、テストを実行します。
- スナップショットの生成: アクティブなブランチのテストに加えて、Swift.org からダウンロードできるスナップショットも CI が生成します。
CI は将来的に対応構成を増やしていくことを意図しており、特に他のプラットフォームやアーキテクチャへの移植が一定の規模に達し、Swift 開発コミュニティの支持を得た場合に追加されるとされました。
何に使えるのか
CI は Swift プロジェクトの健全性を監視する強力なツールであると同時に、変更が反映される前のレビューにも使えます。これを支えるのが pull request 内でのテスト実行の統合です。
- 変更が反映される前にテストできるため、
masterブランチを不安定にしません。 - テスト結果は pull request 内にインラインで表示されます。
- ビルドを壊す変更を行うと、その担当者にメールで自動的に通知されます。
使い方(pull request のテスト)
pull request 上で変更がレビューされる際、コミット権限を持つコミュニティのメンバーが CI によるテストを起動できます。テストは macOS・Linux・両方のいずれかを対象に実行できます。
テストの状況は pull request にインラインで投稿され、実行中であることが示されます。”details” のリンクをたどると、実行中のテストのステータスページに直接移動できます。テストが完了すると、結果が pull request 上に更新されて反映され、問題が見つかった場合は失敗の詳細へのリンクが得られます。
(各操作の画面例は原文記事のスクリーンショットを参照してください。)
導入・今後の位置づけ
この記事の時点では、今後の対応としてパフォーマンステストの実行をサポートする予定であることが示され、テスト対象構成の拡充に向けたコミュニティの参加も呼びかけられました。
Swift がオープンソース化された直後のこの CI 導入は、複数プラットフォームにまたがる開発の品質をコミュニティ全体で担保していくための基盤づくりでした。pull request ごとに自動テストを走らせる仕組みは、その後の Swift の開発体制を支える土台となっています。