Simple, fast, and green CI and caching for nix projects
Simple, fast, and green CI and caching for nix projects
開発やビルドに必要なツールをインストールするとき、特にビルド済みの実行ファイルをインターネットからダウンロードするとき、セキュリティインシデントを防ぐためにはアーティファクトを信頼しても良いか確認しなくてはいけません。 もしGnuPGで署名されていればそれを使うことになりますが、正直に言うと開発者にとってもユーザーにとっても手間がかかることが多いです。 一般によく取られている方法が、チェックサムファイルをアーティファクトと一緒に公開することです。 ユーザーは、sha256sumコマンドなどでアーティファクトのチェックサムを公開されているチェックサムと比較し、改竄されていないことを確認できます。 中間者攻撃やソーシャルハッキングによるアーティファクトの改竄などのシナリオを想定すると、アーティファクトと同じドメインで公開されているチェックサムファイルを、同じスクリプトのなかでダウンロードして使
octocov octocovはコードカバレッジのためのツールキットです。 github.com コードカバレッジなどのコードメトリクスを手元のターミナルで確認したり、GitHub ActionsのActionとしてPull Requestにレポートしたりできます。 計測したコードメトリクスを、さまざまなデータストアに蓄積することもできます。 octocovはコードカバレッジ、Code to Test ratio、テスト実行時間の3つのコードメトリクスを計測しますが、今回、任意のメトリクスに対応しました。 カスタムメトリクス カスタムメトリクスの使用方法は簡単です。 計測したメトリクスを指定のフォーマットで保存する(カスタムメトリクスJSON) octocovに環境変数経由でカスタムメトリクスJSONの保存パスを渡す これだけです。 1. 計測したメトリクスを指定のフォーマットで保存する(
こんにちは。 この記事は、技術本部 Mobile ApplicationグループでSansan(※プロダクトとしてのSansan)のAndroid開発を行っている、桑原、小林、鎌田、原田の共著でお届けします。 今回は、アプリで使用しているライブラリのアップデートについて、 Sansanではどのようなポリシーで行っているのか そのポリシーを守るためにしていること そこから見えてくる課題 そして今後について をお話します。 Sansanにおけるライブラリアップデートのポリシー アプリで使用しているさまざまなライブラリは日々更新されており、機能の追加や変更、脆弱性の修正などが行われています。つまりアップデートを長期間放置していると、新機能を使えないことで開発生産性が落ちるなど、重大なセキュリティリスクを抱えることにつながります。 Sansan / Eightでは、お客さまの大切なデータをお預かり
はじめに こんにちは、 STORES のリテール部門でフロントエンドエンジニアをしているものです。今回はフロントプロダクトで使う CI を CircleCI から GitHub Actions を移行したので、学んだことなどを振り返りながら記事にまとめていきます。 目的 まずそもそもどうして CI を移行しようかというと、きっかけとして今年のはじめに起こった CircleCI のセキュリティインシデントがあります。これにより、 CircleCI の環境変数に入れている AWS のクレデンシャルがすでに抜き取られていることを危惧して、クレデンシャルを再生成するなどをして対策しました。セキュリティインシデントを受けて、今後の CircleCI を使用し続けることに対して不安を覚えました。 これを機に、CircleCI から GitHub Actions に切り替えることを検討するようになりまし
Attention developers and DevOps teams! Today we’re excited to announce that 1Password Service Accounts are now generally available to all users. Whether you’re a growing startup, a thriving mid-size company, or a sprawling enterprise, service accounts offer a secure, automated way to access infrastructure secrets exactly where they’re needed. This post will guide you through integrating service ac
はじめに AWA Androidチームの向井です AndroidチームではCI/CDによって日々の作業を自動化しています この記事ではAWA Androidチームの開発で運用しているCI/CDについて紹介していこうと思います 基本的にAndroid開発の話なので具体的な内容についてはAndroid前提となってしまうのですが、どういった作業を自動化しているのかという観点ではAndroidに限らず活用できる部分もあると思います KtLint、Lint、Unit Test CIではktLint、Android Lint、Unit Testを実行しています 最初はこれらのタスクを実行するだけで運用していたのですが、コードベースが大きくなり次第に実行時間が長くかかるようになってしまいました これらのタスクはGithub Actionsを使って実行していますが、並列数も多くはなく、PRを出すたびにCI
Breaking the Wall between AI and DevOps with MLOps microsoftの公式GitHubアカウントにMLOpsというレポジトリがあります。 その中に、MLOps whitepaper.pdfというファイルがあり、各章の要点をまとめました。 MLOps/MLOps whitepaper.pdf at master · microsoft/MLOps · GitHub gitのcommit履歴を見るに、2019年10月に公開されたドキュメントです。 ※注意 GitHubからPDFファイルをダウンロードすると執筆時のレビューコメントがある状態なので、本ドキュメントを正式なホワイトペーパーと捉えて良いか不明です。 2024年現在、他にMLOpsに関するホワイトペーパーとしての位置付けのドキュメントがmicrosoftから出ていないので、暫定的に本ド
弊社開発のゲーム開発プロジェクトで利用しているアプリビルドのCIツールの移行についてご紹介します。 弊社ではCIツールとして今までJenkinsを採用してきましたが「ジョブの設定の再利用性とレビューフローの不確立における属人化」と「プラグイン依存における保守性の低下」からGitHub Actionsへの移行を推進しています。 今回はその一環として実施したUnityのアプリビルドをJenkinsからGitHub Actionsへ移行した時の対応例や移行中に発生した問題の解決策などを解説します。 https://cagc.cyberagent.co.jp/2024/session/index.html?id=R7qcJi2U Copyright © CyberAgent, Inc.
Merpay & Mercoin Tech Fest 2023 は、事業との関わりから技術への興味を深め、プロダクトやサービスを支えるエンジニアリングを知ることができるお祭りで、2023年8月22日(火)からの3日間、開催しました。セッションでは、事業を支える組織・技術・課題などへの試行錯誤やアプローチを紹介していきました。 この記事は、「1週間リリースを支えるAndroid自動テスト運用のその後」の書き起こしです。 @kenken:それでは、「1週間リリースを支えるAndroid自動テスト運用のその後」について発表します。 簡単に自己紹介をします。 @kenken:メルペイAndroidチームの@kenkenと申します。2021年5月にメルペイへ入社しました。現在はメルペイのあと払いをはじめとした、与信領域の機能開発やリグレッションテストの自動化などを担当しています。 @shinmiy:
GitHub Actionsなどでテストやリリースを自動化していると、様々なトリガーによって異なる処理を行うことはよくあることです。 例えばpushのトリガーではテストやlintを行い、tagをpushしたときはクロスビルドしてリリースする、などです。 これらの処理は内容も頻度も異なるので、ワークフローのファイルを分けることはよくあることだと思います。 私もかつてはこのようにトリガーや実行したい頻度が異なるのだから分けるのは自然なことだと考えていました。 一つのワークフローの中でトリガーによって処理を分岐させるとワークフローが複雑になるし、面倒なことが多いからです。 しかし、最近はリリース時の処理をテストと同じワークフローにまとめる方が良いと考えるようになりました。 リリースする時になって初めて動く処理が多いほど、リリースのワークフローが壊れるリスクが高まるからです。 GitHub Act
開発者が感じるストレスについて 皆様どうもこんばんわ、こんにちわ、エンジニアの榎本と申します。 突然ですが、質問です。 皆さんは開発している時に、ストレスを感じたりしていませんか? エンジニアが感じるストレス、いや、エンジニアだけが感じるストレスあるはずです。 具体的に以下のようなことでしょうか? ここのクラス結合多すぎてめちゃくちゃ変更しずらいよぉ フロントのbuildが遅すぎて、開発が進まねぇよぉ テストが遅すぎて、動かすのも面倒だよぉ(後にpushしてCIで落ちてさらにイラつく) CIになるとなんかわかんないけど、おせぇよぉ デプロイの時間かかりすぎて、コーヒー買ってくるわ などなど。 日々開発をしていると、エンジニアならではのストレスがあるはずです。 これらのストレスはエンジニアの生産性に直結しています。 生産性が高い=>開発が進んでいる。開発した質の高いものがユーザーにデリバリー
GitHub、Armベースのホステッドランナー提供を発表、マイクロソフトはArm対応アプリ開発の支援サービス発表。Arm対応支援が相次ぐ GitHubは、ソースコードのビルドやテストなどのさまざまな処理をGitHub上で行えるように、「GitHubホステッドランナー」と呼ばれる仮想マシンを提供しています。 現在、このホステッドランナーはx86プロセッサがベースとなっていますが、GitHubはArmベースのプロセッサによるホステッドランナーを1月からプライベートベータとして提供開始すると発表しました。 下記は「Accelerate your CI/CD with Arm-based hosted runners in GitHub Actions」からの引用です。 Seamlessly integrated into GitHub Actions, these runners are pow
cache-hitとは v4における挙動変更(?) cache-hitがfalseを返さない ワークアラウンド cache-hitとは GitHub Actionsのキャッシュ用actionであるactions/cacheは、指定したキーに完全一致するキャッシュがヒットしたかどうかのパラメータをそのstepのoutputとして保持している。 つまり以下の様にすることで、キャッシュがヒットしたかどうかを判定し、何かアクションするということが可能である。 jobs: run: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/cache@v4 id: cache with: path: ./cache-dir key: your-cache-key - if: steps.cache.output
みなさん GitHub Actions の OpenID Connect (以下OIDC) 連携使っていますか? GitHub Actions はワークフローの中で OIDC の ID トークンを発行でき,これを Google Cloud などのクラウドプロバイダの認証に用いることでサービスアカウントのクレデンシャルを発行することなくクラウドプロバイダのリソースをワークフロー内で操作できるようになります.これによりクレデンシャルのローテーションなどの管理コストが減り,よりセキュアな連携が可能になります. 詳しくは GitHub の公式ドキュメントや解説記事を見ていただけると良いと思います. 基本的に良いことづくめな OIDC 連携ですが,GitHub Enterprise Server (オンプレ版 GitHub.以下GHES) では OIDC 連携が難しいケースがあります.OIDC 連携
たまにやりたくなるやつメモ モチベーション 実際のスクリプト おまけ:実際にGitLab CIで動かしてるやつ モチベーション CIでTerraformを動かしていると mainブランチを自動apply PRとかでマージ前に挙動を確認したい場合はPRに出ているブランチを手動apply というワークフローを作ることがよくあるんですが、最新のmainブランチよりも古いブランチをapplyした時にapply済の構成が巻き戻って事故になるため、そうならないように防止したかったというやつです。 実際のスクリプト どのCIで動かすかによって多少は変わってくると思うけどだいたいこれで動くと思います。 default_branch=`git remote show origin | grep 'HEAD branch:' | cut -d : -f 2 | tr -d '[[:space:]]'` com
宣伝 GithubのIssue, Pull Requestには連番で番号が振られています。 この番号においてキリ番(キリの良い番号の略)を踏んだときに、誰も祝ってくれないのは寂しくないですか? kumackey/kiribanを使えば、キリ番を踏んだときにコメントで祝ってくれます!🎉 今までキリ番を踏んだ人のリストや、次のキリ番も予告してくれます。 使い方 READMEに書いてある通りではありますが、このアクションが動作して欲しいリポジトリの.github/workflowsに、以下のようなymlファイルを追加するだけです! # .github/workflows/kiriban.yml name: kiriban on: issues: types: [ opened ] pull_request: types: [ opened ] jobs: kiriban: runs-on: u
クラウド基盤本部Cloud Platform部の pddg です。この前までチームだったんですが部になったらしいです。 引き続き精力的に cybozu.com のインフラ基盤の移行に取り組んでいます。 今回はKubernetesマニフェストのバリデーションのための仕組みを検討していたときに発見した、GitHub Actionsのちょっとハックっぽい、もしかしたら便利かもしれない手法について紹介したいと思います。 TL; DR 背景 テナントごとに分散しているマニフェスト kubeconformによるバリデーション テナントもNecoが使っているスキーマ定義ファイルを使いたい! internalリポジトリのclone トークンの作り方 GitHub Actionsのカスタムアクション GITHUB_ACTION_PATH には何が入っている? ファイルを配布するアクションを作る パラメータで
背景弊社では効率的で迅速な開発プロセスを維持するためにコンテナ技術を使用しています。 これまでもコンテナイメージのビルド時間を短縮するための改善を行ってきましたが、今回のDocker Build Cloudの導入により、ビルド時間を大幅に短縮することができました。この改善によって、プルリクエストごとの検証環境を迅速に作成し、デプロイフローをより速くすることが可能となりました。 成果まず最初に成果を共有します。 今回、Docker Build Cloudを活用することで、コンテナイメージビルド時間を劇的に短縮することに成功しました。具体的には、従来約6分30秒かかっていたイメージのフルビルド時間が、約1分10秒まで短縮されました。この結果、ビルド時間を80%削減することができました。 コンテナイメージビルドにおける課題今まではコンテナイメージビルドの高速化のため Registry cache
はじめに こんにちは、カナリー の小野です。 私たちは現在「Canary」というお部屋探しのアプリを作っています。 今回は、昨年から導入したアプリ開発チームのリリースフローをご紹介します。 Canary は React Native と Expo の bare workflow を用いて開発しています。 このフローは、チーム状況に応じてカスタマイズ可能なので、ネイティブアプリチームでない方もぜひご覧ください!! 使用技術 GitHub Actions Expo EAS(Expo Application Services) JavaScript zx 話すこと GitHub Actions を使用したリリースの自動化 JS スクリプトを用いたリリースに必要な複数ファイルの更新 ストアにアップロードするまでの自動化 話さないこと App Store や Google Play Store への
Amazon Web Services ブログ AWS 上の CI/CD パイプラインにおける Terraform State ファイル管理のベストプラクティス はじめに 昨今、多くのお客様はインフラストラクチャのデプロイとメンテナンスに関する手動運用を減らしたいと考えています。 AWS でインフラストラクチャをデプロイしたり運用したりするためには、 AWS CloudFormation、AWS Cloud Development Kit (AWS CDK)、 Terraform のようなツールを利用した Infrastructure-As-Code (IaC) モデルを採用することが推奨されます。 Terraform を利用する上では、インフラストラクチャの設定やリソースを追跡するための State ファイルの管理がとても重要な要素となります。 AWS 上の CI/CD パイプラインで
September 26, 2023 npm provenance is now generally available. npm packages built on a supported cloud CI/CD system can publish with provenance. Today this includes GitHub Actions and GitLab CI/CD. Publishing with provenance verifiably links the package back to its source repository and build instructions. Provenance is restricted to public packages and public source repositories only. npm will che
概要 2023年7月7日に、awsからAWS CodeBuildの機能アップデートが発表されました。 みんな大好き CodeBuild からどうやらGithub Actionsを呼び出せるとのことで、今回はどんな形で呼び出せるのかを検証してみました。 新機能: CodeBuild から Github Actions の呼び出し CodeBild では、buildspec というファイル(ビルド仕様)を使用し、CodeBuild の実行時にどんな処理をするのかを記述していきます。 例: version: 0.2 run-as: Linux-user-name env: variables: key: "value" key: "value" phases: install: run-as: Linux-user-name runtime-versions: runtime: version
2024/1/23に Docker Build Cloudが発表されました www.docker.com 早速Docker Build Cloudを試してみました Docker Build Cloudとは サイト: https://www.docker.com/ja-jp/products/build-cloud/ ドキュメント: https://docs.docker.com/build/cloud/ イメージビルドをDocker社のCloud環境で行える機能です。 これによりどのようなメリットがあるかというと イメージビルドキャッシュの共有 ローカルでイメージビルドするとき、もし他のユーザがビルド済みであればそのキャッシュを使うことができビルド時間が短縮できる CI環境では毎回サーバーが違うため--mount=type=cacheが効かないがDocker Build Cloudであれば
It's possible to cut EC2 boot time from 40 seconds to 5 seconds by combining several optimizations like root volume streaming, instance warm pools, and instance resizing. It is possible to increase the speed at which EC2 instances boot! This can be critical for certain types of workloads, where a fresh EC2 instance is needed to process some request or task. At Depot, we accelerate builds, so the E
こんにちは、CX 事業本部 Delivery 部の若槻です。 前回のエントリで、GitHub Actions for VS Code を使って構成変数(Variables、Secrets および Environments)の管理が行えることをご紹介しました。 今回は GitHub Actions for VS Code の別機能として、ワークフロー編集時に構成変数のサジェストとバリデーションをしてくれる機能が便利だったのでご紹介します。 環境 # VS Code $ code --version 1.85.1 0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2 arm64 # GitHub Actions for VS Code $ code --list-extensions --show-versions | grep github.vscode-gith
Unityプロジェクトのバージョン管理にGitHubを使用している場合、GitHub ActionsワークフローでWebGLビルドを行ない、そのままGitHub Pagesに公開する方法を紹介します。 GitHub Pagesは、GitHubリポジトリに紐づく静的コンテンツをホスティングできる機能です。 公開できるサイズが10GB以下ということと、たとえprivateリポジトリであってもGitHub Pagesにはアクセス制限はかけらない*1という制限がありますので注意してください。 Unity - Builder アクション ビルドには、GameCIの提供するUnity - Builder アクションを使用しています。 利用方法は公式サイトか、検索すれば日本語情報もありますので割愛します。 github.com なお、CIをキックするユーザーはUnityのライセンスを持っている必要があり
iOS開発におけるGitHub Actions self-hosted runnerを利用したオンプレ CI/CD のすゝめ 昨今のiOSのCI /CD環境において、マシンスペックと実行コストのトレードオフや、それに伴うクレジット管理に悩まされることが増えています。 6月27日〜28日にかけて開催した「CyberAgent Developer Conference 2023」では「iOS開発におけるGitHub Actions self-hosted runnerを利用したオンプレ CI/CD のすゝめ」というタイトルで下記についてご紹介しました。本ブログでは、そのセッションの様子をお届けします。 ————————— サイバーエージェントではCyberAgent group Infrastructure Unit(CIU)がMac OSの物理マシンを運用管理し、GitHub Action
はじめに 昔リリースしたアプリをアップデートしたいんだけど、iOSの証明書周りどうなってたっけ?ということありますよね。。自分はiOSの証明書周りがあまり自信がなく、毎回調べながらリリースしてるのですが、今回色々調べていたらXcode Cloudなる機能を利用することで、自動署名でビルドしてTestFlightにアップロードできるようなので、備忘録的に記事にしてみます。 今回やりたいこと FlutterのiOSアプリをXcode Cloudを利用してCI/CDする。 Xcode Cloudとは? Appleによって提供されているCI/CDサービスです。 Xcode 13.4.1以降とAppleDeveloperProgramのメンバーシップが必要なようです。 料金は25(コンピューティング)h/月までは無料のようです。 Xcode Cloudの設定 序盤の設定はぽちぽち進めてしまい詳しく覚
Continuous BenchmarkingA safer path to deliveryMake sure your deliveries are production-ready by continuously measuring your code execution speed. Prevent UX RegressionsEvery millisecond counts to ensure an optimal experience for your users. Check your latencies and make sure your users will not be affected by your new deliveries. Avoid Production IssuesSome lines of code are critical hidden threa
こんにちは。CircleCI カスタマーサクセスチームの Chisato です。最近個人的に幸せを感じた出来事は、育てているレモンの花が咲いたことです。今年2回目の開花で、とても良い香りがします。今回は、インサイト(以下 Insights)についてご紹介します... ただ、今回は Insight では具体的なコスト増の要因が特定できなかったため、「誰が」CircleCI のジョブを多く走らせているのかを調査しました。 具体的な調査方法としては、CircleCI API v2 で pipeline の実行履歴を取得しました。(https://circleci.com/docs/api/v2/index.html#operation/listPipelines) 実行例 (過去の pipeline 実行履歴を一気に取得するコマンド): for i in `seq 500`; do echo $
At the time of writing, the API this article talks about requires an enterprise plan. Overview Figma recently announced its new Variables product, allowing you to define and manage your design tokens directly within Figma. I have been experimenting with Figma Variables for a few weeks and am reasonably impressed with how it works. In this article, I'll share how I've been using Figma Variables to
仕事はともかくとして, 個人として趣味エンジニアリングと野球データ分析の人です. このブログは先日(2024/3/8)に開催された「第22回 酒とゲームとインフラとGCP」の発表および質疑応答から生まれたエントリーとなります. speakerdeck.com 現地も大変盛り上がりましたし, スライドも殊の外に反響を頂いて*1驚いています. この場を借りてお礼申し上げます🙏 発表後, 現地ではいくつかの質疑応答や会話, ディスカッションがありましてその中で最も印象に残った件がこちら. 何故Terraformを書いたのですか?シェルスクリプトでも良いのではないでしょうか? そうですよね, 単に個人開発(趣味)で作っているものでTerraformとGitHub ActionsでのCI/CD(この件は後日別に発表&ブログ書きます)まで頑張らなくても, shellでサクッとgcloudコマンド叩い
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く