MS_GitHubActions - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki
- 戻る(GitHub)
- GitHub CLI
- GitHub Actions
- GitHub Copilot
-
2019/11/13 の GitHub Universe の
タイミングで GitHub Actions v2 が GA になる予定 -
これに向けて、GitHub Actions のバックエンドが
Azure Pipelines(CI/CD パイプライン を参照)の
fork 版になったもよう。
-
GitHub Actions v1 から大きな変更
- コンセプト(ワークフローから CI/CD を前面に)
- マルチプラットフォーム対応(Windows と macOS を追加)
- HCL(HashiCorp 社製の設定言語)から YAML へ。
-
Azure Pipelines(CI/CD パイプライン を参照)と比べ、
YAML の記述などで異なるところがある。 -
見方によっては、Azure Pipelines の
ロックインされてない雰囲気の販売チャネルと言えそう。
補足(この見立てはその後どうなったか): 「Azure Pipelines の
ロックインされていない販売チャネル」という観察は鋭いが、
実際には主従が逆転した。【その後の展開】★ 2019年11月 GitHub Actions v2 GA(原文の時点) 2020年〜 急速に普及。OSS の CI が Travis CI / CircleCI から大量移行 (Travis CI の無料枠縮小も後押しした) 現在 【GitHub Actions が事実上の標準】★ → Microsoft 内部でも .NET / VS Code 等の主要 OSS が採用 → Azure Pipelines は 「既存資産の維持」の色が濃くなった 【アーキテクチャの共通点(原文の指摘どおり)】 ・ランナー(エージェント)が ジョブを取りに行くプル型 ・YAML でジョブ/ステップを記述 ・タスク(Actions)を再利用する → 実際、GitHub Actions のランナーは 【Azure Pipelines のエージェントから派生】している ★【YAML の主な違い】 Azure Pipelines GitHub Actions trigger: on: pool: vmImage: runs-on: steps: - task: ...@1 steps: - uses: owner/repo@v4 variables: env: $(var) ${{ env.VAR }} / ${{ secrets.X }} stages / jobs jobs(needs: で依存を書く)
補足(現在の GitHub Actions で押さえる点): 導入時に効いてくる要点。
【基本構造】★ .github/workflows/ci.yml name: CI on: push: { branches: [main] } pull_request: {} workflow_dispatch: {} # 手動実行 ★ jobs: build: runs-on: ubuntu-latest # windows-latest / macos-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-dotnet@v4 with: { dotnet-version: '8.0.x' } - run: dotnet test --logger trx 【.NET 開発でよく使うもの】 actions/checkout … リポジトリ取得 actions/setup-dotnet … SDK 導入 ★ actions/cache … NuGet キャッシュ actions/upload-artifact … 成果物の保存 docker/build-push-action … コンテナのビルド/push【セキュリティ上の要点】★ ① 【サード パーティ Action は SHA で固定する】 uses: foo/bar@a1b2c3d... (タグは動かされうる) → 供給網攻撃の入口になる ② 【GITHUB_TOKEN の権限を絞る】 permissions: contents: read # 既定を read にする ★ ③ 【pull_request_target を安易に使わない】 → フォークからの PR に シークレットが渡ってしまう典型的な事故 ★ ④ 【OIDC でクラウドに認証する】 → 長期のアクセス キーを Secrets に置かず、 Azure / AWS へ【短命トークン】で認証する → 現在の推奨 ★【コストの注意】 ・パブリック リポジトリ → 無料 ・プライベート → 無料枠(分単位)を超えると従量 ・【Windows は 2 倍、macOS は 10 倍】の分数を消費する ★ → Linux で済む処理は Linux で回す ・大量に回すなら【self-hosted runner】 → ただし【パブリック リポジトリでは使わない】 (フォークからの PR で任意コードが走る)★
-
GitHub Actions v2 で .NET Core 3.0 をビルドする - Qiita
https://qiita.com/SnowCait/items/444b5325e712cd944bd8 -
GitHub Actions で .NET Core の
NuGet パッケージを Push した - koudenpaのブログ
https://koudenpa.hatenablog.com/entry/2019/08/30/024752 -
生産性向上ブログ > 新 GitHub Actions 入門 > GitHub Actions と Azure Pipelines
https://www.kaizenprogrammer.com/entry/2019/08/18/205010#GitHub-Actions-%E3%81%A8-Azure-Pipelines -
GitHub Actionsの導入を考えてみた(...が、...)。 - OSSコンソーシアム
https://www.osscons.jp/jox8w22xj-537/
補足(一次情報): 公式ドキュメントは以下。
- GitHub Docs > GitHub Actions
https://docs.github.com/ja/actions- Microsoft Learn > .NET 用の GitHub Actions
https://learn.microsoft.com/ja-jp/dotnet/devops/github-actions-overview
Tags: 移行, .NET開発, 構成管理ツール, CI, IaC