Skip to main content

スタック更新ポリシー

概要

Bitriseスタックは毎週更新されます。一部のスタックは完全に再構築されますが、他のスタックでは特定のキャッシュアーカイブのみが更新されます。

Bitrise スタックには、モバイル開発に最も重要なツールがプリインストールされており、すぐに使用できます。私たちの目標は、ワークフローをシンプルにし、ビルドを高速かつ効率的にすることです。これらのツールは継続的に変更されます。古いバージョンは非推奨となり、サポートされなくなりますが、新しいバージョンが新しい機能と重大な変更を加えてリリースされます。

スタック の上 ビットライズアイオ 定期的に更新されます。更新には、次の種類の変更が 1 つ以上含まれています。

  • ツールのアップグレード: すでにインストールされているツールが最新バージョンにアップグレードされます (たとえば、git CLI は 2.9.1 から 2.9.5 にアップグレードされます)。

  • ツールの追加: 新しいツールが追加されます (たとえば、新しい Android バージョンがリリースされると、最新の Android エミュレーター システム イメージがプリインストールされます)。

  • ツールの削除: ツールのバージョンは、サポート終了となりセキュリティ上のリスクがある場合は削除され、別のバージョンのツールがデフォルトになります (たとえば、Ruby 2.7 は削除され、Ruby 3.0 が新しいデフォルトになります)。

  • プラットフォームの変更: macOS スタック上の Xcode、OS バージョン、Android SDK などの主要コンポーネントの変更。

スタックの以前のバージョンを使用する

スタックを新しいバージョンに更新すると、一部のビルドで問題が発生する可能性があります。移行を容易にするために、更新後 2 ~ 3 日間はスタックの以前のバージョンを使用できます。 以前のバージョンのスタックの使用

さまざまなスタックで使用できるツールの詳細については、関連するガイドをご覧ください。 Bitriseスタックにプレインストールされたツール

Xcode スタックの更新

必要な Xcode バージョンに基づいて macOS スタックを選択できます。内部的には、1 つの VM イメージに複数の Xcode バージョンがインストールされており、要求された Xcode バージョンはワークフローが開始する前に実行時にアクティブ化されます。

原則として、同じメジャー バージョンの Xcode マイナー バージョンは同じ VM イメージを共有しますが、互換性の問題やその他の考慮事項に基づいて例外が発生する可能性があります。

バージョン管理

バージョンについて話すときは、 セムバー さまざまなツールがバージョンをどのように定義するかに関係なく、用語は同じです。

スタックにはライフサイクルがあり、Edge、Stable、Frozen、Removed の 4 つの状態があります。

stack-lifecycle.png
  • : これらのスタックは、今後のバージョンや変更をプレビューするためのものです。これらは定期的にインプレース更新され、Xcode の最新の安定リリース、Xcode の最新のベータリリース (利用可能な場合)、およびプリインストールされたツールの最新の安定バージョンが含まれます。定期的な週次更新では、ツールの追加や削除、OS のアップグレードが行われる可能性があります。週次更新の下位互換性は、Edge スタックでは保証されません。Edge スタックでビルドを実行して、今後のツール バージョンの変更 (Ruby 3.2 がデフォルトになるなど) をプレビューし、最新のプレリリース Xcode (Xcode 15 ベータ版など) にアクセスします。

  • 安定した: これらのスタックは、Xcode パッチ バージョンと重要なセキュリティ修正でのみ更新されます。信頼性と再現可能なビルドを最大限に高めるには、スタックのデフォルト (Ruby バージョンの固定など) に頼るのではなく、ワークフローで正確なツール バージョンを固定することをお勧めします。

  • : これらのスタックは、今後のバージョンと変更をプレビューするためのものです。これらは定期的にインプレースで更新され、Xcode の最新の安定版リリース、Xcode の最新ベータ版 (利用可能な場合)、プリインストールされたツールの最新の安定版、および依存関係マネージャーのキャッシュ更新が含まれます。毎週の定期的な更新により、ツールの追加や削除、OS のアップグレードが可能になります。毎週の更新に対する下位互換性は、Edge スタックでは保証されません。 Edge スタックでビルドを実行して、今後のツール バージョンの変更 (デフォルトになる Ruby 3.2 など) をプレビューし、最新のプレリリース Xcode (Xcode 15 ベータなど) にアクセスします。

  • 削除されました: これらのスタックは使用できなくなりました。

