別の倉庫に依存するGitHubアクションの自動化
6571 ワード
繰り返しタスクを実行する時間がかかり、退屈なことができます.幸運にも、我々は我々のために繰り返しの仕事をして、時間を節約するために活用することができるツールを持っています.最近、リリースプロセスを自動化することにしましたone of my repositories . この投稿では、リリースプロセスを自動化する私の旅を共有しますGitHub Actions and Python .
Aを維持するrepository それは2010年の新しいリリースに依存します Detektの新しいリリースについてのメールを受け取ります. アップデートバージョン 変更をコミットします. 新しいタグを作成します. 変更を押してください. リリースを発行します. 新しいリリースのタイミングは重要ですが、ステップ1からステップ2への時間差は、ユーザーを幸せにしない可能性があります私の状況に応じて変更することができることは明らかです.新しいリリースのタイミングに加えて、私のリポジトリのユーザーを幸せに保つのに加えて、個人的な時間だけでなく、手動でいくつかの作業を行うよりもエキサイティングなことに費やすことができる重要です自動化することができます.
私たちが問題を知っていて、私たちに書かれた手順があるので、我々はこの問題にアプローチする方法を考えることができます.私が作りたかった解決策は、次のような機能を必要としました. 新しいリリースをチェック 最新のリリース 更新 変更をコミット 新しいタグの作成 リリースブランチの作成 変更をプッシュ 新しいリリース分岐が作成されると、新しいプル要求を作成します. 新しいリリースブランチを作成し、新しいプルリクエストは、私が手動でリリースを行うために使用しなかった何かです.壊れたコードがマスターブランチにマージされないように変更を確認できるように、上記の手順を追加しました.新規リリースのチェックと実行my Python script , 私は2つのワークフローを作成しましたthe first workflow スクリプトを24時間毎に実行し、the second workflow 新しいリリースブランチが作成されたときにプル要求を作成します.24時間毎にリリーススクリプトを実行するワークフローの他に
リリース履歴によると
メンテーナは必要である
Githubアクション:detektすべて
問題
Aを維持するrepository それは2010年の新しいリリースに依存します
Detekt CLI
. 新しいバージョンのDetekt CLI
, 私は電子メールを受け取り、無料の時間があるたびに新しいリポジトリをリリースします.このアプローチで、以下の手順に従って新しいリリースを行いました.Dockerfile
and README.md
暇な時はいつでも.解決策
私たちが問題を知っていて、私たちに書かれた手順があるので、我々はこの問題にアプローチする方法を考えることができます.私が作りたかった解決策は、次のような機能を必要としました.
Detekt CLI
24時間ごとに.Detekt CLI
は、リポジトリの最新のタグとは異なります.Detekt CLI
バージョンDockerfile
and README.md
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 , 必要に応じて動作するワークフローを作成できます.
読書ありがとう!
Reference
この問題について(別の倉庫に依存するGitHubアクションの自動化), 我々は、より多くの情報をここで見つけました
https://dev.to/natiginfo/automating-releases-of-github-action-that-depends-on-another-repository-2mgh
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
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]
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
Reference
この問題について(別の倉庫に依存するGitHubアクションの自動化), 我々は、より多くの情報をここで見つけました https://dev.to/natiginfo/automating-releases-of-github-action-that-depends-on-another-repository-2mghテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol