GitHub Actions で Windows の Docker イメージをビルドしてみた
はじめに
テントの中から失礼します。製造ビジネステクノロジー部の「てんとタカハシ」です!
先日投稿した記事では、CodeBuild のリザーブドキャパシティフリートを使用して、Windows の Docker イメージをビルドする方法を試してみました。
リザーブドキャパシティフリートは、ビルドの頻度が高い場合や、短時間でビルドを完了させたい場合に有効な手段です。ただし、専用のコンピューティングリソースを事前にプロビジョニングする特性上、リソースの使用状況に関係なく分単位で料金が発生するため注意が必要です。
一方で、ビルドの頻度や時間的な制約がそれほど厳しくなく、料金を抑えたい場合には GitHub Actions が有力な選択肢になります。パブリックリポジトリでは無料で使用することができ、プライベートリポジトリでは実行時間に応じた料金体系になります。
今回は GitHub Actions を使用して、Windows の Docker イメージをビルドする方法を試します。ビルドの内容は先日投稿した記事と同様です。
料金
GitHub Actions をプライベートリポジトリで使用する場合は、アカウントのプランに応じて毎月一定の無料枠(分数)が提供され、無料枠を超えた後は分単位で料金が発生します。
無料枠の消費速度や料金は OS によって異なります。Windows の場合は、Linux と比べてそれぞれ「2倍」になるため注意が必要です(2025/02/04 時点)。
無料枠の消費速度
Windows は無料枠の消費速度が Linux の2倍です。
無料枠が 2,000 分の場合は、1,000 分の使用で無料枠がすべて消費されます。
無料枠を超えた後の料金
Windows は分単位の料金が Linux の2倍です。
- Windows の標準ランナー:0.016 USD / 分
- Linux の標準ランナー:0.008 USD / 分
Windows の標準ランナーを 1,000 分使用した場合の料金は 16 USD です。
Dockerfile
Windows Server 2022 の Docker イメージを使用します。ビルド時に Hello World を出力します。
FROM mcr.microsoft.com/windows/servercore:ltsc2022
RUN powershell -Command "Write-Host 'Hello World'"
Workflow
ビルドした後にコンテナを起動して、Hello World! を出力します。
name: Windows Image Build Sample
on:
workflow_dispatch:
jobs:
build:
runs-on: windows-2022
steps:
- name: checkout repository
uses: actions/checkout@v4
- name: docker build
run: |
docker build -t helloworld .
docker images
- name: docker run
run: docker run helloworld powershell -Command "Write-Host 'Hello World!'"
実行
「Windows Image Build Sample」のワークフローを開始します。
Docker イメージのビルドが成功して、Hello World!
が出力されます。
おわりに
今回は GitHub Actions を使用して Windows の Docker イメージをビルドする方法を試してみました。Dockerfile と YAML ファイルを用意するだけで手軽に検証できました。
GitHub Actions をプライベートリポジトリで使用する場合は、OS ごとに無料枠の消費速度や料金が異なる点にご注意ください。
CodeBuild のリザーブドキャパシティフリートと比べて異なる特性がありますので、プロジェクトの状況に合わせて検討することが大事だと感じました。
最後までお読みいただきありがとうございました!この記事が少しでも参考になれば幸いです。