Github Actions를 이용한 npm publish

Tistory Editor의 빌드와 배포를 Github Actions로 변경한 후 다른 것도 해보고 싶었는데 때마침 tinymce plugin을 수정해야할 일이 생겼다. opengraph플러그인인데 Tistory Editor 소스코드에 포함하지 않았고 npm을 통해서 import하고 있다.

할일은 코드를 수정하고 tag를 만들면 npm install, npm publish를 하는 것이다. 또 npm publish를 할 때 인증처리를 해야한다.

npmpublish.yml

name: Release

on:
  push:
    tags:
      - v*

jobs:
  publish-npm:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - uses: actions/setup-node@v1
        with:
          node-version: 12
          registry-url: https://registry.npmjs.org/
      - run: npm install
      - run: npm publish
        env:
          NODE_AUTH_TOKEN: ${{secrets.npm_token}}

npm publish를 위한 workflow는 electron에 비해 굉장히 간단하다. 먼저 하나의 os에서만 해도 된다. 아무래도 개발/빌드 머신으로는 ubuntu가 좋은 것 같다. checkout은 당연히 하는거고 setup-node를 할때 registry-url을 지정해준다. 원래는 당연히 npmjs 뿐이었지만 지금은 yarn도 있고 github repository도 있으니 명시적으로 지정하는 것이 좋다.

가장 중요한 publish에서의 인증은 생각보다 간단하다. NODE_AUTH_TOKEN란 이름으로 npmjs에서 생성한 토큰을 넣어주면 된다. 이렇게만 하면 끝이다.


이렇게 하고 보니 flutter도 쉽게 할 수 있을 것 같다. flutter 설치와 apk 생성, release에 업로드까지만 하면 되니까... 뭐 play store에 업로드해도 되고. 다음에 수정할때 해봐야겠다.

댓글
  • 프로필사진 임경민 안녕하세요. 글 잘보았습니다. 저도 비슷한 방식으로 글로벌 패키지를 배포하는 Github Action을 사용하고있습니다.
    여기서 궁금한 사항이 해당 깃허브 레포에 pull request를 머지하면 자동으로 push 이벤트가 발생하여 npm previously published versions (package.json의 버전이 동일하다) 에러가 발생합니다. 그걸 해결하는 방안으로 몇가지를 생각해 보았는데요.

    1. pull request 를 제외하는 방법
    2. package.json 캐시를 담아 변경사항이 없으면 시행하지 않는 방법
    어느 방법이 괜찮은지와 혹시 하는법을 아시는지에 대해 궁금합니다. 이상입니다. :)
    2020.01.07 13:42 신고
  • 프로필사진 Joo workflow의 job 수행 조건은 on으로 지정합니다. 저의 workflow에선 'v로 시작하는 tag가 push될 때'가 조건입니다.

    다른 조건은 https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions를 참고하시면 될 것 같네요.
    2020.01.07 21:56 신고
댓글쓰기 폼
«   2020/07   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31