GitHub Actions ワークフローは、ソフトウェア開発ライフサイクル全体でタスクを自動化できます。
こんにちは。X(クロス)イノベーション本部 ソフトウェアデザインセンター の山下です。 今回はユーザーに合わせてオートスケールするGitHub ActionsのRunnerについて紹介しようと思います。 課題と目的 公式の推奨している方法について 構築の手順 事前準備 terraformの実行 terraformファイルの作成 terraformの実行 GitHub Appにhookの設定を追加 実際に利用する場合 まとめ 課題と目的 GitHub Actionsを使ってCIを実施するのは一般的になってきています。 ISIDでもGitHub Actionsを活用してCIを実施しています。 しかし、GitHub社が提供しているrunners(GitHub-hosted runners)では困る場合があります。「GitHub Actionsでオンプレミス環境のCI/CDを実行する方法」の記事で
GitHub Actions と hadolint (Haskell Dockerfile Linter) を組み合わせて,今まで雑に実装してきた Dockerfile の静的解析を自動化する環境を作った.できる限り Dockerfile Best Practices を意識していることもあり,警告はあまり多く出なかったけど,やはり CI (Continuous Integration) で気付ける安心感はある! www.docker.com hadolint (Haskell Dockerfile Linter) hadolint を使うと Dockerfile に警告を出してくれる.また Dockerfile の RUN は,シェルスクリプトの Linter として有名な ShellCheck を使って警告を出してくれる.例えば FROM centos:latest のように FROM
先に結論 - uses: actions/checkout@v2 with: ref: ${{ github.event.pull_request.head.ref }} やったこと PR に対して特定の実行してそのPRにコミットしたい。 例えば code format とか まぁ、最初 main とかでやるように雑にやってみた - name: Commit updated files run: | if ! git diff --exit-code --quiet then git add . git config --local user.email "nobody@example.com" git config --local user.name "File Update GitHub Workflow" git commit -m "Update Files" git push f
FOSS開発で細かいやらかしを積み上げてきたのでまとめる。 テストの失敗原因レポートをartifactとしてアップロードしそこねる actions/upload-artifactを使ってテストレポートをartifactとしてアップロードする際、以下の書き方だと失敗する。 # bad - run: | ./gradlew test --no-daemon --stacktrace - uses: actions/upload-artifact@v2 with: name: reports path: build/reports これはテストが失敗した時点で後続のstepsが実行されなくなるため。明示的に失敗時でもアップロードされるように指示する必要がある。 # bad - run: | ./gradlew test --no-daemon --stacktrace - uses: actio
以下を実現するGithub Actionsを作る方法を紹介する。 Dockerイメージのビルドには BuildKit を使う Github Actionsのもつキャッシュの仕組みを有効にする DockerイメージのタグにはYYYYMM-(コミットハッシュの頭7桁)のように、コミットごとにユニークになる値を使う mainブランチをビルドする際には、latestタグも付与する このBuildKitとGithub Actionsのキャッシュを組み合わせる方法は、Dockerの公式ドキュメントに、Optimizing the workflow として掲載されている。 これに自分のアレンジを加えた方法として紹介する。 まず、BuildKitを有効にするには、以下のdocker/setup-buildx-action@v1を先に組み込む。 - name: Set up Docker Buildx id
bin/rspec --format progress --format RspecJunitFormatter --out report/rspec-${{ matrix.node_index }}.xml $(./split-test --junit-xml-report-dir report-tmp --node-index ${{ matrix.node_index }} --node-total 2 --tests-glob 'spec/**/*_spec.rb' --debug) [2021-01-08T07:12:09Z WARN split_test] Timing data not found: /home/runner/work/split-test-example/split-test-example/spec/1_spec.rb ... [2021-01-08T07
GitHub Actionsについて調べていたら、ひょんなことからworkflow commandsの存在とそれを使ってPull RequestのDiff Viewでメッセージが表示できることを知った。 (GitHub ActionsでESLintを動かした時にエラー表示してくれるアレ) 良い機会なのでTS Compiler APIの勉強も兼ねて型検査の結果をコード上に表示するためのGitHub Actionsを自作しようと思う。 できたもの Embedded content: https://github.com/marketplace/actions/typescript-error-reporter 使い方 お手持ちのGitHub Actions workflowに2行追加するだけ - name: TypeScript Error Reporter uses: andoshin11/
AI & MLLearn about artificial intelligence and machine learning across the GitHub ecosystem and the wider industry. Generative AILearn how to build with generative AI. GitHub CopilotChange how you work with GitHub Copilot. LLMsEverything developers need to know about LLMs. Machine learningMachine learning tips, tricks, and best practices. How AI code generation worksExplore the capabilities and be
2024/9/17に「GitHub CI/CD実践ガイド~ Forkwell Library#67」というイベントで登壇しました。本記事ではその講演をダイジェストでお届けします。あわせて当日のFAQにも回答します。 発表資料 イベントでは拙著『GitHub CI/CD実践ガイド』のポイントを解説しました。 資料はSpeakerDeckへ公開済みです。またアーカイブ動画がYouTubeから視聴できます。 発表ダイジェスト それでは講演内容をかいつまんで説明しましょう。アジェンダは次のとおりです。 CI/CDとはなにか GitHub Actionsの基本機能と作法 持続可能性を高める習慣 意図的脅威に対する防衛術 おわりに なおFAQだけ読みたい場合は、こちらをクリックすると飛べます。 1. CI/CDとはなにか 我々ソフトウェアエンジニアの仕事は「ソフトウェアをとおして、ユーザーに価値を届け
環境構築: VS Code Remote Container で Azure + Terraform + GitHub ActionsAzureDockerTerraformVSCodeGitHubActions Intro Fork して clone したらすぐに Azure を Terraform できる devcontainer を作りました。 VS Code の Remote Development (Remote - Containers) 機能を使っているので、ローカルに VS Code と Docker Desktop の環境があれば、以下のようなことがほんの少しの準備で実行できます。 Terraform で Azure を管理する terraform や Azure CLI az コマンドがすでに Docker コンテナ上のインストールされています。 GitHub Acti
こんにちは。コーポレート本部 サイバーセキュリティ推進部の耿です。 2025年3月に tj-actions や reviewdog など有名なサードパーティアクションを巻き込んだサプライチェーン攻撃が発生しました。GitHub や GitHub Actions の仕様を熟知したうえで悪用した、非常に巧妙な攻撃手法です。 (詳細) GitHub Actions の action の利用は、自組織のGitHubリポジトリで第三者が書いたコードの実行を許すことに他なりません。その便利さと引き換えに一定のセキュリティリスクを孕んでいることを意識し、正しく対策を考えることが重要です。 今回発生したような侵害への防止策として、GitHub Actions の action を利用する場合のバージョン指定はバージョンタグではなく、フルコミットハッシュ(SHA)を利用して「ピン留め」すること(参考)が、よ
こんにちは!コンサル部のinomaso(@inomasosan)です。 前回、GitHub ActionsからECSのCI/CDについて試してみました。 その際、GitHub ActionsにはAWS管理ポリシーによる強めの権限を付与して検証しました。 本番運用を考慮する場合は、FullAccess等の強い権限だと思わぬ事故につながります。 今回はセキュリティの観点から、GitHub Actions用にIAMポリシーの最小権限例を作成してみました。 構成図 GitHub ActionsのDeploy to Amazon ECSテンプレートからワークフロー実行する際の大まかな構成図となります。 今回はIAMポリシーのActionとResourceをメインに権限を見直していきます。 IAMポリシーの最小化権限例 今回作成したIAMポリシーは以下の通りです。 <>で囲った値は、ご自身の環境毎の値
その昔、初めてのサーバーレスアプリケーション開発というブログを書きました。 このシリーズを通して出来上がるものは、AWSのコードシリーズを用いてAWSリソースをデプロイするためのパイプラインです。 時は流れ、2020年。同じような仕組みを作るのであればCDKとGithub Actions使いたいという思いに駆られたので、こんな感じのパイプラインを作成してみました。 今回作成したコードは以下のリポジトリにあげています。 cdk-github-actions 目次 CDKとGithub Actions 今回構築するアプリケーションの全体構成はこちら。 CDKで「クライアントからリクエストを受けて文字列を返却する」簡単なアプリケーションを作成します。 AWSにデプロイされるまでの流れは以下のようになります。 ローカルでCDKを使ったアプリケーションを作成 featureブランチを作成しmaste
はじめにGitHubはBug Bountyプログラムを実施しており、その一環として脆弱性の診断行為をセーフハーバーにより許可しています。 本記事は、そのセーフハーバーの基準を遵守した上で調査を行い、結果をまとめたものであり、無許可の脆弱性診断行為を推奨することを意図したものではありません。 GitHub上で脆弱性を発見した場合は、GitHub Security Bug Bountyへ報告してください。 要約GitHub Actionsの仕様上、デフォルトではサプライチェーン攻撃に対する適切な保護が行われないため、特定の条件を満たしたリポジトリを侵害することが出来る。 この問題の影響を受けるリポジトリがどの程度存在するかを調査した所、yay等の広く使われているソフトウェアのリポジトリを含めた多数のリポジトリがこの攻撃に対して脆弱であることがわかった。 調査理由GitHub Actionsを使
Composite Actions を触っていたところ、 Reusable Workflows との違いが分かりづらいと感じたので自分の中で考えた使い分けについて整理してまとめてみました。 使い分けイメージ Composite Actions Reusable Workflows 使い分けイメージの根拠 みなさんの使い分けや Tips も教えてください 参考 使い分けイメージ Composite Actions リポジトリ内の「この一連の steps をよくやってるな」というのを部品として切り出したいときに使うと良い Custom Actions を自作する際に、 JavaScript Action や Docker Container Action を1から作る前に Composite Actions でできないか検討すると良い (yamlを1つ用意するだけでハードルが低いため) Reu
GitHub Actions Job Summaries 先日 GitHub からアナウンスがあり、GitHub Actions から簡単に Job Summary を扱えるようになりました。 公式のドキュメントでは、頑張って YAML からマニュアルで環境変数を通じて操作する方法が紹介されていますが、これだと書くのが少々辛いです。 - name: Generate list using Markdown run: | echo "This is the lead in sentence for the list" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY # this is a blank line echo "- Lets add a bullet point" >> $GITHUB_STEP_SUMMARY ech
AI & MLLearn about artificial intelligence and machine learning across the GitHub ecosystem and the wider industry. Generative AILearn how to build with generative AI. GitHub CopilotChange how you work with GitHub Copilot. LLMsEverything developers need to know about LLMs. Machine learningMachine learning tips, tricks, and best practices. How AI code generation worksExplore the capabilities and be
AI & MLLearn about artificial intelligence and machine learning across the GitHub ecosystem and the wider industry. Generative AILearn how to build with generative AI. GitHub CopilotChange how you work with GitHub Copilot. LLMsEverything developers need to know about LLMs. Machine learningMachine learning tips, tricks, and best practices. How AI code generation worksExplore the capabilities and be
元ラーメン屋店長プログラマのObjective-ひろC(@hirothings)です🍜 GitHub Actionsで個人アプリのデプロイを自動化したのでその手順を書きます。 目次 GitHub Actionsとは? なぜGitHub Actionsをデプロイ環境に選んだか? 実装の流れ GitHub Actionsとは? 「GitHub上で動作するサーバレス実行環境」で、GitHub関連のイベントをトリガーにCI/CD様々な処理を実行できます。 中の人がGitHubの概要について説明しているわかりやすい記事があるので、それを読むのがオススメです。 以下、抜粋。 Actionの実体はDockerコンテナ Actionを組み合わせて独自のワークフローを構築できる コンテナ実行環境がコンパクトで重い処理の実行には向いていない 特徴 GitHub Marketplaceに、actionがたくさ
文字セットと照合順序 MySQLに限らず多くのRDBMSには文字をどのようにバイト列で表現するかを決めるルールである文字セットがあります。 また文字セットに対応して文字同士を比較するときのルールである照合順序*1という概念があります。MySQLの場合、この照合順序は1つの文字セットに対して複数存在する概念です。なのでそれぞれの文字セットに対してデフォルトの照合順序があります。 照合順序が何に設定されているのかを把握していないと思わぬ結果を招くことになり、有名なのが寿司ビール問題と呼ばれるものになります。これは寿司の絵文字とビールの絵文字がMySQLのutf8mb4_general_ciという照合順序の下で等価であると判定されることが原因です。 blog.kamipo.net ここまで照合順序の話をしましたが間違ったことを話している可能性があるので公式ドキュメントを参照してください。 dev
先日のGitHub Universeで新機能「GitHub Actions」が発表された。これはDockerコンテナにパッケージ化された「アクション」を組み合わせることで、テストやデプロイといったワークフローを自動化できるサービスで、これによってGitHubはコードをホストするだけでなく、実行することもできるプラットフォームになったわけだ。本稿では、そんなGitHub Actionsの使いどころを探っていきたい。前編となる今回は、GitHub Universe2日目のKeynoteの様子と、そこで発表された実際の企業による「GitHub Actions」の活用事例を紹介。後編では日本のエンジニアたちがこの新機能をどう見ているのか、アフターイベントの内容からピックアップしてお伝えする。 GitHubが目指す開発者とコミュニティの未来 10月16・17日に開催されたGitHub最大のユーザーカ
AI & MLLearn about artificial intelligence and machine learning across the GitHub ecosystem and the wider industry. Generative AILearn how to build with generative AI. GitHub CopilotChange how you work with GitHub Copilot. LLMsEverything developers need to know about LLMs. Machine learningMachine learning tips, tricks, and best practices. How AI code generation worksExplore the capabilities and be
フロントエンドなエンジニアの皆さま、ご機嫌いかがでしょうか。 唐突な質問ですが、Internet Explorer 11というブラウザはお好きでしょうか。勿論大好きであられるかと存じ上げます。Webの歴史をまさにその身をもって築き上げてきた由緒正しきブラウザであります。唯一無二の王道です。昨今は様々なブラウザが溢れてあそばせております。しかし所詮それは一時的なこと。やがて全人類は母なるInternet Explorer 11の元へと還っていくことでしょう。 我々が目指したこと Internet Explorer 11(以下、IE11)を目にすること、操作すること、その他あらゆる接点を限りなく減らしつつ、プロダクトがIE11でも動作可能なことの検証と保証を行いたい。 これを成し遂げるエンジニアリング的な手段、つまりIE11環境でのE2Eテストを自動化することを目指します。 環境 自動化を行う
追記 年末にこの記事の内容も含めてgithub actionsをどう再利用するか総まとめしたのでそちらも併せてどうぞ!↓↓↓ この記事について 2021/11/24についにgithub actionsにReusable workflowsが実装されました。 まずは簡単にドキュメントをさらいながらポイントをまとめていこうと思います。 そもそも何が嬉しいのか これまでのgithub actionsではworkflowからactionを呼ぶことは可能だったものの、workflowから別のworkflowを呼ぶことはできませんでした。 workflowがひとつだけの場合そう問題にはならないのですが、同じworkflowの記述を使い回したい場合にはこれが問題になっていました。 例えば下記のようなworkflowを複数のリポジトリで使う場合、actions/checkout@v2とactions/se
AI & MLLearn about artificial intelligence and machine learning across the GitHub ecosystem and the wider industry. Generative AILearn how to build with generative AI. GitHub CopilotChange how you work with GitHub Copilot. LLMsEverything developers need to know about LLMs. Machine learningMachine learning tips, tricks, and best practices. How AI code generation worksExplore the capabilities and be
GitHub Actions に Arm64 ランナーが来たので Docker のマルチプラットフォームイメージをビルドしてみる 2024/06/03 に GitHub Actions に Arm64 ランナーが追加されました。 現在はパブリックベータで、Team と Enterprise Cloud プランでのみ利用可能です。料金は x64 の同性能のランナーより 37% 安く、電力効率が高いため二酸化炭素排出量削減にもつながるとのことです。 この記事では、新しく追加された Arm64 ランナーを使って Docker のマルチプラットフォームイメージをビルドしてみます。 マルチプラットフォームイメージとは? マルチプラットフォームイメージとは、複数の異なる CPU アーキテクチャ(場合によっては異なる OS)のイメージを 1 つのイメージとして扱えるようにまとめたものです。マルチプラット
Perl Hackers Hub 第61回GitHub ActionsとAmazon ECSを使ったDockerアプリケーションの自動デプロイ(3) (1)はこちら、(2)はこちらから。 GitHub Actions── ビルドとデプロイプロセスの自動化 (3)では、先ほど作成したECS環境に、GitHub Actionsを用いて自動的にアプリケーションをビルドしてデプロイするしくみを構築します。 GitHub Actionsとは、GitHubがgithub.comに統合した形で提供するCI(Continuous Integration、継続的インテグレーション)/CD(Continuous Delivery、継続的デリバリ)環境です。GitHub Actionsには、ソースコードのpullやPull Requestのアサインといった豊富な機能(アクション)が用意されています。ユーザー
AI & MLLearn about artificial intelligence and machine learning across the GitHub ecosystem and the wider industry. Generative AILearn how to build with generative AI. GitHub CopilotChange how you work with GitHub Copilot. LLMsEverything developers need to know about LLMs. Machine learningMachine learning tips, tricks, and best practices. How AI code generation worksExplore the capabilities and be
GitHub Actions の OpenID Connector と AWS の OIDC Provider を使うことで、IAM Role を Assume できるというのは前回書きました。 tech.guitarrapc.com 構築中によく出るエラーに関しても書いたのですが、いざ実際に使おうとしたら別のエラーではまったので忘れないようにメモしておきます。 tl;dr; GitHub Actions で並列実行すると時々失敗する。 configure-aws-credentials を1 jobで複数回呼び出したときに初回の認証を上書きできない 正常動作例1 正常動作例2 問題の動作 tl;dr; OpenID Connect で認証すると、AWS OIDC Provider の認証の上限に引っ掛かりやすい Composite Action の中で、 configure-aws-cr
はじめに GitHub の Issue や Pull Request (PR) に含まれるチェックボックスの状態に応じて、ワークフローを制御できる GitHub Actions の checkbox-workflow-action を作りました。 この Action を使うことで、例えば以下のような制御が可能です。 PR 内のチェックリストがすべてチェックされたら、自動的に Draft 解除して適当な Reviewer を割り当て 複数チームの承認チェックボックスがすべて完了したら、次のステップへ進む Issue のタスク進捗に応じて、ラベルを自動的に更新 etc… 活用の幅はそれなりに広いと考えていますが、上記に例示したものより有効な活用についてはこれから検討していきたいです。以降、なぜ checkbox-workflow-action の作成に至ったのか、ざっくりとしたツールの概要につ
こんにちは!クライアント開発チームの安野です。 クライアント開発チームでは、クライアントポータルという to B 向けのサービス開発を担当しており、私はそこでフロントエンド・バックエンドの開発に携わっています。 クライアントポータルの内容はこちらからも確認できるので、ご興味があれば是非ご一読いただけますと幸いです! square.visasq.com そんなクライアント開発チームですが、この度、 Dependabot というライブラリの脆弱性管理ツールを導入しました。 今回は導入にあたって調査した Dependabot について共有できればと思います。 はじめに ソフトウェア開発において、外部ライブラリの利用はもはや常態化しています。 豊富な機能や開発効率の向上といったメリットから、多くのプロダクトにライブラリが活用されています。 しかし、外部ライブラリにも脆弱性が含まれる可能性があり、発
はじめに どうも、GitHub Actions大好きな@tarumzuです。 今回はGitHub ActionsでAndroidアプリを配信する際のベストプラクティスな記事がなかなか無いなと思ったので、無いなら作ろう!という試みです。 例としてdev環境とstg環境の2つをApp Distributionで配信するという流れをGitHub Actionsで作ります。 コード 早速ですがコードの全文です。今回はタスク毎にJobを分けて対応しています。こちらのコードを順を追って説明していきます。 name: publish on: push: branches: # 今回はdevelopブランチをdev環境、release/〇〇〇ブランチをstg環境への配信としてます - 'develop' - 'release/**' jobs: build: runs-on: ubuntu-latest
はじめに GitHub ActionsでGitHub Appsを使うときには登録時に入手できるApp IDとsecret keyから一時的に使用できるトークンを発行する必要があります。 このトークンはGitHubが用意しているRest APIやGraphQL APIに対してリクエストすることによって入手することができます*1が、いちいちAPIを叩く準備をするのは面倒なので個人が作成したActionであるtibdex/github-app-tokenやSentryが提供しているActionであるgetsentry/action-github-app-tokenを使うことによって楽をすることができました。 今まで非公式なActionに依存していたトークン生成ですが、GitHubが公式でAppsトークンを作成するActionであるactions/create-github-app-tokenを提
ソフトウェアワークフローを自動化してくれる「GitHub Actions」を悪用する形で、GitHubのサーバーが暗号資産(仮想通貨)マイニングに利用されていることが判明しました。 GitHub Actions being actively abused to mine cryptocurrency on GitHub servers https://www.bleepingcomputer.com/news/security/github-actions-being-actively-abused-to-mine-cryptocurrency-on-github-servers/ ニュースサイト・Bleeping Computerの報告によると、攻撃はまず、GitHub Actionsを有効にしている正当なリポジトリをフォークするところから始まり、フォークされたバージョンに悪意のあるコー
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く