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 ヘルプ
GitHub Actions では、カスタムソフトウェア開発のライフサイクル (SDLC) にわたるワークフローを GitHub リポジトリに直接作成することができます。
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

toolmantim/release-drafter
Drafts your next release notes as pull requests are merged into master. - toolmantim/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 auto release GitHub Actions. Contribute to technote-space/release-github-actions development by creating an account on GitHub.

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

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 Action 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 Help
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 で使用するアクションはブランチ名やタグ名などを指定可能ですが、タグ名とブランチ名が同じ場合、タグ名が優先されるようです。

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

ワークフローの追加

ワークフローを定義したyamlファイルをpushすることはできないようです。

SourceTree などで生成された Token は remote rejected になって失敗します。

 ! [remote rejected] test -> test (refusing to allow an integration to create or update .github/workflows/gh_releases.yml)

GitHubのリポジトリのページの Actions タブに行き『Add a new workflow』から追加、『Edit workflow』から編集可能です。

すでに .github/workflows ディレクトリがある場合は .github/workflows のページの Upload files から一度に複数のワークフローを追加可能です。

2019/10/4 追記

リポジトリに対して適切な権限があればプッシュできるようです。

Configuring a workflow - GitHub Help
You can create, view, or edit workflows for a repository if you have write or admin permissions to the repository. You can customize your workflow configuration...

数値の扱い

以下のように 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 を使用します。

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

Software installed on GitHub-hosted runners - GitHub ヘルプ
This article is a reference for the packages and tools available in GitHub-hosted virtual environments.

その他もろもろ

バッジ

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

Configuring a workflow - GitHub Help
You can create, view, or edit workflows for a repository if you have write or admin permissions to the repository. You can customize your workflow configuration...

コメント

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