Github Actions에서 Jira Cloud와 협력해 보았습니다.

이 기사는 세종 정보 시스템 Advent Calendar 2020 11일째 기사입니다.

최근 Actions 열이 높아지고 있어 여러가지 만져 놀아 보았습니다.
시작에, 필요가 있을까라고 하면 미묘한 느낌입니다만, Actions와 Jira를 제휴시켜 보았습니다.

사용한 Actions



Marketplace 에 공개되어 있던 Atlassian 공식의 Actions를 이용하였습니다.
  • Jira Login
  • Jira Create issue
  • Jira Find issue key
  • Jira Issue Transition

  • 사전 준비



  • 의투 b. 작은 m에 리포지토리 만들기
  • Jira Cloud에 임의의 프로젝트 만들기
    ※ 둘 다 무료 플랜에서 사용할 수 있습니다

  • 환경 변수 (Secret) 설정



    Actions에서 사용하는 Secret을 리포지토리의 Settings → Secrets에 추가

  • JIRA_API_TOKEN
  • 취득 방법

  • JIRA_BASE_URL
  • Jira 인스턴스의 URL. 예: https://{yourdomain}.atlassian.net

  • JIRA_USER_EMAIL
  • 액세스 토큰을 만든 사용자의 이메일 주소


  • Github에 이슈가 생성되면 Jira의 작업을 기표



    Actions 탭의 New workflow에서 새 워크플로 만들기

    create-issues.yml
    
    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/[email protected]
          with:
            # プロジェクトキーを指定
            project: AC
            # 課題タイプを指定
            issuetype: Task
            # issuesのタイトルが要約になるように設定
            summary: ${{ github.event.issue.title}}
            # issuesの本文が説明になるように設定
            description: ${{ github.event.issue.body}}
    

    issues를 만들어 보면. . .


    워크플로우가 움직이기 시작. . .


    Jira에 작업이 만들어졌습니다! !


    변경이 푸시되면 과제를 '진행 중'으로 전환



    지금 만든 isssues에 대응한 소스 코드를 푸시했을 때에 Jira측의 태스크도 스테이터스를 천이해 달라고 합니다.

    다른 워크플로 만들기

    transition-issues.yml
    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용 애드온 했다.

    또 Github내의 풍부한 트리거로부터 기동할 수 있는 점은 애드온에는 재현할 수 없기 때문에, 보다 유스 케이스가 늘어나는 것을 기대합니다.

    좋은 웹페이지 즐겨찾기