CI/CD
以前、GitHubとはてなブログを連動させている話を書きました。はてなブログ提供のボイラーテンプレートを今も使っていますが、はてなワークフローは運用していく中で直接使わないケースも出てきたのでメモです。 はてなブログのワークフロー想定と使い勝手 …
2025年3月28日にあったtj-actionやreviewdogのセキュリティインシデントCVE-2025-30066を受けて、GitHub Actionsワークフローの書き方が変えてしばらく経ちました。その対応メモを残します。 CVE-2025-30066の概要 CVE-2025-30066の影響を軽減するにはどうす…
GitHub ActionsにはLinuxホストランナーとしてUbuntuがありますが、Ubuntu 20ランナーイメージは2025/02/01-04/15まででサポート終了し、以降はubuntu-20.04ホストランナーを使えません。 とはいえUbuntu 20.04環境をCIとして利用したいケースもあるので、20…
GitHub Actionsが他CIと決定的に違うポイントの1つがカスタムアクションです。他のCIサービスにも類するものはありますが、圧倒的なボリュームと参照しやすさ、作りやすさが他のCIサービスと一線を画しています。1 今回はそんなカスタムアクションの豆知識で…
GitHub Actionsには、ワークフローの実行時に渡すパラメータを定義するinputsがあります。このinputsを使うことで外部から変数を受け取ることができます。 今回はinputsで渡した変数を環境変数として受け取れる時と受け取れない時の違いについてです。 input…
モノレポをCIでビルドするにあたり、最初にして最大の課題がチェックアウトです。先日GitHub Actionsのactions/checkoutでスパースチェックアウトできるようになったので、これを使ってモノレポのチェックアウトを高速化しました。 今後のモノレポチェックア…
モノレポでリポジトリサイズが大きくチェックアウトに時間がかかって困ることがあります。 今回はこういったときにどうできるのかを考えてみましょう。 概要 GitHub Actions でスパースチェックアウトをする CI におけるチェックアウトの基本 git cloneを高…
READMEに、リポジトリにおいているコードを埋め込みたい時があります。 そんな時に便利なのが、embedmeです。 https://github.com/zakhenry/embedme 今回は、GitHub Actionsを使ってREADMEにリポジトリのコードを埋め込むことをしたので紹介します。 概要 em…
GitHub ActionsのOpenID ConnectorとAWSのOIDC Providerを使うことで、IAM RoleをAssumeできるというのは前回書きました。 https://tech.guitarrapc.com/entry/2021/11/05/025150 構築中によく出るエラーに関しても書いたのですが、いざ実際に使おうとしたら…
GitHub ActionsでOpenID Connectを経由して各種Cloud Providerの認証を得る機能のがGAしました。 めでたい。 https://github.blog/changelog/2021-10-27-GitHub-actions-secure-cloud-deployments-with-openid-connect/ これにより、aws-actions/configure-a…
GitHub ActionsのComposite Action (複合ステップアクション) は便利なのですが、制約や歯がゆいことが多く悩ましいです。 では何が難しいと感じているのか、その対処をどうしているのかメモしておきます。 概要 Composite Actions とは Composite Actions …
GitHub Actionsで .NET Coreビルドを行いたいときに利用するものといえば、setup-dotnetがあります。 https://github.com/actions/setup-dotnet 今回はUbuntu-latestな環境でsetup-dotnetがいる場合と、そうでない場合について考えてみます。 概要 GitHub Ac…
CircleCIでdotnet test、妙な挙動をすることは前回1つ紹介しました。 https://tech.guitarrapc.com/entry/2019/12/01/000000 が、まさかまた1つネタが見つかるとは思わなかったです。 今回はdotnet testがこけた時の出力について。 更新 2020/6/17本件の修正…
terraformもそうですが、Infrastructure as Codeとかやってるとstateの壊れる日が来て軽く絶望します。 Pulumiで、誤った操作からstateのリソースが200あまり消えたときにどのように復旧したのかをメモしておきます。 概要 状況 復旧目標 前提情報 State と…
Visual Studio拡張のプロジェクトは、今でも .NET Frameworkです。 .NET Frameworkということは、基本的にWindowsでのビルドになります。 今回、AppVeyorでやっていたビルドをGitHub Actionsに移行したのでメモ。 最終的に、次のように .NET Frameworkのビル…
GitHub Actions以前調べたのですが、いろいろあって個人プロジェクトでサクッとビルドするのみに使っていました。 今回改めて調べを進めたのでメモ。 幾つかのリポジトリをGitHub Actionsに移行したけど、記事にしようとまとめていたらやった内容以上に調べ…
幾つかCircleCI Orbを作っていたのですが、記事にしていませんでした。 どれも必要になって作ったもので、いずれもプロダクションで万単位が実行されれているのでいい感じで使えそうなら幸いです。 概要 Orbs とは 公開したOrbs guitarrapc/Git-shallow-clon…
dotnet testをCIで実行していて、永遠に終わらないのを仕込んでしまったのですがどう対処するかです。 概要 異常なテストを捕捉したい テスト実行dotnet testをタイムアウトさせる dotnet testをRunsettings.TestSessionTimeout で実行タイムアウトさせる Ru…
この記事は、C# その2 Advent Calendar 2019の一日目の記事です。 https://qiita.com/advent-calendar/2019/c-sharp-2 C# で書いたアプリをLinuxやコンテナ環境で動かすことも当たり前になりました。コンテナイメージを作成するのにCircleCIは非常に便利な機…
.NET Core 3.0では、単一バイナリ(Single-file executables)が生成可能になりました。 https://github.com/dotnet/core-setup/pull/5286 今回はどのようにSingle Executable生成するのか、普段は .NET Core 2.1でビルドしたいときの分け方、dotnet global to…
何度か挙げているAzure DevOps Pipelineですが、ずっとYAMLで紹介してきました。実際に私はAzure DevOpsにYAMLがPreviewで来てからずっとYAMLにしています。 これはほかのCIサービスも複数触っていたことからもYAMLでかけることに大きなメリットを見出してい…
前回、Azure DevOpsでHoloLensのビルド環境を行うこと、Microsoft-hosted Agentが今ならいいということを書きました。 https://tech.guitarrapc.com/entry/2019/06/26/155159 今回は、MRTKとMRTKv2をMicrosoft-hosted Agentで現実的にビルドすることを考えて…
お手伝い先でHoloLensでのCI/CDを構築、運用して1年を超えましたが、日々安定してビルドができています。 先日素敵な記事も出てて良い感じです。*1 Azure DevOpsでHoloLensアプリをビルド(MS-hosted編) | NEXTSCAPE with MR HoloLensのCI環境について、必…
Azure DevOps Pipelineで何度も同じ処理をYAMLに書いていた場合、Templateを使うとまとめられて便利になります。 実際にビルドが多く重複した定義の多いプロジェクトに適用したところ、表向き300行 (template含めると100行) 減らせて見通しは良くなりました…
circleciのcliを使うとconfigやorbsなどローカルでの操作がはかどります。 このCircleCI Local CLI、以前は公式ページにmacOSとLinuxの記述しかありませんでしたがWindowsの導入方法も示されるようになりました。 https://circleci.com/docs/ja/2.0/local-cl…
開発中、リリースのいずれにおいても「今どのバージョンなのか」という情報は重要な情報です。 とはいえ、実際に埋め込みたいのはバージョンというより「ソースコード」とくに「コミット」と連動する情報、加えて「ビルド」と紐づく情報もほしいでしょう。 …
Azure Pipelineを使っているとタスクによせたくなるのですが、あんまりそういうのもアレなのでほどほどにというのはもうちょっと言われてもいい気がします。 Dockerはその最たる例です。コマンド3行で済むようなものがDockerタスクを使うといたずらに時間を…
エンジニア同士で話していると、CIどうしよう、今何がいいかなぁという話にたびたびなります。 CIサービスは複数ありますが、サーバーサイドビルドでSaaS型CIならCircleCIが今のところいいい感じです。(2.1を前提とする) https://circleci.com/ あるいはGitH…
現状、サーバーサイドの多くはコンテナで動かすことが可能です。そのため、VMに直接アプリケーションをデプロイする機会はかなり減りました。最高ですね。しかし、UWPをはじめとして一定の要件下においてはコンテナ対応が技術的に難しく、VMへのデプロイをせ…
AzureのApp ServiceにはSlotがあります。 Slotはただ利用してもそれなりにうれしいのですが、Terraformでの構成とAzure DevOpsのリリースパイプラインでの展開を行えるようにすることで、「CI/CDによるApp ServiceのSlotによる展開前のステージング環境での…