Xcode スタックの状態遷移

スタックのライフサイクル中、新しい Xcode および macOS リリースによってトリガーされると、スタックは状態間を遷移します。スタックは次のように遷移します。

  • エッジから安定へ。

  • 安定から凍結まで。

  • 凍結から削除へ。

エッジスタックの更新

Edge スタックは、今後の変更をプレビューしてテストする方法を提供します。Xcode ベータ版は Edge スタックとして利用可能になり、最終的な Xcode リリースは新しい安定版スタックとして利用可能になります。Xcode Edge スタックは次の場合に変更されます。

  1. 新しいメジャー Xcode バージョンの最初のベータ バージョンがリリースされました。

  2. 新しいマイナー Xcode バージョンの最初のベータ バージョンがリリースされました。

  3. Xcode ベータ版の新しいバージョンがリリースされました。

Xcode のマイナー バージョンがベータ版としてリリースされると、Edge スタックとして利用できるようになります。その他の Edge スタックは、該当するベータ版が GA 版としてリリースされるまで、安定版に移行しません。

例1 新しいメジャー Xcode バージョンの最初のベータ版

この例では、

  • 現在の最新の Xcode バージョンは 15.3 です。

  • 新しいメジャー Xcode バージョンのベータ版がリリースされました: Xcode 16.0 Beta 1。

stack-updates-edge.png

新しいベータ版がリリースされると、スタックが更新されます。

  • 新しい Xcode リリースは、Edge スタックとして Bitrise で利用できるようになります。この例では、Xcode 16.0 Beta 1 が Edge スタックとして利用できるようになります。

  • 現在の Edge スタックは段階的に廃止され、ユーザーは新しい Edge スタックに自動的に移行されます。これは、新しい Xcode のリリースから数日後に行われます。この例では、Xcode 15.x Edge スタックが段階的に廃止されることを意味します。

  • この時点では安定したスタックは影響を受けません。


例2 新しいマイナー Xcode バージョンの最初のベータ版

この例では、

  • 現在の最新の Xcode バージョンは 15.2 です。

  • 新しいマイナー Xcode バージョンのベータ版がリリースされました: Xcode 15.3 Beta 1。

stack-updates-edge-minor.png

新しいベータ版がリリースされると、スタックが更新されます。

  • 新しい Xcode リリースは Edge スタックとして利用できるようになります。この例では、Xcode 15.3 Beta 1 が Edge スタックとして利用できるようになります。

  • この時点では安定したスタックは影響を受けません。


例3 Xcodeベータ版の新しいベータ版

この例では、

  • 現在の最新の Xcode バージョンは 16.0 Beta 1 です。

  • 新しいベータ バージョン 16.0 Beta 2 がリリースされました。

stack-updates-edge-beta.png

新しいベータ版がリリースされると、スタックが更新されます。

  • Xcode 16.0 Beta 2 は、Xcode 16.0 Edge スタック上の 16.0 Beta 1 に代わるものです。

  • この時点では安定したスタックは影響を受けません。


安定したスタックの更新

安定スタックは、予期しない破壊的な変更を回避するため、エッジスタックよりも頻繁に変更されません。

既存の安定スタックは、次の場合に変更されます。

  1. 新しいメジャー Xcode バージョンがリリースされました。

  2. 新しいマイナー Xcode バージョンがリリースされました。

例4 新しいメジャーXcodeバージョン

この例では、

  • 現在の最新の Xcode バージョンは 15.3.0 です。

  • 新しいメジャー Xcode バージョン Xcode 16.0 がリリースされました。

stack-updates-stable-major.png

