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 のローカル キャッシュが最新のスナップショットで更新されます。

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 スタックの更新

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

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

  • : これらのスタックは、今後のバージョンと変更をプレビューするためのものです。これらは定期的にインプレースで更新され、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 ベータなど) にアクセスします。

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

Xcode バージョンの固定

新しい Xcode バージョンがリリースされると、必ず 2 営業日以内にユーザーが利用できるようにします。

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

すべての Xcode スタックは、依存関係マネージャー キャッシュの更新 (brew、cocoapods、および bitrise CLI) を毎週受け取ります。これらのキャッシュの更新では、プリインストールされたツールのバージョンは変更されず、依存関係のインストールを高速化するためにパッケージ マネージャーのキャッシュのみが更新されます。

Xcode スタックの状態遷移

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

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

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

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

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

  3. Xcode メジャー ベータ バージョンがリリースされました。このベータ Xcode バージョンは、以前の Edge スタックを置き換えて Edge スタックとして利用できるようになります。以前の Edge スタックでのツール バージョンの変更は、Stable スタックに適用されます。

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

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

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

  1. Xcode 14 Edge スタックは、Xcode 14.4 の GA バージョンで更新されます。

  2. Xcode 14.4 が安定版スタックとして利用可能になります。

  3. 既存のすべての Xcode 14 安定版スタックは、最新の Edge スタックと同等のもので上書きされます。

  4. 翌週、Stable スタックは通常の依存関係キャッシュの更新のみを受信しますが、Edge スタックはツールの更新も受信します。

transition-stack.png

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

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

  1. 新しい Xcode 15.0 Edge スタックが作成されます。

  2. 既存の Xcode 14 Stable スタックは削除され、Xcode 14 Edge スタックが移行して代わりになります。

  3. Xcode 13 スタックは凍結され、更新を受信しなくなります。

transition-stack-2.png

例3 Xcode メジャー GA バージョンのリリース

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

  1. Xcode 15.0 Edge スタックは、Xcode 15 の GA バージョンで更新されます。

  2. 新しい Xcode 15.0 安定版スタックが利用可能になります。

transition-stack-3.png

凍結状態と削除状態への移行

スタックは、「安定状態から凍結状態、凍結状態から削除状態に移行します」で概説されています。 スタックの非推奨と削除のポリシー

macOS リリース

新しいメジャー macOS バージョンがリリースされると、以前のバージョンの macOS 上で実行されている最新のメジャー Xcode バージョン スタックに削除のフラグが立てられます。

実際に削除される日は、新しい macOS バージョンでのビルドのパフォーマンス、安定性、内部テストの結果などの要因によって異なります。これらのスタックの削除については、少なくとも 4 週間前に通知されます。

例4 macOS 13 ベンチュラ

macOS 13 Ventura がリリースされたとき、Xcode 14.0 および 14.1 スタックが macOS 12 Monterey と macOS 13 Ventura の両方で利用できるようになりました。

Xcode 14.0 および 14.1 Monterey スタックには削除のフラグが立てられ、このバージョンではビルドのハングの問題が解決されたため、顧客はワークフローを Ventura ベースのスタックに移行するよう求められました。


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

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

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

Xcode スタックで利用可能なシミュレーター ランタイムに関するポリシーは、以下に基づいています。 Apple の最小要件とサポートされる SDK

Bitrise スタックにプリインストールされたツール

スタック上のシミュレーター ランタイムなど、プリインストールされているツールのリストに関心がある場合は、利用可能なすべてのスタックを見つけることができます。 GitHub のシステム レポート.

Xcode のメジャー バージョンごとに次のものが提供されます。

  1. 最新のメジャー シミュレータ バージョンのすべてのマイナー バージョン。

  2. 以前のメジャー シミュレータ バージョンの最新のマイナー バージョン。

  3. 最後から 2 番目のメジャー シミュレーター バージョンの最新のマイナー バージョン。

例1 Bitrise スタックで利用可能な iOS シミュレーター

例を見てみましょう:

Xcode 12.5 には、iOS 10.3.1-14.5 シミュレーター ランタイムで動作するための最小要件があります。 14.5 シミュレーター ランタイムは最新バージョンであるため、すべてのスタックで利用できるようになっています。この場合、14.5 シミュレーターは、現在アクティブなすべての Xcode スタックと互換性があるため、それらすべてのスタックで使用できます。

Xcode 13.0 には、iOS 10.3.1-15.0 シミュレーター ランタイムで動作するための最小要件があります。 15.0 シミュレーター ランタイムは最新バージョンであるため、iOS 14.5 と同様に、互換性のあるすべてのスタック (Xcode 12.5 を除くすべて) で利用できるようにしています。

Xcode 14.2 である最後の Xcode バージョンまで、すべての Xcode バージョンを調べ、サポートされている最新のシミュレーター ランタイムを引き続き使用します。完了したら、最も古いメジャー バージョンの前に、iOS シミュレーター ランタイムの最新バージョンも取得します。この場合、最も古いメジャー バージョンは iOS 14.5 であり、それより前の最新の iOS シミュレーターは iOS 13.7 であるため、そのバージョンもすべてのスタックで使用できます。

この表は、macOS スタックのどの Xcode バージョンでどの iOS シミュレーター ランタイムを使用できるかを示しています。

表1 iOS で利用可能なシミュレーター ランタイム (X = 利用可能)

シミュレーター

Xコード14.2

クロスコード 14.1

Xcode 14.0.1

Xcode 13.4.1

Xcode 13.3.1

Xcode 13.2.1

Xコード13.1

クロスコード 13.0

Xコード12.5

iOS 16.2

X

iOS 16.1

X

iOS16.0

X

X

X

iOS 15.5

X

X

X

X

iOS 15.4

X

X

X

X

X

iOS 15.2

X

X

X

X

X

X

iOS15.0

X

X

X

X

X

X

X

X

iOS14.5

X

X

X

X

X

X

X

X

X

iOS14.4

iOS 14.3

iOS 14.2

iOS 14.1

iOS14.0

iOS 13.7

X

X

X

X

X

X

X

X

X

iOS 13.6

iOS13.5

iOS13.4

iOS13.2

iOS 13.1

iOS13.0



AndroidとDockerのスタック

Android / Linuxスタックは docker、複数の個別のDockerイメージを使用して、互いの上に構築されます。これらのDockerイメージはで見つけることができます GitHub

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

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

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

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

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

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

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

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

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

ワークフローエディター

ビットライズ.yml

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

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

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

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

    • クリック edit-webhook.svg ワークフロー名の横にある ボタンをクリックして、ワークフロー エディターでワークフローを開きます。

  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