こんにちは、.ごっちです。
タイトルの通り、GitHub Actionsを使って、自動でPullRequestを送れる仕組みを作りました。
試したリポジトリ
YutaGoto / salmon_run
Splatoon2のサーモン・ランブキ変遷
salmon_run
Splatoon2のサーモンラン ブキ変遷
このリポジトリは非公式のもので、完全に個人的な趣味で作っているものです。
Spec
- Ruby version: 2.6.1
- Rails version: 5.2.3
- PostgreSQL version: 10.5
- yarn version: 1.13.0
- Vue: v2.5.17
- uikit: 3.0.0-rc.25
- elasticsearch: 5.6.14
- graphql: 1.9.3
tools
サーモンラン とは
活動報告
Blog List
- Rails5の練習をしている件
- Rails5の練習をしている件2
- Rails5の練習をしている件3
- Rails5の練習をしている件4
- Rails5の練習をしている件5
- Rails5の練習をしている件6
- Rails5の練習をしている件7
- Rails5の練習をしている件8
- Rails5の練習をしている件9
- Rails5の練習をしている件10
- Rails5の練習をしている件11
- Rails5の練習をしている件12
- Rails5の練習をしている件13
- Rails5の練習をしている件14
- Rails5の練習をしている件15
- Rails5の練習をしている件16
- Rails5の練習をしている件17
- Rails5の練習をしている件18
番外編
Contributing
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
License
MIT
PullRequest
https://github.com/YutaGoto/salmon_run/pull/383
コード
# .github/main.workflow
workflow "create Master <- develop Pull Request" {
on = "push"
resolves = ["Create Pull Request"]
}
action "Filter develop branch only" {
uses = "actions/bin/filter@master"
args = "branch develop"
}
action "Create Pull Request" {
uses = "./.github/actions"
needs = ["Filter develop branch only"]
secrets = [
"GITHUB_TOKEN"
]
env = {
PULL_REQUEST_TITLE = "Actions sync master <- develop"
PULL_REQUEST_BODY = "From GitHub Actions"
BASE_BRANCH = "master"
HEAD_BRANCH = "develop"
}
}
図解
ちょっと解説
workflow "create Master <- develop Pull Request" {
on = "push"
resolves = ["Create Pull Request"]
}
workflowそのものを定義します。このworkflowはなにかしらリポジトリに push
されたタイミングで実行されます。 最初に Create Pull Request
を実行します。
action "Create Pull Request" {
uses = "./.github/actions"
needs = ["Filter develop branch only"]
secrets = [
"GITHUB_TOKEN"
]
env = {
PULL_REQUEST_TITLE = "Actions sync master <- develop"
PULL_REQUEST_BODY = "From GitHub Actions"
BASE_BRANCH = "master"
HEAD_BRANCH = "develop"
}
}
actionを定義しています。ここで実際にPullRequestを作成する処理をします。
ただその前に Filter develop branch only
を通過させる必要があります。
それが通過したら、 .github/actions
のディレクトリ内にある Dockerfile
に基づいて実行をします。 Dockerfile
や entrypoint.sh
の中身については別の記事で書きます。
action "Filter develop branch only" {
uses = "actions/bin/filter@master"
args = "branch develop"
}
下のリポジトリにあるものを参照します。このactionでpushされたブランチがdevelopかどうかを判定します。developブランチでなければそのあとのactionは実行しません。
bin
GitHub collection of useful utilities for interacting with GitHub Actions.
Usage
Usage information for individual commands can be found in their respective directories.
License
MIT. Please see additional information in each subdirectory.
実行結果
所感
いままで、自分の手でdevelopブランチからmasterブランチにPullRequestを送っていたのですが、このあたりも自動化できることを知って試してみました。
これでわりと面倒な作業がひとつ減った感じでよいです。。
仮に業務で使える感じかなーという思いはあります。例えばdevelopブランチから作業ブランチを生やして、マージされたら自動でmasterやstaging用のブランチに対して自動でPullRequestを送る仕組みとかとかです。
masterやstagingブランチにmergeされたら自動でdeployまでいけると完璧です。(まだやれていません。
Top comments (0)