tech.guitarrapc.cóm

Technical updates

CI/CD

はてなブログワークフロー利用の課題と暫定対応

以前、GitHubとはてなブログを連動させている話を書きました。はてなブログ提供のボイラーテンプレートを今も使っていますが、はてなワークフローは運用していく中で直接使わないケースも出てきたのでメモです。 はてなブログのワークフロー想定と使い勝手 …

GitHub ActionsのCVE-2025-30066を受けたワークフローの変化

2025年3月28日にあったtj-actionやreviewdogのセキュリティインシデントCVE-2025-30066を受けて、GitHub Actionsワークフローの書き方が変えてしばらく経ちました。その対応メモを残します。 CVE-2025-30066の概要 CVE-2025-30066の影響を軽減するにはどうす…

2025年4月以降もGitHub ActionsでUbuntu 20.04環境を継続利用する

GitHub ActionsにはLinuxホストランナーとしてUbuntuがありますが、Ubuntu 20ランナーイメージは2025/02/01-04/15まででサポート終了し、以降はubuntu-20.04ホストランナーを使えません。 とはいえUbuntu 20.04環境をCIとして利用したいケースもあるので、20…

GitHub ActionsでダウンロードしたActionsのパス

GitHub Actionsが他CIと決定的に違うポイントの1つがカスタムアクションです。他のCIサービスにも類するものはありますが、圧倒的なボリュームと参照しやすさ、作りやすさが他のCIサービスと一線を画しています。1 今回はそんなカスタムアクションの豆知識で…

GitHub Actionsのinputsを環境変数で取れるときと取れないとき

GitHub Actionsには、ワークフローの実行時に渡すパラメータを定義するinputsがあります。このinputsを使うことで外部から変数を受け取ることができます。 今回はinputsで渡した変数を環境変数として受け取れる時と受け取れない時の違いについてです。 input…

GitHub Actionsでスパースチェックアウトを使ってモノレポの一部だけをチェックアウトする

モノレポをCIでビルドするにあたり、最初にして最大の課題がチェックアウトです。先日GitHub Actionsのactions/checkoutでスパースチェックアウトできるようになったので、これを使ってモノレポのチェックアウトを高速化しました。 今後のモノレポチェックア…

GitHub Actionsでモノレポ上の特定パスをチェックアウトスキップしたい

モノレポでリポジトリサイズが大きくチェックアウトに時間がかかって困ることがあります。 今回はこういったときにどうできるのかを考えてみましょう。 概要 GitHub Actions でスパースチェックアウトをする CI におけるチェックアウトの基本 git cloneを高…

GitHub ActionsでREADMEにリポジトリのコードを埋め込みたい

READMEに、リポジトリにおいているコードを埋め込みたい時があります。 そんな時に便利なのが、embedmeです。 https://github.com/zakhenry/embedme 今回は、GitHub Actionsを使ってREADMEにリポジトリのコードを埋め込むことをしたので紹介します。 概要 em…

GitHub Actionsでconfigure-aws-credentialsを使ったOIDCではまったこと

GitHub ActionsのOpenID ConnectorとAWSのOIDC Providerを使うことで、IAM RoleをAssumeできるというのは前回書きました。 https://tech.guitarrapc.com/entry/2021/11/05/025150 構築中によく出るエラーに関しても書いたのですが、いざ実際に使おうとしたら…

GitHub ActionsがOpenId Connectに対応したのでAWS OIDC Providerと連携する

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で歯がゆいこと

GitHub ActionsのComposite Action (複合ステップアクション) は便利なのですが、制約や歯がゆいことが多く悩ましいです。 では何が難しいと感じているのか、その対処をどうしているのかメモしておきます。 概要 Composite Actions とは Composite Actions …

GitHub Actionsのsetup-dotnetとホストランナーの.NET SDK

GitHub Actionsで .NET Coreビルドを行いたいときに利用するものといえば、setup-dotnetがあります。 https://github.com/actions/setup-dotnet 今回はUbuntu-latestな環境でsetup-dotnetがいる場合と、そうでない場合について考えてみます。 概要 GitHub Ac…

CircleCI上でdotnet testのverbosityがオーバーライドできない問題とその対処

CircleCIでdotnet test、妙な挙動をすることは前回1つ紹介しました。 https://tech.guitarrapc.com/entry/2019/12/01/000000 が、まさかまた1つネタが見つかるとは思わなかったです。 今回はdotnet testがこけた時の出力について。 更新 2020/6/17本件の修正…

pulumiでstateが事故ったときに過去のバージョンのstateを当てなおす

terraformもそうですが、Infrastructure as Codeとかやってるとstateの壊れる日が来て軽く絶望します。 Pulumiで、誤った操作からstateのリソースが200あまり消えたときにどのように復旧したのかをメモしておきます。 概要 状況 復旧目標 前提情報 State と…

GitHub Actionsで.NET Frameworkプロジェクトをビルドする

Visual Studio拡張のプロジェクトは、今でも .NET Frameworkです。 .NET Frameworkということは、基本的にWindowsでのビルドになります。 今回、AppVeyorでやっていたビルドをGitHub Actionsに移行したのでメモ。 最終的に、次のように .NET Frameworkのビル…

