Dockerでローカルにビルドを実行する
DockerでBitriseビルドを自分のマシンで実行できます。Docker、Bitrise CLI、およびBitriseDockerイメージが必要です。
Docker Hub rate limit
From July 15, 2024, rate limiting will apply on downloads from Docker Hub. If you pull a Docker image from Docker Hub without authentication during a Bitrise build on our Linux machines, you may run into issues because of rate limiting.
Bitrise is mirroring some of the popular public docker images, but to avoid these potential issues with rate limiting, you can either:
-
Authenticate your Docker image pulling requests towards Docker Hub. For the details and Docker's full policy, refer to Docker Hub rate limit.
-
Switch to another Docker registry to store your images.
Linuxスタックビルドをローカルで実行できるようにするには、次のものが必要です。 docker:
-
Linuxの場合は、 公式インストール手順。
-
Macの場合、Docker forMacを使用できます。これが最も簡単な開始方法です。
このガイドでは、 このBitriseAndroidサンプルプロジェクト。
前方の大きな画像
公式のBitriseDockerイメージは、さまざまなプレインストールされたツールが含まれているため、非常に大きくなります。少なくとも20〜25GBの無料ディスクスペースが必要です。
あなたが精通していない場合 Bitrise CLI、最初に試してみてください。何を知っていれば、CLIをマスターする必要はありません bitrise run WORKFLOW
そうです、それはこのチュートリアルには十分なはずです。
quay.ioからDockerイメージをダウンロードする
-
インストール docker。
-
あなたがあなたを持っていることを確認してください
bitrise.yml
リポジトリ内。コミットする必要はありませんが、ファイルはリポジトリのルートディレクトリに存在する必要があります。
-
cd
Mac / Linuxのリポジトリのディレクトリに移動します。 -
レジストリからイメージをプルします。
docker pull bitriseio/android-20.04:latest
-
次のコマンドを実行します。
docker run --privileged --env CI=false --volume "$(pwd):/bitrise/src" --volume "/var/run/docker.sock:/var/run/docker.sock" --rm quay.io/bitriseio/android-20.04:latest bitrise run WORKFLOW`
コンテナに飛び込んで内部を実験したい場合は、交換できます
--rm quay.io/bitriseio/android:latest bitrise run WORKFLOW
と-it quay.io/bitriseio/android:latest bash
コンテナ内でインタラクティブなbashシェルを開始します。例えば:docker run --privileged --env CI=false --volume "$(pwd):/bitrise/src" --volume "/var/run/docker.sock:/var/run/docker.sock" -it quay.io/bitriseio/android-20.04:latest bash
一般に、プロジェクトがAndroidプロジェクトであるが、Android NDKを使用していない場合は、貴重なディスクスペースを保持するために、 quay.io/bitriseio/android Dockerイメージ。他の公式のBitriseDocker画像は 岸壁のページ。この例では、
quay.io/bitriseio/android
一。 -
からDockerイメージをダウンロードします 岸壁:
docker pull bitriseio/android-20.04:latest`
この画像は10GBを超えるため、これにはかなりの時間がかかる可能性があることに注意してください。ダウンロードが失敗またはハングした場合は、同じコマンドを再度実行することで、いつでもダウンロードを再開できます。
-
Bitriseビルド構成をダウンロードします(
bitrise.yml
)リポジトリのルートディレクトリに移動します。あなたはできる ダウンロード あなたのプロジェクトの
bitrise.yml
から bitrise.yml ワークフローエディタのタブ bitrise.io。 -
ターミナル/コマンドラインで(
cd
)リポジトリのルートディレクトリ。あなたのbitrise.yml
この場所にあります。
問題を再現しようとする場合は、 git clone
リポジトリを新しいディレクトリに配置します。これにより、ディレクトリには、リポジトリにコミットされたファイルのみが含まれます。通常の作業ディレクトリでコマンドを実行しようとすると、再現性の問題が頻繁に発生します。このディレクトリには、リポジトリにコミットされていないファイルが含まれている可能性があります。 .gitignore
。
ビルドの実行
次のコマンドを使用してビルドを実行します。
docker run --privileged --env CI=false --volume "$(pwd):/bitrise/src" --volume "/var/run/docker.sock:/var/run/docker.sock" --rm quay.io/bitriseio/android:latest bitrise run WORKFLOW
-
--rm quay.io/bitriseio/android:latest bitrise run WORKFLOW
と
-it quay.io/bitriseio/android:latest bash
コンテナ内でインタラクティブなbashシェルを開始します。例えば:
docker run --privileged --env CI=false --volume "$(pwd):/bitrise/src" --volume "/var/run/docker.sock:/var/run/docker.sock" -it quay.io/bitriseio/android:latest bash`.
このコマンドは、現在のディレクトリ(リポジトリのディレクトリ)を共有ボリュームとしてDockerコンテナと共有し、コンテナ内のパスで使用できるようにします。
/bitrise/src
。この後、あなたは実行することができます
bitrise run WORKFLOW
、コンテナ内でワークフローを実行します。コンテナを終了するには、実行するだけですexit
。 -
交換することを忘れないでください
WORKFLOW
ワークフローの実際のIDを使用してbitrise.yml
、のようなものでprimary
!
-
NS
--env CI=false
フラグは環境変数を設定しますCI
にfalse
-これにより、BitriseCLIはCI環境でのみ実行する意味のある特定の手順をスキップします。たとえば、Git Clone
ステップ-あなたはすでにあなたのコードを持っているので、Dockerコンテナ内でそれを再びgitクローンする必要はありません(それが私たちがコードディレクトリをとして共有した理由です--volume
)。 -
NS
--rm
フラグは、Dockerにコンテナの後にコンテナを破棄するように指示しますdocker run
コマンドが終了します。これは、コマンドを再度実行した場合、docker run ..
コマンドは、共有に保存されているファイルです--volume
(リポジトリのディレクトリ内)。一時ファイルまたはその他の場所に生成された他のすべてのファイルは破棄されるか、保持されません。ビルドが失敗した後にコンテナをデバッグする場合は、自由に削除してください
--rm
フラグを立て、既存のDockerコンテナに接続する方法についてのDockerチュートリアルを確認してください。コマンドを再度実行するだけでは同じコンテナは使用されませんが、新しいコンテナが作成されることに注意してください。 -
NS
--privileged
フラグを使用すると、Dockerコンテナーからホストのアクセス制御が可能になるため、使用するDockerイメージを信頼しない限り、このフラグを使用しないでください。このフラグは、たとえばVPNを機能させる(ホストのネットワーク構成を変更する)ために必要です。 -
NS
--volume "/var/run/docker.sock:/var/run/docker.sock"
フラグは、コンテナーのホストからDockerソケットを公開します-これは、コンテナー内から他のDockerコンテナーを実行する場合、またはいずれかを実行する場合に必要です。docker
ビルド中/コンテナ内のコマンド。