5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CLAへの同意をGitHub Actionsで自動化する

Last updated at Posted at 2021-10-07

この投稿ではCLA(Contributor License Agreement)署名をGitHub Actionsで自動化する方法を紹介します。

使うもの

CLA assistantはSaaS版がありますが、今回使うのはGitHub内で完結するCLA assistant liteです。CLA assistant liteは、GitHub Actionsで動作するため、外部のサーバーが不要という特徴があります。同意したコントリビューターの情報はリポジトリ内にファイルとして残るので、SaaS版がサービス終了したときに同意者リストデータを消失するといった心配がありません。

CLA assistant liteを使ったCLA署名の流れ

CLA assistant liteを使ったとき、CLAの署名は次の流れで行われます。

  1. コントリビューターがプルリクエストを作成する。
  2. GitHub ActionsにてCLA assistant botが起動する。
  3. プルリクエストのコメントに、CLA同意を求めるコメントがbot名義で付く。このときCIステータスはFAILになる。
  4. コントリビューターはCLA同意表明をプルリクエストのコメント欄で行う。
  5. 再びGitHub ActionsにてCLA assistant botが起動し、コントリビューターの情報をmainブランチのcla.jsonに書き足す。CIステータスPASSで終了する。
  6. プロジェクトのオーナーなどマージ権限がある人がプルリクエストをマージする。
  7. GitHub ActionsにてCLA assistant botが起動し、プルリクエストをロックする。ロックにより、後でコントリビューターがコメントを消すことができなくなる。

設定方法

GitHub Actionsの設定

まず.github/workflows/cla.ymlを作成します。

name: "CLA Assistant"
on:
  issue_comment:
    types: [created]
  pull_request_target:
    types: [opened,closed,synchronize]

jobs:
  CLAssistant:
    runs-on: ubuntu-latest
    steps:
      - name: "CLA Assistant"
        if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request_target'
        # Beta Release
        uses: cla-assistant/github-action@v2.1.3-beta
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          # the below token should have repo scope and must be manually added by you in the repository's secret
          PERSONAL_ACCESS_TOKEN : ${{ secrets.PERSONAL_ACCESS_TOKEN }}
        with:
          path-to-signatures: 'signatures/version1/cla.json'
          path-to-document: 'https://github.com/cla-assistant/github-action/blob/master/SAPCLA.md' # e.g. a CLA or a DCO document
          # branch should not be protected
          branch: 'main'
          #allowlist: user1,bot*

         #below are the optional inputs - If the optional inputs are not given, then default values will be taken
          #remote-organization-name: enter the remote organization name where the signatures should be stored (Default is storing the signatures in the same repository)
          #remote-repository-name:  enter the  remote repository name where the signatures should be stored (Default is storing the signatures in the same repository)
          #create-file-commit-message: 'For example: Creating file for storing CLA Signatures'
          #signed-commit-message: 'For example: $contributorName has signed the CLA in #$pullRequestNo'
          #custom-notsigned-prcomment: 'pull request comment with Introductory message to ask new contributors to sign'
          #custom-pr-sign-comment: 'The signature to be committed in order to sign the CLA'
          #custom-allsigned-prcomment: 'pull request comment when all contributors has signed, defaults to **CLA Assistant Lite bot** All Contributors have signed the CLA.'
          #lock-pullrequest-aftermerge: false - if you don't want this bot to automatically lock the pull request after merging (default - true)
          #use-dco-flag: true - If you are using DCO instead of CLA

アクセストークンの設定

PERSONAL_ACCESS_TOKENが必要なので、Personal access tokenのページでアクセストークンを作ります。

CleanShot 2021-10-07 at 05.08.09@2x.png

リポジトリの「Settings」→「Secrets」→「New repository secret」を開きます。

CleanShot 2021-10-07 at 05.17.41@2x.png

「Name」をPERSONAL_ACCESS_TOKENにし、「Value」には先程作ったアクセストークンを入力します。

CleanShot 2021-10-07 at 05.18.39@2x.png

以上で設定は完了です。

動作確認

プルリクエストを作ってみます。

CleanShot 2021-10-07 at 05.23.45@2x.png

コメントすると再びGitHub Actionが実行され、チェックが通ります。

CleanShot 2021-10-07 at 05.30.38@2x.png

signatures/version1/cla.jsonを開くと同意者の情報が書き加えられているのがわかります。

CleanShot 2021-10-07 at 05.31.53@2x.png

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?