Github Actions と jira を連携してイケイケな開発ライフを実現する

#概要
jiraを利用することでタスクをチケットという形で発行することが出来ます。
githubを組み合わせることで効率的に開発をすすめることが出来るのでそのやり方を書きます。

#jiraの設定

まずはjiraの登録を済ませていきます。(参考記事1が読みやすかったです。)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/656158/c8052879-11e6-82c7-5084-f9178061150d.png)

次に上の歯車マークからアプリを選択してgithub for jiraを選択します。(下の画像)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/656158/3d3a77da-ed6b-381b-e699-7e999e778f60.png)

#githubの設定

github actionsを登録していきます。

githubの対象のリポジトリに移動してメニューからActionsに移動して、以下の画像の中のいずれかを選択して適当にベースとなるgithub actionsのworkflowsファイルを作成します。作成したら下にstart commitというボタンがあるのでクリックしてgithub actionsを有効にします。

↓この中から選ぶ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/656158/0ea93251-359e-8127-2f2c-28134fdf0356.png)

↓何も変えずに
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/656158/9c3e0794-cbf2-c095-a7b2-471381ce2e9a.png)


##issueの作成
まずは、issueの作成をします。

流れとしては、以下のようになります。
jiraへログイン→issueからチケットの発行

コードは以下を参考にしました(てか解説以外同じ)

```
name: Create issue

# githubのissueが開かれたときに作動(type->[colosed]で湿られたとき)
on:
  issues:
  push:
    types: [opened]

#ここからworkflow
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:
        # 付けたいチケット名を選択(jiraのAPItokenのlabelに合わせる)
        project: {プロジェクト名}
        # 課題タイプを指定
        issuetype: Task
        # issuesのタイトルが要約になるように設定
        summary: ${{ github.event.issue.title}}
        # issuesの本文が説明になるように設定
        description: ${{ github.event.issue.body}}
```

envに関してはSettings -> Secretsより設定ができる。

・JIRA_BASE_URLについては、jiraのプロジェクトまで行ってから検索バーからurlをコピーして以下まで切り抜けば良い。

`https://{登録した名前}.atlassian.net`

・JIRA_USER_EMAILは登録したメール・アドレスでjiraのタスク画面から自分のアイコンをクリックしてプロフィールから確認できる。

・JIRA_API_TOKENは以下のサイトから発行することが出来る。
https://confluence.atlassian.com/cloud/api-tokens-938839638.html

##taskの移動

実際にブランチにpushしたときに自動的にタスクの進行度が変わるgithub actionsを実装します。

基本的にはmasterブランチへpushされたときにタスクを完了にして、developブランチなどmasterブランチ以外へpushされたときにタスクを進行中にするなどが良いでしょう。
これらを考慮したworkflowはいかのようになります。

↓master以外のブランチへpushされたとき

```:.github/workflows/transition-all.yml
on:
  push:
    branches:
    - '*'
    - '!master'

name: Transition Issue for progress

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: "進行中"
```

masterブランチへpushされたとき

```:.github/workflows/transition-master.yml
# マスターブランチにpushされたとき
on:
  push:
    branches:
      - master

name: Transition Issue for complete

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: "完了"
```

これらのファイルを作成した後githubにpushすると以下のように作成したタスクがバックログから進行中に移動していることがわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/656158/ba755b58-27d4-e31d-7b94-29bac1161fdd.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/656158/a218df16-19a6-988a-dccf-978e3d07500b.png)

これらを取り入れることでやった感もでるし、イケてるプロジェクトを回している感じも出るのでおすすめです。

jiraを取り入れてよい開発ライフを送りましょう！

#参考記事

1.[Jira Software クラウド版 Free プランの申し込み手順](https://qiita.com/kolinz/items/2fef0a3c3dad449f2c0f)

2.[github actions sample](https://github.com/marketplace?type=actions&query=Jira)

3[github actions branchごとの設定](https://stackoverflow.com/questions/58139406/only-run-job-on-specific-branch-with-github-actions)