新しいメジャー バージョンがリリースされると、スタックが更新されます。

  • 新しい安定スタック: Xcode 16.0 が新しい安定スタックとして Bitrise で利用可能になります。

  • 最も古い安定スタックは凍結されます。この例では、Xcode 14.x スタックは凍結されますが、ビルドには引き続き使用できます。これらのスタックではツールのバージョンは変更されません。最新の状態が凍結されます。

  • 古い凍結スタックは削除されます。この例では、Xcode 13.x スタックが削除されます。残りのユーザーは新しいスタックに移行されます。


例5 新しいマイナーXcodeバージョン

この例では、

  • 現在の最新の Xcode バージョンは Xcode 15.2 です。

  • 新しいマイナー Xcode バージョンがリリースされました: Xcode 15.3。

新しいマイナー バージョンがリリースされると、スタックが更新されます。

  • 新しい安定スタック: Xcode 15.3 が安定スタックとして Bitrise で利用可能になります。

  • Xcode 15.3 Edge スタックが最終 Xcode バージョンに更新されました。

stack-updates-stable-xcode-minor.png

macOS リリース

正確なmacOSバージョンは常に スタックレポートページ

新しいメジャー macOS バージョンがリリースされると、社内テスト期間を経て Edge スタックを新しい OS にアップグレードします。

原則として、予期しないビルドの失敗を避けるため、安定スタック上の macOS はアップグレードしません。将来の Xcode リリースで新しい OS バージョンが必要になるまで待機します (たとえば、Xcode 15.0、15.1、15.2 は macOS Ventura と互換性がありますが、15.3 では Sonoma が必要です)。これが発生すると、この Xcode バージョンの安定スタック バリアントは新しいメジャー OS バージョンに基づきますが、古い安定 Xcode スタックは古い OS バージョンのままになります。

新しい主要 OS は安定スタックとして利用できませんが、エッジ スタックの 1 つでテストすることをお勧めします。エッジ ケースやパフォーマンスの低下など、皆様からのフィードバックをお待ちしています。

状態遷移をトリガーしないイベント

すべての Xcode リリースが移行をトリガーするわけではありません。たとえば、Xcode ベータ マイナー バージョン リリースは、Edge から Stable スタックへの移行をトリガーしません。新しいベータ バージョンは単に古いベータ バージョンを置き換えるだけです。 Xcode パッチ リリースは、Edge から Stable へのスタック移行をトリガーしません。代わりに、安定版スタックは新しいパッチ バージョンで更新されます。

Xcode スタック上のシミュレータ ランタイム

スタックにプリインストールされているツールのリスト(シミュレーターランタイムを含む)は、 スタックレポートページ

次のシミュレータ ランタイムがインストールされることが予想されます。

  • 特定の Xcode バージョンに一致するランタイム バージョン: これらは、Xcode が最初の起動時にダウンロードするように要求する iOS、watchOS、tvOS、および visionOS ランタイム バージョンです。

  • iOS の場合は、最新のマイナー バージョンがインストールされる前の 2 つのメジャー バージョンの 2 つの追加バージョンもインストールされます。

  • watchOS の場合、以前のメジャーリリースの最新のマイナーバージョンもインストールされます。

たとえば、Xcode 15.0 スタックを選択すると、次のことが期待できます。

  • iOS 17.0: この Xcode に一致するランタイム。

  • iOS 16.4: 以前のメジャー iOS バージョンの最新のマイナー リリース。

  • iOS 15.5: 2 つ前のメジャー iOS バージョンの最新のマイナー リリース。

  • watchOS 10.0: この Xcode に一致するランタイム。

  • watchOS 9.4: 以前のメジャーバージョンの最新のマイナーリリース。

  • tvOS 17.0: この Xcode に一致するランタイム。

  • visionOS 1.0: このXcodeの対応するランタイム

Linuxスタックのアップデート

BitriseのLinuxスタックは以下に基づいています Ubuntu LTS リリース各 Bitrise スタックは 1 つの Ubuntu LTS バージョンに基づいており、別のバージョンにアップグレードされることはありません。代わりに、時間の経過とともに新しいスタックをリリースし、古いスタックを廃止します。

以前のバージョンのスタックの使用

