GithubHelp home page GithubHelp logo

normal-coder / cla-assistant Goto Github PK

View Code? Open in Web Editor NEW

This project forked from cla-assistant/cla-assistant

0.0 0.0 0.0 9.99 MB

Contributor License Agreement assistant (CLA assistant)

Home Page: https://cla-assistant.io/

License: Apache License 2.0

Shell 0.07% JavaScript 87.10% HTML 9.58% Dockerfile 0.23% SCSS 3.02%

cla-assistant's Introduction

CLA assistant Build Status Dependency Status devDependency Status Coverage Status Code Climate CII Best Practices Build Status

Table of Contents

Contributor License Agreement assistant

Streamline your workflow and let CLA assistant handle the legal side of contributions to a repository for you. CLA assistant enables contributors to sign CLAs from within a pull request.

To get started, simply store your CLA as a GitHub Gist file then link it with the repository/organisation in CLA assistant. Then sit back and relax while CLA assistant:

  • Comments on each opened pull request to ask the contributor to sign the CLA
  • Allows contributors to sign a CLA from within a pull request
  • Authenticates the signee with his or her GitHub account
  • Updates the status of a pull request when the contributor agrees to the CLA
  • Automatically asks users to re-sign the CLA for each new pull request in the event the associated Gist & CLA has changed

Repository owners can review a list of users who signed the CLA for each version of it. To get started, visit https://cla-assistant.io.

We also developed a lite version of CLA Assistant using GitHub Actions which is in Alpha. You can checkout it out here.

Try

CLA assistant is provided by SAP as a free hosted offering under: https://cla-assistant.io/. Please leave us a GitHub issue if you have feedback.

For SAP open source projects please use the SAP Individual Contributor License Agreement.

Request more information from the CLA signer

If you need to collect detailed information about your contributors you can add so called "custom fields" to your CLA. This can be done by providing CLA assistant with some metadata that describes the data you are going to collect. CLA assistant will generate a form based on this metadata and contributors will be requested to fill out the form before they sign your CLA.

Following steps need to be done:

  • Go to the Gist with your CLA and add a new file with name "metadata" (like this)

  • describe custom fields in JSON format (according to the JSON Schema)

    {
        "name": {
            "title": "Full Name",
            "type": "string",
            "githubKey": "name"
        },
        "email": {
            "title": "E-Mail",
            "type": "string",
            "githubKey": "email",
            "required": true
        },
        "age": {
            "title": "Age",
            "description": "Age in years",
            "type": "number",
            "minimum": 18,
            "maximum": 99
        },
        "agreement": {
            "title": "I have read and agree to the CLA",
            "type": "boolean",
            "required": true
        },
        "category": {
            "title": "How do you sign?",
            "type": {
                "enum": [
                    "I am signing on behalf of myself.",
                    "I am signing on behalf of my employer."
                ]
            },
            "required": true
        }
    }

You can also define which of required information can be taken from user's GitHub account. In that case CLA assistant prefills the form with GitHub data. The possible values for the "githubKey"-property can be found in the GitHub-Api description

FAQ

Where is the list of signees stored?

We store all the data in a MongoDB hosted by mLab.

Where can I see the list of signees? Is there a way to import/export the signee data?

You can see the list of signees on the user interface. There is also a possibility for you to export the list as a .csv file.

What should my Contributor License Agreement say?

We're no lawyers, but we can suggest using http://contributoragreements.org/ for a fill-in-the-blank approach to creating a CLA tailored to your needs.

Who can I contact for help?

In case of problems or any further questions, please check our general trouble shooting issue or open an issue. We always appreciate helpful tips and support for the project.

How can I contribute?

You want to contribute to CLA Assistant? Welcome! Please read here.

Can I allow bot user contributions?

Since there's no way for bot users (such as Dependabot or Greenkeeper) to sign a CLA, you may want to allow their contributions without it. You can do so by importing their names (in this case dependabot[bot] and greenkeeper[bot]) in the CLA assistant dashboard.

Setup your own instance of CLA assistant

Clone this repository, change into the cloned directory and install dependencies.

git clone [email protected]:cla-assistant/cla-assistant.git
cd ./cla-assistant
npm install

Register an application on GitHub. The callback URL needs to be of the form

<PROTOCOL>://<HOST>:<PORT>/auth/github/callback.

You can use ngrok to get a publicly accessible URL which redirects to your localhost:5000 by executing the following command

/ngrok http 5000

If you use ngrok, you need to update the HOST variable in your .env and set PROTOCOL to "https".

Copy the sample configuration file .env.example file to .env.

cp .env.example .env

Supported environment variables

The following are the environment variables you have to configure to run a private instance:

  • HOST: This should only set the hostname of your CLA assistant instance (without the protocol).
  • PORT: The local port to bind to. Defaults to 5000.
  • HOST_PORT: You can set the port of your hosted CLA assistant instance here (in case your instance doesn't use standard http ports like 80 or 443).
  • PROTOCOL: Valid options are "http" or "https".
  • GITHUB_CLIENT: From your registered application in GitHub.
  • GITHUB_SECRET: From your registered application in GitHub.
  • GITHUB_TOKEN: Use GitHub token of CLA assistant's user for API calls of not authenticated users. It can be generated here https://github.com/settings/tokens/new. The Only scope required is public_repo.
  • GITHUB_ADMIN_USERS: (optional, comma-separated) If set, will only allow the specified GitHub users to administer this instance of the app.
  • MONGODB: This has to be in form of a mongodb url, e.g. mongodb://<user>:<password>@<host>:<port>/<dbname>.
  • SLACK_URL: Optional. You can use it in case you would like to get log-notifications posted in your slack chat.
  • SLACK_TOKEN: Optional.

Hint: For further reading on setting up MongoDB, go to http://docs.mongodb.org/manual/tutorial/getting-started/ http://docs.mongodb.org/manual/reference/method/db.createUser

Run grunt in order to build the application.

./node_modules/grunt-cli/bin/grunt build

During development, just run the grunt default task to build the app, start linter checks and run unit tests on each change of relevant .js files.

./node_modules/grunt-cli/bin/grunt

Finally, source the environment file and start the application.

source .env
npm start

Run the CLA assistant instance with Docker

To run the CLA assistant instance with docker:

$ docker build -t cla-assistant .
$ docker run -d -p5000:5000 \
      -e HOST=.. \
      -e PORT=... \
      cla-assistant

For the list of supported environments see supported environment variables

License

Contributor License Agreement assistant

Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Credits

❤️ from the GitHub team @ SAP

cla-assistant's People

Contributors

andrei-panov avatar benesch avatar casche avatar datenreisender avatar dennisoelkers avatar dependabot[bot] avatar dfarr avatar dltj avatar ibakshay avatar jeffwecan avatar jguipi avatar jnkielmann avatar jsoref avatar kborchers avatar kbsriram avatar ketan avatar kharitonoff avatar laughinghan avatar matkoch avatar matz3 avatar michael-spengler avatar michaeltsenglz avatar michaeltsengzl avatar mickaelandrieu avatar p5764 avatar peterdavehello avatar robstoll avatar thojansen avatar tim-mc avatar yaseminc avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.