다른 리포지토리에 의존하는 Github Action 릴리스 자동화

반복적인 작업을 수행하는 것은 시간이 많이 걸리고 지루할 수 있습니다. 다행히도 반복적인 작업을 수행하고 시간을 절약하는 데 활용할 수 있는 도구가 있습니다. 최근에 one of my repositories에서 릴리스 프로세스를 자동화하기로 결정했습니다. 이 제출에서는 GitHub ActionsPython을 사용하여 릴리스 프로세스를 자동화하는 과정을 공유합니다.

문제



나는 Detekt CLI 의 새 릴리스에 의존하는 repository 을 유지합니다. Detekt CLI 의 새 버전이 있으면 여유 시간이 있을 때마다 이메일을 받고 내 저장소의 새 릴리스를 만듭니다. 이 접근 방식을 사용하여 아래 단계에 따라 새 릴리스를 만들곤 했습니다.
  • Detekt의 새 릴리스에 대한 이메일을 받습니다.
  • 여유 시간이 있을 때마다 DockerfileREADME.md의 버전을 업데이트합니다.
  • 변경 사항을 커밋합니다.
  • 새 태그를 생성합니다.
  • 푸시 변경.
  • 릴리스를 게시합니다.

  • 새 릴리스의 타이밍이 중요하지만 1단계에서 2단계까지의 시간 차이는 사용자를 만족시키지 못할 수 있는 내 상황에 따라 다를 수 있음이 분명합니다. 새 릴리스의 타이밍과 내 저장소 사용자를 행복하게 유지하는 것 외에도 자동화할 수 있는 일부 작업을 수동으로 수행하는 것보다 더 흥미로운 일에 사용할 수 있는 개인적인 시간도 중요합니다.

    해결책



    문제를 알고 있고 단계를 기록해 놓았으므로 이 문제에 접근하는 방법을 생각할 수 있습니다. 내가 만들고 싶었던 솔루션에는 다음과 같은 기능이 필요했습니다.
  • 24시간마다 Detekt CLI의 새 릴리스를 확인하십시오.
  • Detekt CLI의 최신 릴리스가 내 저장소의 최신 태그와 다른 경우,
  • Detekt CLIDockerfile에서 README.md 버전 업데이트
  • 변경 사항 커밋
  • 새 태그 생성
  • 릴리스 분기 생성
  • 푸시 변경 사항

  • 새 릴리스 분기가 생성되면 새 풀 요청을 생성합니다.

  • 새로운 릴리스 브랜치를 생성하고 새로운 풀 리퀘스트를 생성하는 것은 이전에 수동으로 릴리스를 만들 때 하지 않았던 일입니다. 깨진 코드가 마스터 브랜치에 병합되지 않도록 변경 사항을 검토할 수 있도록 앞서 언급한 단계를 추가했습니다. 새 릴리스를 확인하고 my Python script을 실행하기 위해 the first workflow이 24시간마다 스크립트를 실행하고 the second workflow이 새 릴리스 분기가 생성될 때 풀 요청을 생성하는 두 개의 워크플로를 만들었습니다. 24시간마다 릴리스 스크립트를 실행하는 워크플로 외에도 GitHub 작업의 트리거workflow_dispatch를 사용하여 워크플로를 수동으로 실행할 수 있음을 확인했습니다.
    Detekt의 출시 이력에 따르면 매월 약 2~3개의 새로운 출시가 있습니다. GitHub Actions와 Python을 사용하여 만든 간단한 솔루션으로 매월 최소 20~30분을 절약하는 것이 목표입니다. 게다가 총 시간을 훨씬 더 많이 절약할 수 있는 다른 프로젝트에서 이 솔루션을 사용할 수 있습니다.

    내 워크플로우



    
    name: Create Release
    
    on:
      schedule:
        - cron: "0 0 * * *"
      workflow_dispatch:
    
    jobs:
      check_release:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v2
          - name: Set up Python
            uses: actions/setup-python@v2
            with:
              python-version: 3.8
          - name: Install dependencies
            run: |
              git config --local user.email "[email protected]"
              git config --local user.name "GitHub Action"
              python -m pip install --upgrade pip
              if [ -f .release-manager/requirements.txt ]; then pip install -r .release-manager/requirements.txt; fi
          - name: Run script
            run: |
              python .release-manager/create_release.py
    

    제출 카테고리:



    메인테이너 머스트해브

    Yaml 파일 또는 코드 링크




    natiginfo / 모두 행동 감지


    모든 파일에 대해 detekt 실행





    GitHub 작업: 모두 검색


    실행을 위한 GitHub 작업detekt은 모범 사례를 적용하기 위한 검사입니다. Detekt는 Kotlin용 정적 코드 분석 도구입니다.
    작업의 버전은 detekt versions 과 일치합니다.

    사용 예

    name: detekt
    
    on:
      push:
        branches: [ master ]
    
     jobs:
       detekt:
         runs-on: ubuntu-latest
    
         steps:
           - name: "checkout"
             uses: actions/checkout@v2
    
           - name: "detekt"
             uses: natiginfo/[email protected]
    

    CLI 매개변수 사용

    name: detekt
    
    on:
      push:
        branches: [ master ]
    
     jobs:
       detekt:
         runs-on: ubuntu-latest
    
         steps:
           - name: "checkout"
             uses: actions/checkout@v2
    
           - name: "detekt"
             uses: natiginfo/[email protected]
             with:
              args: --fail-fast --config detekt.yml
    
    사용 가능한 CLI 매개변수를 확인할 수 있습니다here.


    View on GitHub


    종결



    이 제출의 목적은 기존 도구를 활용하고 작업을 자동화하여 시간을 절약하도록 권장하는 것입니다. 보시다시피 단계를 적어두면 사용하는 도구로 쉽게 자동화할 수 있습니다. 기존actions을 확인하면 필요에 맞는 작업 흐름을 만들 수 있습니다.

    읽어 주셔서 감사합니다!

    좋은 웹페이지 즐겨찾기