Linux 用のランナーを設定する

ランナーを使用すると、独自のインフラストラクチャ上の Pipelines でビルドを実行でき、自社ホストのランナーで使用するビルド時間に対して課金されなくなります。

前提条件

  • ランナー用のホストとして少なくとも 8GB の RAM を持つ 64 ビット Linux インスタンス。

    • 2 つ以上のステップまたはビルド サービスによるビルドでは、より多くの RAM が必要になる場合があります。

  • Docker をインストールする必要があります - Docker のインストール


べスト プラクティス

スワップを無効化して vm.swappiness を設定することを強くお勧めします。スワップを有効化すると、メモリと OOM に関して決定的でないビルドが生じる可能性があります。つまり、十分なスワップが利用可能であればビルドが渡されますが、十分なスワップが利用できないと同じビルドで OOM が生じることがあります。

Linux 環境でスワップを無効にする

ほとんどの Linux ディストリビューションでスワップを無効にする手順を次に示します。次のコマンドがインストールされていない場合は、それらをインストールする必要があります。スワップを設定する場合は、ディストリビューションのドキュメントをご参照ください。

  1. スワップが有効になっているかどうかを確認するには、次のコマンドを使用します。

    1 sudo swapon -sv

    スワップが有効な場合は、次のような出力が表示されます。

    1 2 NAME TYPE SIZE USED PRIO /dev/sda3 partition 2G 655.2M -1
  2. スワップが有効な場合は、次のプロセスを使用して無効にする必要があります。

    1. 次のコマンドを実行して、すべてのスワップを無効にします。

      1 sudo swapoff -av
    2. /etc/fstab を開いて、構成されているすべてのスワップ パーティションまたはファイルを削除します。

    3. マシンを再起動します。

    4. 次のコマンドをもう一度実行して、次の出力がないことを確認します。

      1 sudo swapoff -sv
    5. 出力がある場合はステップ 2 を繰り返して、すべてのスワップ ファイルが /etc/fstab から削除されていることを確認します。

Linux 環境で vm.swappiness を構成する

ほとんどの Linux ディストリビューションで vm.swappiness を構成する手順を次に示します。次のコマンドがインストールされていない場合は、それらをインストールする必要があります。スワップを設定する場合は、ディストリビューションのドキュメントをご参照ください。

  1. vm.swappiness の値を確認するには、次のコマンドを使用します。

    1 sudo sysctl -n vm.swappiness

    値が 1 以外の場合は、スワップ動作がまだ有効になっていることを意味します。

  2. swappiness の値が 1 以外の値である場合は、次のプロセスで設定します。

    1. /etc/sysctl.conf を開いて、vm.swappiness = 1 をファイル自体の行に追加します。

    2. マシンを再起動します。

    3. 次のコマンドを実行して、出力が 1 になることを確認します。

      1 sudo sysctl -n vm.swappiness
    4. 1 以外の出力がある場合は、ステップ 2 を繰り返して、/etc/sysctl.conf が正しく構成されていることを確認します。

Docker イメージのクリーン アップをスケジュールする

ディスク スペースが不足しないように、Docker イメージを自動で削除するプロセスを設定することをお勧めします。docker system prune -af コマンドを使用して cron ジョブを作成し、すべての未使用のイメージを削除できます。スケジュールは、使用するイメージのサイズ、利用可能なディスク スペース、ランナーでビルドを実行する頻度によって異なります。

たとえば、週に 1 回、日曜日の午前 0 時にイメージをクリーン アップするには、次の手順に従います。

  1. crontab -e コマンドを使用して、ユーザー アカウントの crontab ファイルを開きます。

  2. 0 0 * * 0 docker system prune -af エントリを追加します。

  3. ファイルを保存して閉じます。

詳細については、crontab のドキュメントをご確認ください。


ランナーを始める

  • 上記のステップ 6 に示すように、事前設定されている Docker コマンドを使用してランナーを実行します。

    • ランナー実行が 1 回目の場合は、イメージをプルします。

    • ランナーを再開する、またはランナーを更新する場合は、次のコマンドを使用する前にランナーを手動でプルして、常に最新のランナーを実行するようにしてください。

      1 docker image pull docker-public.packages.atlassian.com/sox/atlassian/bitbucket-pipelines-runner:1
    • 次のエラーが発生した場合は、以下の「docker container rm -f runner」コマンドを実行してランナーを削除します。
      エラー

      1 2 docker: Error response from daemon: docker: Error response from daemon: Conflict. The container name "/runner-76b247e7-b925-5e7b-9da2-1cda14c4ff2c" is already in use by container "c3403236e3af5962ed3a9b8771561bd2021974941cc8a89a40c6c66cecb18f53". You have to remove (or rename) that container to be able to reuse that name. See 'docker run --help'.

      docker container rm -f runner コマンド

      1 docker container rm -f runner-76b247e7-b925-5e7b-9da2-1cda14c4ff2c

ランナーの作業ディレクトリを変更する

ランナーがホスト マシンで使用する作業ディレクトリを変更する場合は、ランナーを起動するときに docker run コマンドに次の 2 つのフラグを追加します。

1 docker run [all existing parameters] -v /mydir:/mydir -e WORKING_DIRECTORY=/mydir

このコマンドでは、-v パラメーターの最初の値は、作業ディレクトリとして機能するマシン上のローカル ディレクトリになります。2 番目の値は、ランナー内のディレクトリになります。WORKING_DIRECTORY 環境変数で指定された値と一致するものであれば、どのようなものでも構いません。

作業ディレクトリはランナーのログが永続的に格納されますが、ステップの実行中に一時ファイルを保存するためにも使用されます。

最終更新日 2021年08月 9日)
次でキャッシュ 7:16 PM on Oct 21, 2021 |

その他のヘルプ