Skip to main content

スタック更新ポリシー

概要

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

Bitrise スタックには、ワークフローをシンプルにし、ビルドを高速かつ効率的に行うための重要なツールが多数プリインストールされています。これらのツールは継続的に変更されます。古いバージョンは非推奨となりサポートされなくなりますが、新しい機能と重大な変更を備えた新しいバージョンがリリースされます。これらのツールを使用して基盤となるスタックがいつどのように更新されるかについては、人によってさまざまな期待があります。安定性を最大化するために可能な限り変更を最小限に抑えることを好むユーザーもいますが、最新リリースをできるだけ早く採用したいと考えるユーザーもいます。

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

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

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

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

  • Xcode スタックでは、Homebrew と Cocoapods のローカル キャッシュが最新のスナップショットで更新されます。

  • Platform changes: Changes to major components, like Xcode on macOS stacks, OS versions, Android SDK.

Using the previous version of a stack

Updating a stack to a new version might cause problems with some builds. To help ease the transition, you can use the previous version of a stack for 2-3 days after an update: 以前のバージョンのスタックの使用.

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

Xcode スタックの更新

You can select macOS stacks based on the Xcode version you need. Under the hood, one VM image contains multiple Xcode versions installed and your requested Xcode version is activated at runtime before your Workflow starts.

As a rule of thumb, Xcode minor versions of the same major version share the same VM image, but there might be exceptions based on compatibility issues and other considerations.

Versioning

When talking about versions, we use semver terminology, regardless of how the various tools define their versions.

スタックにはライフサイクルがあり、エッジ、安定、凍結、削除という 4 つの異なる状態があります。

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

  • 安定: これらのスタックは、Xcode パッチ バージョン、依存関係マネージャー キャッシュの更新、および重要なセキュリティ修正によってのみ更新されます。新しい Edge スタック (仮想の Xcode 14.4 ベータ版) がリリースされ、現在の Edge スタックのツール バージョンが新しいバージョンになると、安定した状態にある特定のスタック (Xcode 14.3 など) が依然としてメジャー アップデートを受け取る可能性があることに注意してください。安定。最大限の信頼性と再現可能なビルドを実現するには、スタックのデフォルトに依存するのではなく (たとえば、Ruby バージョンを固定する) 代わりに、正確なツール バージョンをワークフローに固定することをお勧めします。

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

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

依存関係マネージャーのキャッシュ更新について

  • Homebrew and CocoaPods dependency mirrors are updated frequently (usually each week) on all Xcode stacks.

  • These mirror updates do not change the preinstalled tool versions, only updating the package manager caches for faster dependency installs.

  • Edge stacks also receive package upgrades, meaning that Homebrew packages are updated to their latest versions.

Xcode スタックの状態遷移

スタックのライフサイクル中に、スタックは状態間を遷移します。スタックは、エッジから安定、安定から凍結、凍結から削除に移行します。移行は、新しい Xcode および macOS リリースによってトリガーされます。スタックのセットが Edge から Stable に移行すると、最初にプレビューとして Edge スタックに導入されたツールの変更も行われます。

  • Edge to Stable.

  • Stable to Frozen.

  • Frozen to Removed.

Edge stack updates

Edge stacks provide a way to preview and test upcoming changes. Xcode Beta versions become available as Edge stacks while final Xcode releases become available as new Stable stacks. Xcode Edge stacks change when:

  1. The first Beta version of a new major Xcode version is released.

  2. The first Beta version of a new minor Xcode version is released.

  3. A new version of an Xcode Beta version is released.

When an Xcode minor version is released as a beta, it becomes available as an Edge stack. Other Edge stacks do not transition to Stable until the beta version in question is released as a GA version.

例1 First Beta version of a new major Xcode version

In this example:

  • The current latest Xcode version is 15.3.

  • A new Beta version of a new major Xcode version is released: Xcode 16.0 Beta 1.

stack-updates-edge.png

Once the new Beta version is released, we update our stacks:

  • The new Xcode release becomes available on Bitrise as an Edge stack. In our example, Xcode 16.0 Beta 1 becomes available as the Edge stack.

  • Current Edge stacks are phased out, and users are automatically migrated to the new Edge stack. This happens a few days after the new Xcode release. In this example, this means phasing out Xcode 15.x Edge stacks.

  • Stable stacks are not affected at this point.


例2 First Beta version of a new minor Xcode version

In this example:

  • The current latest Xcode version is 15.2.

  • A new Beta version of a new minor Xcode version is released: Xcode 15.3 Beta 1.

stack-updates-edge-minor.png

Once the new Beta version is released, we update our stacks:

  • The new Xcode release becomes available as an Edge stack. In this example, Xcode 15.3 Beta 1 becomes available as an Edge stack.

  • Stable stacks are not affected at this point.


例3 A new Beta version of an Xcode Beta version

In this example:

  • The current latest Xcode version is 16.0 Beta 1.

  • A new Beta version is released: 16.0 Beta 2.

stack-updates-edge-beta.png

Once the new Beta version is released, we update our stacks:

  • Xcode 16.0 Beta 2 replaces 16.0 Beta 1 on the Xcode 16.0 Edge stack.

  • Stable stacks are not affected at this point.


エッジ状態から安定状態への移行

Edge スタックの目的は、次の移行に含まれる今後の変更のプレビューを提供することです。エッジ スタックは、次の場合に安定状態に移行します。

