別の倉庫に依存するGitHubアクションの自動化


繰り返しタスクを実行する時間がかかり、退屈なことができます.幸運にも、我々は我々のために繰り返しの仕事をして、時間を節約するために活用することができるツールを持っています.最近、リリースプロセスを自動化することにしましたone of my repositories . この投稿では、リリースプロセスを自動化する私の旅を共有しますGitHub Actions and Python .

問題


Aを維持するrepository それは2010年の新しいリリースに依存しますDetekt CLI . 新しいバージョンのDetekt CLI , 私は電子メールを受け取り、無料の時間があるたびに新しいリポジトリをリリースします.このアプローチで、以下の手順に従って新しいリリースを行いました.
  • Detektの新しいリリースについてのメールを受け取ります.
  • アップデートバージョンDockerfile and README.md 暇な時はいつでも.
  • 変更をコミットします.
  • 新しいタグを作成します.
  • 変更を押してください.
  • リリースを発行します.
  • 新しいリリースのタイミングは重要ですが、ステップ1からステップ2への時間差は、ユーザーを幸せにしない可能性があります私の状況に応じて変更することができることは明らかです.新しいリリースのタイミングに加えて、私のリポジトリのユーザーを幸せに保つのに加えて、個人的な時間だけでなく、手動でいくつかの作業を行うよりもエキサイティングなことに費やすことができる重要です自動化することができます.

    解決策


    私たちが問題を知っていて、私たちに書かれた手順があるので、我々はこの問題にアプローチする方法を考えることができます.私が作りたかった解決策は、次のような機能を必要としました.
  • 新しいリリースをチェックDetekt CLI 24時間ごとに.
  • 最新のリリースDetekt CLI は、リポジトリの最新のタグとは異なります.
  • 更新Detekt CLI バージョンDockerfile and README.md
  • 変更をコミット
  • 新しいタグの作成
  • リリースブランチの作成
  • 変更をプッシュ
  • 新しいリリース分岐が作成されると、新しいプル要求を作成します.
  • 新しいリリースブランチを作成し、新しいプルリクエストは、私が手動でリリースを行うために使用しなかった何かです.壊れたコードがマスターブランチにマージされないように変更を確認できるように、上記の手順を追加しました.新規リリースのチェックと実行my Python script , 私は2つのワークフローを作成しましたthe first workflow スクリプトを24時間毎に実行し、the second workflow 新しいリリースブランチが作成されたときにプル要求を作成します.24時間毎にリリーススクリプトを実行するワークフローの他にworkflow_dispatch GitHubアクションのトリガは、手動でワークフローを実行するために使用できます.
    リリース履歴によるとDetekt , 毎月約2〜3個の新しいリリースがあります.Githubアクションと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ファイルまたはコードへのリンク


    ナチス / アクションデッテ


    全てのファイルに対してdetektを実行する


    Githubアクション:detektすべて


    ランニングフォーアクションdetekt ベストプラクティスを実施するためにチェックします.detektはKollinの静的コード解析ツールです.
    アクションのバージョンは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 , 必要に応じて動作するワークフローを作成できます.
    読書ありがとう!