ビルドとタグアクションによるGithubアクションの高速化
5680 ワード
私が好きなgithubアクションを持っていると言っているのは奇妙ですbuild-and-tag-action .
それはなぜ重要ですか?
JavaScriptベースのGithubアクションのためにDockerランタイムを使用することについての最大の不満の一つは、彼らが遅いです.リアルタイムスロー.あなたはかなり簡単にノードベースのアクションにそれらを変換することができますが、それは別の障壁を追加-あなたのコミットメントを開始する必要があります
両方の世界のベストを取得しようとする
Jasonはさらに一歩を踏み出し、ビルドプロセスを一般化して
どうやって動くの?
あなたが使いたいならば
一度
最後に
例を挙げる
あなたの行動を繰り返すことができますし、あなたの
加えて
便利なリンク GitHub Marketplace GitHub Repo Example Usage
それはなぜ重要ですか?
JavaScriptベースのGithubアクションのためにDockerランタイムを使用することについての最大の不満の一つは、彼らが遅いです.リアルタイムスロー.あなたはかなり簡単にノードベースのアクションにそれらを変換することができますが、それは別の障壁を追加-あなたのコミットメントを開始する必要があります
node_modules
アクションとしてのフォルダnpm ci
自動的にあなたのため.両方の世界のベストを取得しようとする
node_modules
フォルダー、しかし、高速実行)auto-compile-node どれが@vercel/ncc リリースがタグ付けされるたびに、アクションとすべての依存関係を含む単一のJSファイルをビルドするには.これは私が開発のためにDockerを使うことを許しました、しかし、リリースがタグ付けされるときはいつでも、速度利点を得ます.Jasonはさらに一歩を踏み出し、ビルドプロセスを一般化して
npm run build
そして、主要なバージョンの自動再調整を統合するactions-tagger ).どうやって動くの?
build-and-tag-action
はrelease
is published
or edited
. ワークフローはactions/checkout
前にそのタグのコードをクローン化するにはbuild-and-tag-action
runs your setup script . を指定しない場合setup
スクリプトbuild-and-tag-action
意志use a default of npm ci && npm run build --if-present
. これは、プロジェクトの依存関係(開発依存関係を含む)をすべてインストールし、実行しますnpm build
スクリプトを定義します.あなたが使いたいならば
build-and-tag-action
JavaScript Githubのアクションを構築するにはbuild
スクリプトはnpx @vercel/ncc build
. これはあなたのアクションとすべての依存関係を1つのファイルに変換しますmain
あなたのpackage.json
).一度
npm run build
が終了しました.build-and-tag-action
意志create a new commit のみ含むaction.yml
あなたのmain
ファイルを更新し、このワークフローを引き起こしたタグを更新して新しいコミットをポイントします.これは、タグが完全にコンパイルされたJavaScriptのアクションで追加のファイル(これはアクションをクローンにかかる時間を減らすことなく)を指すことを意味します.最後に
build-and-tag-action
意志extract the major version from your tag - あなただけのタグv1.8.2
抽出するv1
- そして、そのshaを更新しますv1
タグをポイントします.これは、あなたの消費者が依存できることを意味しますv1
そして、まだアクションへのアップデートを取得します.build-and-tag-action
あなたの期待action.yml
含むruns.using: node12
デフォルトでは.これはブランチベースの開発のためのDockerを使用しないようにします.あなたがブランチとノードのためにDockerを使用したいならば、あなたのbuild
スクリプトnpx @vercel/ncc build && npx convert-action
. convert-action
自動的にあなたのaction.yml
ノードランタイムを使用するファイル.例を挙げる
package.json
それはあなたの行動と更新をコンパイルしますaction.yml
一つのコマンドで{
"name": "your-action-name",
"main": "dist/index.js",
"scripts": {
"build": "npx @vercel/ncc build && npx convert-action"
}
}
上記のすべてはあなたが手動でリリースを作成しているか、個人のアクセストークン(PAT)でAPIを使用していると仮定します.リリースを生成するアクションを使用してワークフローを使用している場合はtag_name
呼び出し時入力build-and-tag-action
:- uses: fictional/releaser@v1 # Not a real action!
id: releaser
- uses: JasonEtco/build-and-tag-action@v1
with:
tag_name: ${{ steps.releaser.outputs.tag_name }}
これは、GITHUB_TOKEN
秘密は、ワークフローの実行をトリガしないので、使用する必要がありますbuild-and-tag-action
追加ステップとパスとしてtag_name
入力として.この例ではreleaser
step returns a tag_name
我々が使うことができる出力.
tag_name
is automatically populated for therelease
event, so we do not need to pass any inputs to the workflow. If thetag_name
input is provided, it will override the auto-detection
あなたの行動を繰り返すことができますし、あなたの
main
ブランチと利点の速度の増加から任意のタグのリリースを使用してノードのランタイムを使用してbuild-and-tag-action
走る@vercel/ncc
and convert-action
.加えて
build-and-tag-action
主要なバージョン分岐を保持します.v1
, v2
最新のあなたの行動の最新のマイナーとパッチのバージョンでは、最新の状態に保つためにあなたの消費者のための努力を減らす.私はそれを使用all of my actions そして、あなたもすることをお勧め!便利なリンク
Reference
この問題について(ビルドとタグアクションによるGithubアクションの高速化), 我々は、より多くの情報をここで見つけました https://dev.to/mheap/faster-github-actions-with-build-and-tag-action-701テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol