GitHub Actions で作業を効率化

ツール

最近CI/CDサービスが標準サポートされると発表されたGitHub Actionsですが、いろいろ試してわかった注意点などをまとめておきます。

色々試したリポジトリ

technote-space/test-github-actions
Test GitHub Actions. Contribute to technote-space/test-github-actions development by creating an account on GitHub.

参考リンク

GitHub Actions について学ぶ - GitHub Docs
GitHub Actions を初めて使用する場合も、そこで提供されているすべての項目を学ぶ場合も、このガイドは、GitHub Actions を使用してアプリケーション開発ワークフローを促進する際に役立ちます。
sdras/awesome-actions
A curated list of awesome actions to use on GitHub - sdras/awesome-actions

試したアクション

GitHub Project Automation+

alex-page/github-project-automation-plus
🤖 Automate GitHub Project cards with any webhook event - alex-page/github-project-automation-plus

Issue や Pull Request を作成した際に GitHub Project に自動でアサインしてくれます。

PR Labeler

TimonVS/pr-labeler-action
Automatically labels your PRs based on branch name patterns like feature/* or fix/*. - TimonVS/pr-labeler-action

Pull Request の名前で Label をつけてくれます。

Pull Request Labeler

actions/labeler
An action for automatically labelling pull requests - actions/labeler

Pull Request に含まれるファイル名で Label をつけてくれます。

Release Drafter

release-drafter/release-drafter
Drafts your next release notes as pull requests are merged into master. - release-drafter/release-drafter

前回のReleaseから今までに含まれる Pull Request から GitHub Release の下書きを自動生成してくれます。

Action Slack

8398a7/action-slack
Provides the function of slack notification to GitHub Actions. - 8398a7/action-slack

Slackに結果を通知してくれます。

試せるアクション

Marketplace にいろいろあります。

GitHub Marketplace: actions to improve your workflow
Find the actions that help your team build better, together.

作成したアクション

Release GitHub Actions

technote-space/release-github-actions
GitHub Actions to automate GitHub Actions releases - technote-space/release-github-actions

GitHub Actions を公開する際に必要なフローを自動化します。

TOC Generator

technote-space/toc-generator
GitHub Actions to generate TOC (Table of Contents) - technote-space/toc-generator

目次の作成を自動化します。

Auto card labeler

technote-space/auto-card-labeler
GitHub actions to auto label a pull request or an issue based on project card move - technote-space/auto-card-labeler

GitHub Project のカードの移動で Label の付け外しを行います。

Assign Author

technote-space/assign-author
GitHub Actions to assign author to issue or PR. Contribute to technote-space/assign-author development by creating an account on GitHub.

Issue や Pull Request の作成者を Assignees に登録します。

設定した結果

プルリクエスト

赤で囲んだ箇所は GitHub Actions によって設定されたものです。

手動で何もしなくてもラベルなどが勝手に付与されます。

CI

プッシュの度にCIを回すことができます。

Branch protection と組み合わせることで、すべてのチェックが通るまでマージできなくすることが可能です。

About protected branches - GitHub Docs
Protected branches ensure that collaborators on your repository cannot make irrevocable changes to branches. Enabling protected branches also allows you to enab...

GitHub Releases

いい感じに下書きを作成してくれます。

人間がやることは下書きを確認し、必要であれば修正して Publish release ボタンを押すだけです。

目次作成

Readme.md の目次も自動で作成できます。

項目を追加・編集・削除した場合もそれに従って更新されます。

アクション作成時の注意点

公開する際に必要なファイル

JavaScript版の話ですが、公開して使用してもらうためには、すべての依存モジュールやビルドされたファイルが必要です。

これによってアクション実行時はビルド等の時間が無くなり、これまでのDocker版よりも非常に起動が速くなっています。

通常、開発用のブランチには node_modules や ビルドしたファイルはコミットしませんが、ワークフローで使用してもらうためにはなくてはなりません。

そのため、開発用とは別に公開用ブランチを作成し、リリースのタイミングでビルドしてタグをつける作業が必要です。

Release GitHub Actions はそれらのフローを自動化します。

バージョン

ワークフローの uses で使用するアクションはブランチ名やタグ名などを指定可能ですが、タグ名とブランチ名が同じ場合、タグ名が優先されるようです。

アクション使用時の注意点

数値の扱い

以下のように matrix ビルドでPHPのバージョンを指定すると正しく動作しません。

    strategy:
      matrix:
        php: [7.0, 7.3, 5.6]

7.0 は 7 として扱われるためです。

文字列にすることで正しく動作させることが可能です。

    strategy:
      matrix:
        php: ['7.0', '7.3', '5.6']

古いPHPを使用

ubuntu-latest には PHP5.6 や PHP7.0 はインストールされていません。

それらを使用する場合は ubuntu-16.04 を使用します。

使用可能なソフトウェアは以下のページで確認できます。

https://help.github.com/ja/articles/software-in-virtual-environments-for-github-actions

その他もろもろ

バッジ

公式にサポートされています。

Learn GitHub Actions - GitHub Docs
Whether you are new to GitHub Actions or interested in learning all they have to offer, this guide will help you use GitHub Actions to accelerate your applicati...

コメント

タイトルとURLをコピーしました