GAS에서 JIRA에서 버전 목록을 얻는 방법

JIRA로 버전을 관리하고 있지만, 어느 버전이 언제 릴리스 예정인지를 다른 시스템(예를 들어 스프레드시트나 Slack)로 확인하고 싶은 것이 있군요.
그럴 때, GAS를 사용해 JIRA의 REST API를 두드려 정기적으로 버전 일람을 취해 이것하면 편리합니다.
그래서 GAS에서 JIRA에서 버전 목록을 얻기위한 프로그램을 작성해 보았습니다.

절차


  • GAS 프로젝트 만들기
  • /rest/auth/1/session로 로그인
  • /rest/api/2/project/{projectIdOrKey}/versions 에서 버전 목록 얻기

  • GAS 프로젝트 만들기


  • Google 드라이브 새로 만들기를 클릭


  • 더보기


  • Google Apps Script 클릭



  • 먼저 위의 단계에 따라 Google Apps Script 프로젝트를 만듭니다.

    /rest/auth/1/session으로 로그인



    만든 프로젝트의 gs 파일에 다음 함수를 만듭니다.
    /**
     * ログインしてセッションIDを取得する関数
     *
     * @param username ログインするユーザ名
     * @param password パスワード
     * @param host アクセスするJIRAのURL(https://jira-host.co.jp的な感じ)
     * @return 取得したセッションID
     */
    function getJIRASessionID(username, password, host) {
      const body = {
        username: username,
        password: password
      };
      const headers = {
        Accept: "application/json"
      };
      const options = {
        payload: JSON.stringify(body),
        muteHttpExceptions: true,
        contentType: "application/json",
        headers: headers,
        method: "post"
      };
      const response = UrlFetchApp.fetch(
        host + "/rest/auth/1/session",
        options
      );
      const responseHeaders = response.getAllHeaders();
      let cookies = [];
      if (typeof responseHeaders["Set-Cookie"] !== "undefined") {
        cookies =
          typeof responseHeaders["Set-Cookie"] == "string"
            ? [responseHeaders["Set-Cookie"]]
            : responseHeaders["Set-Cookie"];
        for (var i = 0; i < cookies.length; i++) {
          cookies[i] = cookies[i].split(";")[0];
        }
      }
      return cookies[0];
    }
    

    이 함수는 Jira Server platform REST API reference에서 session-login 항목 에 있는 API를 두드려 반환된 헤더의 쿠키를 반환하는 함수입니다.
    이 함수의 반환 값을 다음 요청의 헤더에 넣어 로그인 상태를 상속받습니다.
  • /rest/api/2/project/{projectIdOrKey}/versions 에서 버전 목록 얻기

  • 그런 다음 마찬가지로 만든 프로젝트의 gs 파일에 다음 함수를 만듭니다.
    /**
     * バージョン一覧を取得する関数
     *
     * @param projectIdOrKey プロジェクトIDまたはプロジェクトKey
     * @param cookie getJIRASessionIDで取得した値を入れる
     * @param host アクセスするJIRAのURL(https://jira-host.co.jp的な感じ)
     * @return 取得したバージョン一覧
     */
    function getVersions(projectIdOrKey, cookie, host) {
      const options = {
        headers: { cookie: cookie }
      };
      const response = UrlFetchApp.fetch(
        host + "/rest/api/2/project/" + projectIdOrKey + "/versions",
        options
      );
      const parse = JSON.parse(response);
      return parse;
    }
    

    이 함수는 Jira Server platform REST API reference에서 project-getProjectVersions 항목 에 있는 API를 두드려 반환된 JSON을 구문 분석한 다음 반환하는 함수입니다.
    예를 들어 이 함수의 반환값을 스프레드시트에 전개하거나 하는 것으로, JIRA로 할 수 없는 여러가지 일을 할 수 있게 됩니다.

    사용법



    JIRA의 URL과 사용자 이름/비밀번호를 고정으로 넣고 프로젝트 키를 외부에서 넣을 수 있도록 하고 이 프로젝트를 라이브러리로 다른 GAS에서 가져와서 사용하고 있습니다.
    라이브러리로 하는 방법은 다른 기사에도 있다고 생각하므로 자세한 것은 생략합니다만, 파일>버전 관리>Save new version을 클릭해, 버전을 붙여 두면 다른 프로젝트의 리소스>라이브러리로부터 임포트가 가능 입니다.
    JIRA를 사용하는 것은 아마도 개인이 아니라 회사라고 생각하기 때문에 사용자 이름/암호를 시스템 용으로 만든 계정으로 지정하는 것이 더 좋습니다.

    좋은 웹페이지 즐겨찾기