GitHub Actionsことはじめ

GitHub Actions以前調べたのですが、いろいろあって個人プロジェクトでサクッとビルドするのみに使っていました。 今回改めて調べを進めたのでメモ。 幾つかのリポジトリをGitHub Actionsに移行したけど、記事にしようとまとめていたらやった内容以上に調べ…

CircleCI Orbをいくつか作った話

幾つかCircleCI Orbを作っていたのですが、記事にしていませんでした。 どれも必要になって作ったもので、いずれもプロダクションで万単位が実行されれているのでいい感じで使えそうなら幸いです。 概要 Orbs とは 公開したOrbs guitarrapc/Git-shallow-clon…

dotnet testにタイムアウトを仕掛ける

dotnet testをCIで実行していて、永遠に終わらないのを仕込んでしまったのですがどう対処するかです。 概要 異常なテストを捕捉したい テスト実行dotnet testをタイムアウトさせる dotnet testをRunsettings.TestSessionTimeout で実行タイムアウトさせる Ru…

CircleCIでdotnet testが遅い問題と対処方法

この記事は、C# その2 Advent Calendar 2019の一日目の記事です。 https://qiita.com/advent-calendar/2019/c-sharp-2 C# で書いたアプリをLinuxやコンテナ環境で動かすことも当たり前になりました。コンテナイメージを作成するのにCircleCIは非常に便利な機…

.NET Core 3.1のSinglefile executablesを生成する

.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 Pipelineですが、ずっとYAMLで紹介してきました。実際に私はAzure DevOpsにYAMLがPreviewで来てからずっとYAMLにしています。 これはほかのCIサービスも複数触っていたことからもYAMLでかけることに大きなメリットを見出してい…

Azure DevOpsのMicrosoft-hosted AgentでHoloLensビルドを行う(MRTK/MRTKv2)

前回、Azure DevOpsでHoloLensのビルド環境を行うこと、Microsoft-hosted Agentが今ならいいということを書きました。 https://tech.guitarrapc.com/entry/2019/06/26/155159 今回は、MRTKとMRTKv2をMicrosoft-hosted Agentで現実的にビルドすることを考えて…

Azure DevOpsでのHoloLensビルドを行うためのCI/CD選択

お手伝い先でHoloLensでのCI/CDを構築、運用して1年を超えましたが、日々安定してビルドができています。 先日素敵な記事も出てて良い感じです。*1 Azure DevOpsでHoloLensアプリをビルド(MS-hosted編) | NEXTSCAPE with MR HoloLensのCI環境について、必…

Azure DevOpsのTemplateを利用してビルドする

Azure DevOps Pipelineで何度も同じ処理をYAMLに書いていた場合、Templateを使うとまとめられて便利になります。 実際にビルドが多く重複した定義の多いプロジェクトに適用したところ、表向き300行 (template含めると100行) 減らせて見通しは良くなりました…

CircleCI CLIをWindowsでも利用する

circleciのcliを使うとconfigやorbsなどローカルでの操作がはかどります。 このCircleCI Local CLI、以前は公式ページにmacOSとLinuxの記述しかありませんでしたがWindowsの導入方法も示されるようになりました。 https://circleci.com/docs/ja/2.0/local-cl…

.NET CoreでgitなどSCM情報をCIで埋め込んでアプリケーションに表示する方法と選択

開発中、リリースのいずれにおいても「今どのバージョンなのか」という情報は重要な情報です。 とはいえ、実際に埋め込みたいのはバージョンというより「ソースコード」とくに「コミット」と連動する情報、加えて「ビルド」と紐づく情報もほしいでしょう。 …

AzureDevOpsPipeline/Azure DevOps Pipelineでdocker buildとAzure Container Repository への push を行う

Azure Pipelineを使っているとタスクによせたくなるのですが、あんまりそういうのもアレなのでほどほどにというのはもうちょっと言われてもいい気がします。 Dockerはその最たる例です。コマンド3行で済むようなものがDockerタスクを使うといたずらに時間を…

CircleCIのOrbをPull Requestを通じて学ぶ

エンジニア同士で話していると、CIどうしよう、今何がいいかなぁという話にたびたびなります。 CIサービスは複数ありますが、サーバーサイドビルドでSaaS型CIならCircleCIが今のところいいい感じです。(2.1を前提とする) https://circleci.com/ あるいはGitH…

Deployment Groupを用いてManagedにVMへのデプロイを行う

現状、サーバーサイドの多くはコンテナで動かすことが可能です。そのため、VMに直接アプリケーションをデプロイする機会はかなり減りました。最高ですね。しかし、UWPをはじめとして一定の要件下においてはコンテナ対応が技術的に難しく、VMへのデプロイをせ…

Slotを用いたAppServiceのステージング環境とAzureDevOps PipelineのリリースによるBlueGreen Deployment

AzureのApp ServiceにはSlotがあります。 Slotはただ利用してもそれなりにうれしいのですが、Terraformでの構成とAzure DevOpsのリリースパイプラインでの展開を行えるようにすることで、「CI/CDによるApp ServiceのSlotによる展開前のステージング環境での…