LoginSignup
8
4

More than 3 years have passed since last update.

GitHub Actions v2 で .NET Core 3.0 をビルドする

Last updated at Posted at 2019-09-24

はじめに

.NET Core 3.0 がリリースされたようなので GitHub Actions でビルドしてみます。
GitHub Actions のベータ版も申込みからすぐに使えるようになっています。

.NET Core 3.0 App

コンソールアプリケーションを作ってコミットしておきます。
詳細のコードは割愛。全体のコードはこちら

GitHub Actions

基礎的なところは GitHub ヘルプ に説明があるのでコードの中から .NET Core のビルドに関係あるところだけ取り上げます。

コード

.github/workflows/build.yml
name: Build .NET Core 3.0
on: push
jobs:
  build:
    runs-on: macOS-latest # ubuntu-latest, windows-latest, etc
    steps:
      - uses: actions/checkout@v1
      - uses: actions/setup-dotnet@v1.0.2 # >= v1.1.0 だと dotnet run に失敗する
        with:
          dotnet-version: 3.0.100
      - run: dotnet build --configuration Release
      - uses: actions/upload-artifact@v1
        with:
          name: artifact
          path: ./GitHub-Actions-.NET-Core-3.0-Build-Example/bin/Release/netcoreapp3.0/
      - run: dotnet run --configuration Release --project ./GitHub-Actions-.NET-Core-3.0-Build-Example/

actions/setup-dotnet

uses: actions/setup-dotnet@v1.0.2 # >= v1.1.0 だと dotnet run に失敗する
with:
  dotnet-version: 3.0.100

actions/setup-dotnet を使って dotnet cli を使えるようにします。
コメントにも書いていますが v1.1.0 の変更dotnet runlibhostfxr.dylib1 が見つからないエラーになってしまうので v1.0.2 を指定します。2
dotnet build は v1.2.0 でも大丈夫でした。

dotnet-version には SDK のバージョンを指定します。
Download .NET Core 3.0 (Linux, macOS, and Windows)Build apps - SDK の項目のところにあるバージョンが使えます。
3.0 未満をビルドしたい場合はこちらから該当のバージョンを。
毎回ダウンロードしているようなので新しいバージョンが出ても使えるはずです。

dotnet build

- run: dotnet build --configuration Release

ここが今回の主題です。
リリースビルドをするために --configuration オプションを付けています。

残りのコードは Artifacts にアップロードしたり実際にコンソールアプリケーションとして実行をしているだけです。
Actions の実行結果の右上にある Artifacts から実行ファイルをダウンロードできます。
Mac でビルドしたので解凍した後ターミナルから ./GitHub-Actions-.NET-Core-3.0-Build-Example を実行すれば Hello World! と表示されます。(他の OS も同様です。)

おわりに

公式で用意されているアクションを組み合わせるだけで簡単にビルドできるのは良いですね。
今回は .NET Core 3.0 のビルドということで OS や .NET Core のバージョンを直指定しましたが jobs.<job_id>.strategy を使ってマトリックスビルドをすることもできます。

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ ubuntu-latest, macOS-latest, windows-latest ]
        dotnet: [ 3.0.100 ]
    steps:
      - uses: actions/checkout@v1
      - uses: actions/setup-dotnet@v1.0.2
        with:
          dotnet-version: ${{ matrix.dotnet }}

  1. Ubuntu: libhostpolicy.so, Mac: libhostpolicy.dylib, Windows: hostpolicy.dll 

  2. dotnet cli の問題が絡んでいるようで Issue #9114 · dotnet/cli で議論されています。 

8
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4