GitHub 작업을 사용하여 업데이트합니다.NET 종속성 자동 생성

5800 단어 nugetcigithubdotnet
이것은 시간만큼 오래된 이야기이다. 소프트웨어 엔지니어로서 코드를 작성했고, 그것에 만족해서 그것을 건네주었다.이야기는 끝났죠?더 이상 해야 할 일이 없다!여느 때와 마찬가지로 처리해야 할 층이 많은데 그중의 한 층은 유지보수...우우!!!
나는 이것이 가장 놀라운 화제가 아니라는 것을 알고 있지만, 그것은 나를 위해 현실 세계의 문제를 해결했고, 나도 너희들 중 일부를 희망한다.
저는 백엔드 엔지니어로 C#를 많이 썼습니다. 이것은 제가 최종적으로 얻은 해결 방안이 NuGet 소프트웨어 패키지에 의존한다는 것을 의미합니다.이것들은 확실히 수시로 업데이트가 필요하다. 왜냐하면 다른 엔지니어들이 놀라운 일을 하고 있기 때문이다. 왜냐하면 그들의 소프트웨어 패키지를 최신으로 유지하고 있기 때문이다. 나는 나의 의존 관계를 최신으로 유지하는 것을 좋아한다.이것이 바로 내가 자신의 문제점을 발견한 것이다. 지점을 만들고 가방을 갱신하고 제출한 다음에 홍보 승인을 받아야 한다. 단지 작은 업데이트를 통과하기 위해서이다.이것은 매우 짜증나니, 나는 이 문제를 해결하고 싶다.
우리가 시작하기 전에, 이 지시들은 나에게 준 것입니까?
  • 서면 해결 방안이 있습니다.NET... 명령은 의 코드에만 적용됩니다.그물
  • 코드가 이미 있거나 Github에서 이 솔루션을 호스팅할 예정입니다.그래서 너는 동작을 사용할 수 있다.
  • NuGet 패키지를 업데이트하고 싶다면 엔지니어가 일을 하거나 하지 않을 정당한 이유가 있다면 스트레스가 없습니다.나는 소프트웨어 패키지를 최신식으로 유지하거나, 최소한 의존항 업데이트로 인해 변경이 필요할 때 나에게 알려주는 것을 좋아한다.
  • 만약 네가 여기에 있다면, 나와 함께 일할 때가 되었다. 행동은 많은 업무 절차를 촉발할 수 있다.가장 흔히 볼 수 있는 것은 프로젝트를 위한 파이프라인을 구축하고 발표하는 것입니다.우리 문제의 답도 행동 속에 존재한다.새로운 것을 창조할 때가 되었다.
  • 선택한 GitHub 저장소로 이동
  • 선택 작업 탭
  • 새 워크플로우 버튼 클릭
  • 모든 템플릿을 무시하고 워크플로우 직접 설정
  • 을 선택합니다.
  • 모든 샘플 코드를 삭제합니다.

    1단계: 계획 작업 만들기


    이것은 가장 간단한 부분이며, 이 조작은 매주 한 번 실행될 것이다.너는 자신의 의사에 따라 스케줄을 바꿀 수 있다.GitHub 작업은 완전히 제 시간에 실행되지는 않지만 실행할 수 있습니다.계획 작업과 설정 계획에 대한 더 많은 정보는 GitHub Documentation을 읽고 Crontab Guru에서 예시를 보십시오.
    name: Automated Dependency Updates
    on:
        schedule:
            - cron:  '0 0 * * 0'
    

    2단계: 작업 설정


    이어서 우리는 일을 시작한다.이것이 바로 우리가 운행할 절차를 정의하는 곳이다.이 작업은 최신 버전의 Ubuntu에서 실행됩니다.다음은 기본 actions/checkout 단계와 설치할 actions/setup-dotnet 버전을 설정합니다.Dell 솔루션에 필요한 NET SDK필요해.이 일은 순익이 6점이다.너는 반드시 AUTOMATED_DEPENDENCY_UPDATES_TOKEN이 계산할 때의 영패를 바꾸었다는 것을 알아차렸을 것이다. 이것은 5단계에서 매우 편리하다. 나는 아래가 무엇인지 설명할 것이다.
        dependencies: 
            name: Update Dependencies
            runs-on: ubuntu-latest
    steps:
        - name: Checkout
          id: checkout
          uses: actions/checkout@v2
          with:
              token: ${{ secrets.AUTOMATED_DEPENDENCY_UPDATES_TOKEN }}
        - name: Setup
          uses: actions/setup-dotnet@v1
          with:
              dotnet-version: 6.0.x
    

    3단계: 종속성 업데이트


    NuGet 패키지를 업데이트하는 기본 단계입니다.먼저 dotnet-outdated tool을 설치한 다음 추가 조치가 필요한지 확인해야 합니다.만약 우리가 dotnet outdated을 실행하고 업데이트할 가방이 없다면, 우리는 이 작업의 나머지 절차를 취소해야 한다.
    이것은 완성할 수 있지만 검증 단계에서 출력 변수를 설정하면 작업 중의 다른 모든 단계에서 이 변수를 사용하여 실행해야 하는지 여부를 확인할 수 있습니다.업데이트가 없으면 출력 변수를 false으로 설정합니다.
    업데이트를 진행하는 경우 dotnet outdated -u을 실행하여 NuGet을 강제로 업데이트합니다.성공하면 다음 절차를 실행하기 위해 출력 변수를 true으로 설정합니다.
    - name: Tools
      id: tools      
      run: dotnet tool install --global dotnet-outdated-tool     
    - name: Update      
      id: update      
      run: |        
          OUTPUT=$(dotnet outdated)        
          if [[ $OUTPUT =~ "No outdated dependencies" ]]; then
              echo "::set-output name=updated::false"        
          else            
              dotnet outdated -u                    
              echo "::set-output name=updated::true"        
          fi      
      shell: bash
    

    4단계: 테스트 실행


    NuGet 패키지를 업데이트한 후 코드가 손상되지 않았는지 확인해야 합니다.이 점을 실현하는 가장 좋은 방법은 해결 방안을 구축하고 테스트하는 것입니다.이것은 해결 방안에서 모든 테스트를 실행하는 간단한 dotnet test 명령입니다.필요에 따라 이 문장을 업데이트할 수 있습니다. 기본적으로 모든 테스트를 실행해야 합니다.
    - name: Test
      id: test
      if: ${{ steps.update.outputs.updated == 'true' }}
      run: dotnet test -c Release -v minimal
    

    5단계: 제출 및 푸시


    마지막 단계는 NuGet 패키지 업데이트를 커밋하고 푸시하는 것입니다. 테스트가 통과되면 이 절차를 실행하고 자동 패키지 업데이트를 완료합니다.우리가 결산 단계에서 AUTOMATED_DEPENDENCY_UPDATES_TOKEN을 사용할 때, 이것은 내장된 GITHUB_TOKEN이 후속 작업 흐름을 촉발하지 않는다는 사실을 빙빙 돌려서 하기 위해서이다.코드를 체크 아웃할 때 특정한 Personal Access Token을 생성하면 코드를 전송한 후 다른 자동 작업 흐름이 있으면 터치합니다.
    마지막으로, 우리는 제출 메시지와 저자를 설정합니다.이렇게 하면 설정 작업이 아닌 GitHub 작업 사용자에 대한 등록이 제출됩니다.
    - name: Push
      id: push
      if: ${{ steps.update.outputs.updated == 'true' }}
      uses: stefanzweifel/git-auto-commit-action@v4
      with:
          commit_author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
          commit_user_name: github-actions[bot]
          commit_user_email: 41898282+github-actions[bot]@users.noreply.github.com
          commit_message: Automated Dependency Updates
    

    우리 망했어!


    이제 다른 저장소에서 사용할 수 있도록 모든 절차를 간단한 요점에 두겠습니다.이것도 네가 이 무료한 임무를 자동화하는 데 도움을 줄 수 있기를 바란다.이것은 다른 CI/CD 도구에 적용됩니다.이러한 개념은 동일하며 서명, 갱신, 테스트, 전송 과정을 따르기만 하면 된다.



    뒷받침


    당신이 이것을 좋아한다면 GitHub에서 나의 다른 예시를 보고 Buy Me a Coffee에서 나를 지지할 것을 고려하십시오


  • 좋은 웹페이지 즐겨찾기