ユーザーのリクエストや外部ツールの変更に基づいて、Bitrise スタックを定期的に更新します。これらの更新により、重大な変更が発生する可能性がありますが、それを回避するよう努めています。

そのような場合に備えて、新しいバージョンのリリース後、数日間、特定のスタックの以前のバージョンを使用する一時的なオプションを提供します。

  • これは一時的なメカニズムのみを目的としています。インフラストラクチャ上の理由により、以前のリリースを永久に利用可能な状態にしておくことができません。通常、以前のバージョンはリリースが成功してから数日後に削除されます。

  • 以前のバージョンが利用できなくなると、この機能が有効になっている場合でも、新しいビルドは最新バージョンで実行されます。

  • 特定の時点で特定のスタックで以前のバージョンが利用できない場合、スイッチは非アクティブになり、機能をオンにすることはできません。トリガーされたビルドはすべて、スタックの現在のバージョンで実行されます。

以前のバージョンのスタックを使用するには:

ワークフローエディター

ビットライズ.yml

  1. でアプリを開きます ビットライズ

  2. クリック ワークフロー メインページのボタン。

    opening-workflow-editor.png
  3. に行きます スタックとマシン タブ。

  4. 構成するスタックを見つけます。デフォルトのスタックまたはワークフロー固有のスタックのいずれかです。

  5. 選択したスタックのマシン タイプの下で、 以前のバージョンを使用する スイッチ。

    これにより、 bitrise.yml ファイル: 以前のバージョンのスタックを meta ブロック。

    prev-vers.png

保管する場合は、 bitrise.yml 自分のリポジトリ内のファイル、正確なロールバック バージョンを指定する必要があります。 meta 物体。トグルは Bitrise に保存されている構成ファイルのみを変更できるため、ワークフロー エディターのトグルを使用して機能をオンにすることはできません。 bitrise.yml リポジトリ内にあります。

利用できないバージョン

指定したバージョンが利用できない場合、ワークフロー エディターに警告が表示されます。以前のスタック バージョンが使用できなくなった後にトリガーされたビルドは、スタックの現在の安定バージョンで実行されます。

  1. を見つける meta あなたの中のブロック bitrise.yml ファイル。

  2. 追加 stack_rollback_version 指定されたバージョン文字列を含むフィールド。

    以前のバージョン番号を調べる

    以前のバージョン文字列を確認するには、古いビルドを開いて、 詳細とアドオン タブをクリックして、 スタックイメージのバージョン 分野。

    meta:
      stack: osx-xcode-15.0.x
      machine_type_id: g2-m1.8core
      stack_rollback_version: 2-16-2

変更履歴

2024年7月

削除されました:

依存関係マネージャーのキャッシュ更新について言及しています。Cocoapods と Homebrew はどちらも、レジストリ Git リポジトリ全体をクローンするよりも優れたメカニズムを備えており、これらの新しいメカニズム (Cocoapods CDN、Homebrew API) がスタックで有効になっています。スタックが更新されると、ディスク上のリポジトリが最新になることが期待できますが、リリースする他の変更がない限り、安定スタックは厳密に毎週更新されなくなりました。

かわった:

安定した macOS スタックへの破壊的変更 (新しい Xcode メジャー バージョンがリリースされる年に 1 回) は、既存の古い安定したスタックには適用されなくなり、新しくリリースされた安定したスタックにのみ適用されます。たとえば、Xcode 16.0 がリリースされると、計画されている破壊的変更は Xcode 16.0 の安定したスタックにのみ適用されます。Xcode 14.x および 15.x の安定したスタックには破壊的変更は適用されません。

2024年3月

新しい:

エッジ スタックが段階的に廃止され、新しいエッジ スタックに置き換えられた場合に何が起こるかを定義します。

削除されました:

新しい Xcode Edge スタックがリリースされても、安定スタックにツールの変更は行われなくなります。

かわった:

新しい、よりシンプルなシミュレーターのランタイム ポリシー。同じ数の古い iOS メジャー バージョンがインストールされますが、それぞれに最新のマイナー バージョンのみがインストールされます。