Existing Stable stacks change when:

  1. Xcode のマイナー GA (一般公開) バージョンがリリースされました。この Xcode バージョンは安定版スタックとして利用可能になり、エッジ スタック上のツール バージョンの変更が安定版スタックに適用されます。

  2. Xcode のメジャー GA バージョンがリリースされました。この Xcode は安定版スタックとして利用可能になり、エッジ スタックでのツールの変更は安定版スタックに適用されます。

例4 Xcode マイナー GA バージョン リリース

Xcode 14.4 GA がリリースされると:

  • The current latest Xcode version is 15.3.0.

  • A new major Xcode version is released: Xcode 16.0.

stack-updates-stable-major.png

When the new major version is released, we update our stacks:

  • New Stable stack: Xcode 16.0 becomes available on Bitrise as a new Stable stack.

  • Existing Stable stacks: new tool versions and other potentially breaking changes land on all Stable stacks.

  • Oldest Stable stacks become Frozen. In this example, Xcode 14.x stacks become Frozen, but still available for building. Tool versions are not changing on these stacks: their latest state is frozen.

  • Old Frozen stacks are removed: in this example, Xcode 13.x stacks are removed. The remaining users are migrated to newer stacks.

Changes to previous Stable stacks

We update previous Stable stacks when a new Xcode version is released for a number of reasons:

Most preinstalled runtimes and tools eventually reach their end-of-life according to support policy, after which they no longer receive bugfixes and security patches. We also need to periodically upgrade the default version of tools if the majority of our users move on to a newer version. There are also some breaking changes we need to make to enable new features and user requests.

While breaking changes are frustrating, we think that doing them only once a year on a predictable schedule (tied to the major Xcode release) is a good compromise. We are also trying to make the switch smoother by:

  • Offering Edge stacks to preview the changes. While one Edge stack is always tied to the latest Xcode Beta, we also offer Edge stacks for the last few stable Xcodes, so you can try the tooling changes without doing an Xcode upgrade in your project.

  • Communicating the changes in advance on all usual communication channels. For example, in a blog post.

  • Offering a temporary rollback option after each stack update.


例5 Xcodeメジャーベータ版リリース

Xcode 15.0 Beta 1 がリリースされると:

  • The current latest Xcode version is Xcode 15.2.

  • A new minor Xcode version is released: Xcode 15.3.

When the new minor version is released, we update our stacks:

  • New Stable stack: Xcode 15.3 becomes available on Bitrise as a Stable stack.

  • Xcode 15.3 Edge stack is updated with the final Xcode version.

stack-updates-stable-xcode-minor.png

macOS リリース

The exact macOS version is always highlighted on the stack report pages.

When a new major macOS version is released, we upgrade the Edge stacks to the new OS after an internal testing period.

As a general rule, we don’t upgrade macOS on Stable stacks to avoid unexpected build failures. We wait until a future Xcode release starts requiring the new OS version (for example, Xcode 15.0, 15.1 and 15.2 are compatible with macOS Ventura, but 15.3 requires Sonoma). Once this happens, the Stable stack variant of this Xcode version is based on the new major OS version, while older Stable Xcode stacks remain on the older OS version.

While the new major OS is not available as a Stable stack, we recommend testing it on one of the Edge stacks. We are looking for your feedback, including edge cases and performance regressions.

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

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

Xcode スタックで利用可能なシミュレーター ランタイム

You can find the list of preinstalled tools, including simulator runtimes on our stacks on the stack reports pages.

You can expect the following simulator runtimes to be installed:

  • The matching runtime versions of a given Xcode version: these are the iOS, watchOS, tvOS and visionOS runtime versions that Xcode prompts you to download at first launch.

  • For iOS, we also install two additional versions: the two previous major versions, of which the latest minor version is installed.

  • For watchOS, we also install the previous major release’s latest minor version.

For example, when selecting the Xcode 15.0 stack, you can expect:

  • iOS 17.0: the matching runtime of this Xcode.

  • iOS 16.4: the latest minor release of the previous major iOS version.

  • iOS 15.5: the latest minor release of the second-previous major iOS version.

  • watchOS 10.0: the matching runtime of this Xcode.

  • watchOS 9.4: the latest minor release of the previous major version.

  • tvOS 17.0: the matching runtime of this Xcode.

  • visionOS 1.0: the matching runtime of this Xcode

AndroidとDockerのスタック

Linux stacks on Bitrise are based on Ubuntu LTS releases. Each Bitrise stack is based on one Ubuntu LTS version and never gets upgraded to another. Instead, we release new stacks and sunset older ones over time.

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

専用のビルド環境では使用できません

この機能は、専用のビルド環境を備えたエンタープライズ プランでは利用できません。これは、これらのプランではスタック更新のロールアウトをユーザーが制御するためです。

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

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

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

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

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

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

ワークフローエディター

ビットライズ.yml

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

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

    opening-workflow-editor.png
  3. [ワークフローとパイプライン] ページでは、次のことができます。

    • クリック bitrise.yml を編集する にアクセスするためのボタン ビットライズ.yml ワークフローエディターのタブ。

    • アプリのワークフローのリストからワークフローを選択します。

  4. に行きます スタックとマシン タブ。

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

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

    これにより、 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

Changelog

March 2024

New:

  • Define what happens when an Edge stack is phased out in favor of a newer edge stack.

Removed:

  • When a new Xcode Edge stack is released, it no longer brings tooling changes to the Stable stacks.

Changed:

  • New, simpler simulator runtime policy. The same number of older iOS major versions are installed, but only the latest minor version is installed for each.