NPM에 Monorepo를 게시하기 위해 GitHub 작업을 설정하는 방법

이 기사에서는 GitHub Actions를 사용하여 모노 리포지토리를 NPM에 자동으로 게시하는 방법을 보여줍니다.

GitHub 작업이란 무엇입니까?



GitHub 작업을 사용하면 푸시, 문제 생성 또는 새 릴리스 생성과 같은 리포지토리 이벤트를 기반으로 워크플로를 자동화할 수 있습니다.
워크플로는 기본적으로 동시에 실행되는 작업으로 구성됩니다. 각 작업은 단계를 사용하여 설명된 워크플로의 별도 부분을 나타내야 합니다.
이 기사의 제안을 위해 패키지를 게시하기 위해 따라야 하는 단계를 설명하는 작업이 하나 있습니다.

구성



repo 설정에서 NPM_AUTH_TOKEN를 설정해야 합니다. 이것은 작업이 NPM에 인증하는 데 사용할 토큰입니다. NPM에서 생성해야 하며 단계에 전달할 수 있도록 비밀(설정 -> 비밀)에 추가할 수 있습니다.

Pro tip: DO NOT put the token directly in your workflow file.


워크플로 파일 만들기



YAML 파일을 만들어 워크플로를 정의합니다.
GitHub 리포지토리 페이지에서 이 파일을 직접 만들 수 있습니다. "작업"탭을 클릭한 다음 "직접 워크플로 설정"을 클릭하기만 하면 됩니다. 생성된 모든 코드를 삭제하고 워크플로 파일의 이름을 바꿀 수 있습니다.
또는 프로젝트 디렉토리에 이 파일을 생성할 수 있습니다. 리포지토리의 루트에서 워크플로 파일을 저장할 디렉터리.github/workflows를 만듭니다. .github/worflows 에서 워크플로에 대한 .yml 또는 .yaml 파일을 추가합니다. 예를 들어 .github/workflows/npm-publish.yml .
워크플로 파일이 생성되면 편집을 시작할 수 있습니다. 먼저 워크플로가 트리거되는 시기를 정의합니다. 예를 들어, 이 워크플로는 변경 사항이 마스터 분기에 푸시되거나 풀 요청이 생성될 때 트리거됩니다.

on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - master

작업과 기계



이제 "게시"작업과 해당 단계를 생성할 차례입니다.
먼저 작업을 실행할 시스템의 이름과 유형을 정의합니다. 원하는 이름을 설정할 수 있습니다. 이 경우 "게시"라고 부를 것입니다. 머신은 GitHub 호스팅 러너 또는 자체 호스팅 러너일 수 있습니다.

on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - master
jobs:
  publish:
    name: Publish
    runs-on: ubuntu-latest

단계



NPM에 패키지를 게시하려면 다음 단계를 따르십시오.

  • 체크아웃: 워크플로에서 액세스할 수 있도록 저장소를 체크아웃합니다.

  • node_modules 캐시: 종속성을 캐시하고 출력을 빌드하여 워크플로 실행 시간을 개선합니다.

  • Git ID: GitHub 작업에 대한 액세스 권한을 부여하여 리포지토리 파일을 수정합니다.

  • 설치: 프로젝트 종속성을 설치합니다.

  • 빌드: 프로젝트를 빌드합니다.

  • 노드 설정: 노드 버전 및 저장소 URL을 설정합니다.

  • 게시: NPM에 패키지를 게시합니다.

  • on:
      push:
        branches:
          - master
      pull_request:
        branches:
          - master
    jobs:
      publish:
        name: Publish
        runs-on: ubuntu-latest
          publish:
        name: Publish
        needs: test
        runs-on: ubuntu-latest
        if: github.event_name == 'push' && github.ref == 'refs/heads/master'
        steps:
          - name: Checkout
            uses: actions/checkout@v2
          - name: Cache node_modules
            id: cache-modules
            uses: actions/cache@v1
            with:
              path: node_modules
              key: 12.x-${{ runner.OS }}-build-${{ hashFiles('package.json') }}
          - name: Git Identity
            run: |
              git config --global user.name 'github-actions[bot]'
              git config --global user.email 'github-actions[bot]@users.noreply.github.com'
              git remote set-url origin https://x-access-token:${GITHUB_TOKEN}@github.com/$GITHUB_REPOSITORY
            env:
              GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          - name: Install
            if: steps.cache-modules.outputs.cache-hit != 'true'
            run: yarn install
          - name: Build
            run: yarn build
          - name: Setup Node ${{ matrix.node_version }}
            uses: actions/setup-node@v1
            with:
              node-version: 14.x
              registry-url: 'https://registry.npmjs.org'
          - name: Publish
            run: yarn publish:all
            env:
              NODE_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}
    

    결론



    이것이 최종 워크플로 파일입니다. 더 많은 작업과 단계를 추가하여 이 워크플로를 개선할 수 있습니다. 예를 들어 코드를 테스트하거나 다른 환경에서 프로젝트를 실행합니다.

    좋은 웹페이지 즐겨찾기