この記事は セゾン情報システムズ Advent Calendar 2020 11日目の記事です。
最近Actions熱が高まっており、いろいろと触って遊んでみました。
手始めに、ニーズがあるかというと微妙な感じですが、ActionsとJiraを連携させてみました。
利用したActions
Marketplaceに公開されていたAtlassian公式のActionsを利用させていただきました。
事前準備
- Github.comに任意のリポジトリを作成する
- Jira Cloudに任意のプロジェクトを作成する
※両方Freeプランで利用可能です
環境変数(Secret)を設定
Actionsから利用するSecretをリポジトリの「Settings」→「Secrets」に追加する
- JIRA_API_TOKEN
- JIRA_BASE_URL
- JiraインスタンスのURL。 例:https://{yourdomain}.atlassian.net
- JIRA_USER_EMAIL
- アクセストークンを作成したユーザーのメールアドレス
Githubにissuesが作成されたらJiraのタスクを起票する
「Actions」タブの「New workflow」から新規ワークフローを作成
name: Jira Example
on:
issues:
push:
types: [opened]
jobs:
build:
runs-on: ubuntu-latest
name: Jira Example
if: github.event.action == 'opened'
steps:
- name: Login
uses: atlassian/gajira-login@master
env:
JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }}
JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }}
JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
- name: Jira Create issue
uses: atlassian/gajira-create@v2.0.1
with:
# プロジェクトキーを指定
project: AC
# 課題タイプを指定
issuetype: Task
# issuesのタイトルが要約になるように設定
summary: ${{ github.event.issue.title}}
# issuesの本文が説明になるように設定
description: ${{ github.event.issue.body}}
変更がプッシュされたら課題を「進行中」に遷移させる
今作ったisssuesに対応したソースコードをプッシュした際にJira側のタスクもステータスを遷移してもらいます。
もう一つワークフローを作成
on:
push
name: Transition Issue
jobs:
test-transition-issue:
name: Transition Issue
runs-on: ubuntu-latest
steps:
- name: Login
uses: atlassian/gajira-login@master
env:
JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }}
JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }}
JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
# プッシュされたコミットに記載された課題キーを抽出する
- name: Find in commit messages
id: find
uses: atlassian/gajira-find-issue-key@master
with:
string: ${{ github.event.ref }}
# 課題キーが特定できればJiraに対してトランジションを発行
- name: Transition issue
uses: atlassian/gajira-transition@master
# 課題キーが含まれていなければスルー
if: ${{ steps.find.outputs.issue }}
with:
# 前のステップのアウトプットを参照
issue: ${{ steps.find.outputs.issue }}
transition: "進行中"
ブラウザで適当にREADME.mdを更新してコミット
※本来はローカルでちゃんとブランチ切ってPRを出しましょうw
コミットメッセージに先程作成された「AC-4」という課題キーを含める
おわりに
今回試した機能はJiraのGithub用アドオン、スマートコミットでもできることではありますが、他にも面白い連携(コード内のTODOコメントを検知して課題を作成したり)がありますので引き続き触ってみようと思いました。
またGithub内の豊富なトリガーから起動できる点はアドオンには再現できないので、もっとユースケースが増えていくことを期待します。