Google App Script에 CI를 통해 배포

추가



이 기사를 바탕으로 더 나은 환경을 구축한 기사를 작성했습니다.

Google Apps Script에 CI를 통해 배포(1년 반 후)

하고 싶은 일


  • Google App Script 소스 코드를 git 관리하고 싶습니다
  • 해당 코드를 CI를 통해 Google App Script에 배포하고 싶습니다

  • 어떻게 했는지



    node-google-apps-script을 사용하면 Google App Script에 파일을 업로드 할 수 있으므로 CI에서 동일한 작업을 수행합니다.

    CI는 무엇이든 좋지만 이번에는 bitbucket pipelines을 사용했습니다.

    결과적으로 client_secret등을 소스 코드에 포함할 필요가 있었기 때문에, public인 리포지토리의 프로젝트 등에서는 채용할 수 없는 수법이 되어 버렸습니다

    1. node-google-apps-script 설정



    이 기사가 매우 도움이되었습니다.

    GoogleAppsScript 로컬 개발용의 공식 CLI(node-google-apps-script)가 드디어 등장했으므로 시험해 보기
    ぃ tp // 코 m / 자키 야마 / ms / 9 아 301542137 훗 bd8876c

    이 기사대로 준비하면 로컬에서 파일을 업로드할 수 있습니다.
    먼저 로컬에서 업로드할 수 있을 때까지 준비합니다.

    2. ~/.gapps를 리포지토리에 커밋



    이 기사의 간은 이 설정

    기사대로 설정하면 ~/.gapps라는 파일이 생성됩니다.gapps upload 때이 파일을 참조하여 인증하고 있으므로 CI에서도 필요합니다.
    그래서 cp ~/.gapps path/to/repo 등으로 리포지토리에 포함
    .gapps에는 client_secretrefresh_token 등의 정보가 포함되어 있기 때문에, 가능하면 리포지토리에는 포함하지 않고 환경 변수 등으로 제어하고 싶었습니다만, 가볍게 소스 코드를 본 느낌이라고 그렇게 옵션은없는 것 같습니다
  • htps : // 기주 b. 코 m / 헛소리 / 그래서 - 오, ぇ - ps-sc pt #
  • htps : // 기주 b. 이 m / 팍탓이라 / 그래서 - 오, ぇ - ps-sc 리 pt / 음 rch? U tf8 = % 2 % 9C % 93 & q = S Touge_Fu & Ty Pe = 코데

  • 언젠가 풀리크하고 싶은 곳입니다.

    3. CI에서 ~/.gapps를 참조할 수 있도록 합니다.



    bitbucket pipelines의 경우 아래 코드만으로 OK였습니다.

    bitbucket-pipelines.yml
    image: node:4.3.2
    
    pipelines:
      default:
        - step:
            script:
              - npm install
              - npm run upload-from-ci
    
    

    package.json
      "scripts": {
        "upload-from-ci": "cp .gapps ~/.gapps; gapps upload"
      },
    

    리포지토리의 .gapps를 그대로 ~/.gapps에 복사합니다.
    CI는 모두 괜찮다고 썼지만 홈 디렉토리에 쓰기 권한이 없으면 무리입니다 ...

    여기까지 가능하면 CI에서 배포할 수 있습니다!

    주의점



    웹 애플리케이션으로 게시하는 GAS 앱의 경우 소스 코드 업로드만으로 반영되지 않습니다.
    업로드 후 프로젝트 버전을 새로 만들어야 합니다.



    이것은 API도 제공되지 않는 것 같습니다 ...

    트리거로 발화하는 코드에 관해서는 업로드만으로 문제없이 업데이트되는 것 같습니다.

    감상



    GAS 덕분에 서버 준비 불필요로 간편하게 스크립트를 움직일 수는 매우 고마워요!

    이번은 약간의 slack bot를 GAS로 움직이고 있었지만, 조금 코드베이스가 커져 온 타이밍에 git 관리가 되고 싶어지고, 이 방법을 도입했습니다

    시도해 보면 git 관리와 CI 운영을 도입하고 싶은 시점에서 이미 GAS로 움직이기에는 부적절한 규모감일까 느꼈습니다.

    손쉽게 바삭바삭하게 스크립트를 움직일 수 있는 것이 좋은 점이라고 생각하기 때문에, 그 장점을 살릴 수 있는 사용법을 의식해 사용하려고 생각했습니다!

    좋은 웹페이지 즐겨찾기