Skip to content

Add IPR agreement workflow using centralized AdCP signatures #38

@bokelley

Description

@bokelley

Summary

Add the IPR Policy agreement workflow to enforce contributor agreement before PRs can be merged. This uses the contributor-assistant/github-action to check/store signatures in the central adcontextprotocol/adcp repository.

Why centralized?

Contributors only need to sign the IPR Policy once. The signature is stored in adcontextprotocol/adcp and recognized across all AdCP repositories.

Implementation

Create .github/workflows/ipr-agreement.yml:

name: IPR Agreement

on:
  issue_comment:
    types: [created]
  pull_request_target:
    types: [opened, closed, synchronize]

permissions:
  actions: write
  contents: read
  pull-requests: write
  statuses: write

jobs:
  ipr-check:
    runs-on: ubuntu-latest
    steps:
      - name: CLA Assistant
        if: (github.event.comment.body == 'I have read the IPR Policy' || github.event_name == 'pull_request_target')
        uses: contributor-assistant/github-action@v2.6.1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          PERSONAL_ACCESS_TOKEN: ${{ secrets.IPR_PAT }}
        with:
          path-to-signatures: 'signatures/ipr-signatures.json'
          path-to-document: 'https://github.com/adcontextprotocol/adcp/blob/main/IPR_POLICY.md'
          branch: 'main'
          remote-organization-name: 'adcontextprotocol'
          remote-repository-name: 'adcp'
          allowlist: 'bot*,dependabot*,renovate*,github-actions*'

          custom-notsigned-prcomment: |
            ## IPR Policy Agreement Required

            Thank you for your contribution! Before we can accept your pull request, you must agree to our [Intellectual Property Rights Policy](https://github.com/adcontextprotocol/adcp/blob/main/IPR_POLICY.md).

            By making a Contribution, you agree that:
            - You grant the Foundation a perpetual, irrevocable, worldwide, non-exclusive, royalty-free copyright license to your Contribution
            - You grant a patent license under any Necessary Claims
            - You represent that you own or have sufficient rights to grant these licenses

            **To agree, please comment below with the exact phrase:**

            ```
            I have read the IPR Policy
            ```

            You can read the full [IPR Policy here](https://github.com/adcontextprotocol/adcp/blob/main/IPR_POLICY.md).

          custom-pr-sign-comment: 'I have read the IPR Policy'

          custom-allsigned-prcomment: |
            All contributors have agreed to the [IPR Policy](https://github.com/adcontextprotocol/adcp/blob/main/IPR_POLICY.md). Thank you!

          lock-pullrequest-aftermerge: false
          use-dco-flag: false

Prerequisites

  • IPR_PAT secret must be configured (already done)

Reference

See salesagent PR for working implementation: adcontextprotocol/salesagent#848

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions