web-dev-qa-db-ja.com

Githubアクションの手動ワークフロートリガー

プロジェクトリポジトリのGithubアクションを設定しています。

ワークフローは次のステップで構成されています。

  • Dockerイメージの作成
  • イメージをコンテナーレジストリにプッシュする
  • Kubernetesデプロイメントをロールアウトします。

ただし、私は2つの異なるKubernetesデプロイメントを使用しています。1つは開発用、もう1つは本番用です。したがって、2つのGithubアクションワークフローもあります。

開発用のGithubアクションワークフローは、コミットがプッシュされるたびにトリガーされます。

on:
  Push:
    branches:
    - master

しかし、私はそれを自分の制作ワークフローに使いたくありません。 Send to productionボタンのような手動トリガーが必要です。私はそれの近くに何もドキュメントで見ませんでした。


Githubアクションでワークフローを手動でトリガーする方法はありますか?

Githubアクション、Docker、またはKubernetesのいずれかで、開発ワークフローと本番ワークフローを分割して、希望どおりの結果を得るにはどうすればよいですか?

7
Antoine C.

現在のGithubアクションオファリングでこれを解決する別の方法は、デプロイが必要なときにマスターからproductionブランチを作成し、productionブランチでデプロイアクションをトリガーすることです。 productionブランチは基本的にmasterのミラーです。

on:
  Push:
    branches:    
      - master

開発ビルド/プッシュは、マスターへのコミットがあるたびに発生する可能性があります。

on:
  Push:
    branches:    
      - production

リリーススケジュールのある時点で、PRをproductionブランチに上げることができます。これにより、prodのビルド/デプロイが処理されます。

0
user1064504

詳細/説明のために編集されました

できることの1つは、repository_dispatchを呼び出すことです。 repository_dispatchhere の使用に関するGitHubドキュメントを表示できます。

たとえば、次のようなGitHubアクションワークフローがあるとします。

on:
  repository_dispatch:
    types: [run_tests]
name: Run tests
jobs:
  test:
    name: Run your tests
    runs-on: ubuntu-latest
    steps:
      - run: |
          echo "I just ran all your tests!"

GitHub v3 APIドキュメント で説明されている手順に従って、リポジトリディスパッチイベントを作成できます。

まず、認証のためにGitHubで 個人アクセストークン(PAT)を作成 します。

次に、curlを次のように実行できます。

curl \
  -H "Authorization: token $YOUR_PAT" \
  --request POST \
  --data '{"event_type": "run_tests"}' \
  https://api.github.com/repos/$USER/$REPOSITORY/dispatches

同時に、私が取り組んでいる小さなプロジェクトを、この正確な問題を解決する仲間と共有したかったのです。

https://www.actionspanel.app/

ActionsPanelはこれと同じrepository_dispatch AP​​Iを使用しますが、GitHub Appトークンを使用するため、独自のPATの管理について心配する必要はありません。これにより、複数のユーザーがいるチーム全体でアクションをトリガーするのがはるかに簡単になります。

ユーザーのリクエストとフィードバックに基づいて、repository_dispatchの送信先のブランチを指定する機能が組み込まれています。また、アクションを実行するときにパラメーターを挿入する方法も組み込まれています。

リポジトリに残した宣言型のyamlファイルを使用してボタンを構成すると、ActionsPanelがそのファイルを読み取り、アクションをトリガーするためのUIを動的に作成します。

0
aaronbatilo