GitHub Actions를 사용하여 Nuget 패키지를 자동으로 게시

소개



GitHub Actions를 사용하여 Nuget으로 푸시를 자동화하는 방법을 살펴 보았을 때의 메모입니다.

참고



아래 기사의 「Publish NuGet Package」장의 내용을 메인으로 실제로 움직이면서 조사했습니다.
htps : //네 t〃센신 g. 메 m. 코 m / 푸 b ぃ sh - 젖꼭지 t 빠 c 가게 s ushin g-gi te b-a c chion s-9 ac5 97d07d4

절차



① ".github\workflows" 내에 YAML 파일을 만든다.



다음은 Nuget 푸시를 수행하는 YAML 파일입니다.

workflow_run에 실행 조건을 설명합니다. 자세한 내용은 아래에 나와 있습니다.
  • workflow_run : 특정 workflow가 완료되거나 호출되면 호출되는 이벤트 트리거
  • workflows:["Build"]: workflows에 등록한 Build 작업 뒤에 수행합니다.
  • branches:[ main ]:main 브랜치에서 workflows 액션이 발생했을 때 실행합니다.
           (다른 브랜치는 대상외가 된다)
  • types: - completed: workflows에 지정된 작업이 완료 시 실행됩니다.


  • 말미의 with: 이하의 내용이 중요한 곳이므로 나중에 설명합니다.
    jobs의 내용에 대해서는 참고로 한 기사와 같은 내용이므로, 그쪽을 참조해 주세요.
    (Build 자동화에 대한 자세한 내용은 참고 기사의 "Create Actions Workflow"장을 참조하십시오)
    name: Publish - Nuget
    
    on:
      workflow_run:
        workflows: ["Build"]
        branches: [ main ]
        types:
          - completed
    
    jobs:
      publish-nuget:
    
        runs-on: ubuntu-latest
    
        steps:
        - uses: actions/checkout@v2
        - name: Setup .NET
          uses: actions/setup-dotnet@v1
          with:
            dotnet-version: 3.1.x
        - name: Install dependencies
          run: dotnet restore
          working-directory: src/SlackNotification
        - name: Build
          run: dotnet build src/SlackNotification/SlackNotification.sln --no-restore
        - name: Publish to NuGet
          uses: brandedoutcast/publish-nuget@v2
          with:
            PROJECT_FILE_PATH: src/SlackNotification/SlackNotification.csproj
            VERSION_REGEX: '^\s*<PackageVersion>(.*)<\/PackageVersion>\s*$'
            TAG_FORMAT: '*'
            NUGET_KEY: ${{secrets.NUGET_API_KEY}}
    

    ② Nuget의 API 키를 작성한다.



    Nuget에 대한 공개 요청을 인증하는 데 필요합니다.
    (API 키를 작성할 때, 자동 공개하고 싶은 Nuget 패키지를 1번은 업로드해 두지 않으면 키를 관련짓는 대상으로 선택할 수 없기 때문에 주의)
    오른쪽 상단의 계정 정보에서 API Keys를 선택하고 Create에서 생성


    아래와 같이 설정하여 작성한다.



    생성 후 API 키를 어딘가에 복사합니다. (작성한 타이밍에서만 확인할 수 있기 때문에)

    ③YAML 파일의 with: 이하의 내용을 기재한다.


          with:
            PROJECT_FILE_PATH: src/SlackNotification/SlackNotification.csproj
            VERSION_REGEX: '^\s*<PackageVersion>(.*)<\/PackageVersion>\s*$'
            TAG_FORMAT: '*'
            NUGET_KEY: ${{secrets.NUGET_API_KEY}}
    
    PROJECT_FILE_PATH는 프로젝트 파일을 지정하지만 csproj는 Nuget 입력 항목이 될 요소를 설명해야합니다.
    VERSION_REGEX는 프로젝트 파일의 PackageVersion 내용을 정규식으로 검색합니다.
    PackageVersion만을 앞으로도 수동으로 업데이트해야 합니다.
    NUGET_KEY${{secrets.NUGET_API_KEY}}를 지정하지만 Git Setting의 Secrets에 지정된 환경 변수를 가져옵니다.
    Git Settings에서 Secrets Repository secrets로 Nuget API 키를 설정합니다. 오른쪽 상단의 New repository secret에서 추가할 수 있습니다.



    여기까지 설정할 수 있으면 main 브랜치에 푸시했을 때에 Nuget에 자동 공개됩니다.

    좋은 웹페이지 즐겨찾기