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:
Repository owners can review a list of users who signed the CLA for each version of it. To get started, visit 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.
CLA assistant is provided by SAP as a free hosted offering under cla-assistant.io.Please open a GitHub issue if you have feedback.
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:
{
"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.
Since 27.08.2021 all data is stored in a cosmosDB (mongoDB compatible) hosted on Microsoft Azure in Europe (#740).Before that all the data was stored in a MongoDB hosted by mLab.
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.
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.
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.
You want to contribute to CLA Assistant? Welcome! Please read here.
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.
Clone this repository, change into the cloned directory and install dependencies.
git clone https://github.com/cla-assistant/cla-assistant
cd ./cla-assistant
npm install
Register an application on GitHub.The callback URL needs to be of the form of <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
You require a MongoDB compatible database as a backend. For development purposes you can run MongoDB in a docker container easily:
docker run --detach --publish 27017:27017 mongo
With that you need to adjust the MONGODB
environment variable in the .env
file to mongodb://localhost:27017/cla_assistant
.
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.REQUEST_TRACE_HEADER_NAME
: Use the value of an HTTP-header to set the name. E.g. the request id set by an ingress controller via X-Req-Id
. If not set or no HTTP-header is present a random uuid is used.LOG_TRACE_FIELD_NAME
: The log field to log the request id to. Defaults to req_id
.LOG_TRACE_PREFIX
: A prefix put before the traceId.Hint: For further reading on setting up MongoDB, check the "Getting Started" and
db.createUser()
method.
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
To get a CLA assistant instance quickly up you can as well use Docker compose:
git clone https://github.com/cla-assistant/cla-assistant
cd ./cla-assistant
cp .env.example .env
# Update GITHUB_CLIENT, GITHUB_SECRET and GITHUB_TOKEN with your values in .env
docker-compose up
Now you can navigate to http://localhost:5000
and access your installation. To locally test webhooks you needs to expose it via e.g. ngrok
as outlined above.
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.
Contributor License Agreement assistant
Copyright (c) 2021 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, softwaredistributed 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 andlimitations under the License.
问题内容: 我正在尝试按照本教程中的说明在Linux 14.04 LTS盒子(不是Windows)上构建我的第一个Google Home应用: 我的应用程序到Google Cloud的部署成功。但是,当我到达使用模拟器测试应用程序的部分时,以下 gactions 命令失败,并显示消息“无帮助主题以供预览/模拟” 和: 然后,我尝试在此处切换到模拟器的Google操作说明: 该文档指示我使用以下命令
问题内容: 当我键入本地变量名称的第一部分并按+ 以显示内容助手时,它将显示变量的全名并预先选择它。 在Eclipse Luna发行版中,如果您按键盘上的全名,则将插入全名,并且内容助手将显示此变量实例的所有可访问成员。 使用Eclipse Mars,它会在不完整的变量名称后直接插入点。 如何将这种行为切换回Eclipse Luna? 在此示例中,插入符号位于之后。+ 显示全名。按下关闭内容助手并
问题内容: 我正在使用 Dialogflow* , Cloud Functions 和新的 NodeJS Client Library V2 for Google on Actions 为Google Home 构建一个 助手 应用程序。实际上,我正在将用V1构建的旧代码迁移到V2。 *** 上下文 我正在尝试使用两个单独的意图来获取用户的位置:(触发/向用户发送许可请求的意图)和(检查用户是否已
问题内容: 我正在google Dialogflow中开发chatbot以获得google的帮助,我已经按照此文档显示了推送通知。我已经请求了许可,但是现在我陷入了该文档的最后一步()。 谁能帮我做到这一点。我应该从Python履行代码发送哪个JSON响应? 问题答案: 最后解决了问题。@matthewayne发布的代码有一些错误,例如,请求必须是“ POST”方法,并且需要更改有效负载和标头中的
我正在尝试使用DialogFlow(Api. AI)将Google Assistant应用程序与Firebase Auth连接起来。我的应用程序使用Firebase Auth来维护用户帐户和实时数据库来存储数据。我希望能够通过Google Assistant对用户的数据进行更改,可能使用云功能之类的东西。为了通过Google Assistant进行任何用户更改,我需要将用户的Google Assi
我试图把沃森助手的输出变成一个变量。因此,就我所搜索的而言,我需要获取json的输出和文本部分(起初它是一个判决,但后来我们将其解析为json)。但是我似乎不明白: 我已经搜索了这两个问题:这是watson的问题,这是解析json的问题 代码非常简单:访问我的机器人,输入“trips”。我已经去掉了api和工作区,但是我已经有了它们(显然)。 以及输出: 所以我想得到的答案是“我们去了不同的国家!