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 ヘルプ
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 Action to auto release GitHub Action. Contribute to technote-space/release-github-actions development by creating an account on GitHub.

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

TOC Generator

technote-space/toc-generator
GitHub Action to generate TOC. Contribute to technote-space/toc-generator development by creating an account on GitHub.

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

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 に登録します。

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

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

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

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

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

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

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

バージョン

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

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

ワークフローの追加

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

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 に行き、Upload files から一度に複数のワークフローを追加可能です。

数値の扱い

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

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

GitHub Actions の仮想環境でのソフトウェア - GitHub ヘルプ

その他もろもろ

バッジ

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

Configuring a workflow - GitHub Help

コメント

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