Skip to main content

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イメージをダウンロードする

  1. インストール docker

  2. あなたがあなたを持っていることを確認してください bitrise.yml リポジトリ内。

    コミットする必要はありませんが、ファイルはリポジトリのルートディレクトリに存在する必要があります。

  3. cd Mac / Linuxのリポジトリのディレクトリに移動します。

  4. レジストリからイメージをプルします。

    docker pull bitriseio/android-20.04:latest
    
  5. 次のコマンドを実行します。

    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 一。

  6. からDockerイメージをダウンロードします 岸壁

    docker pull bitriseio/android-20.04:latest`
    

    この画像は10GBを超えるため、これにはかなりの時間がかかる可能性があることに注意してください。ダウンロードが失敗またはハングした場合は、同じコマンドを再度実行することで、いつでもダウンロードを再開できます。

  7. Bitriseビルド構成をダウンロードします(bitrise.yml)リポジトリのルートディレクトリに移動します。

    あなたはできる ダウンロード あなたのプロジェクトの bitrise.yml から bitrise.yml ワークフローエディタのタブ bitrise.io

  8. ターミナル/コマンドラインで(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 フラグは環境変数を設定します CIfalse -これにより、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 ビルド中/コンテナ内のコマンド。