The Contributor License Agreement (CLA) service of the Linux Foundation lets project contributors read, sign, and submit contributor license agreements easily.
This repository contains the backend API for supporting and managing the application.
This platform supports both GitHub and Gerrit source code repositories. Additional information can be found in the Getting Started Guide.
See the Getting Started Guide to get started with EasyCLA.
Besides integration with Auth0 and Salesforce, the CLA system has the following third party services:
See the docs/ARCHITECTURE.md document.
To build the software, you will need the following tools installed.
- Go version >= 1.13
- GNU Make
To install the go build tools, run the setup Makefile target. This only needs to be done once or after a tool/version upgrade.
make setup
This will install:
- Swagger - A Swagger 2.0 implementation for Go
- Go Imports - A tool that updates your Go import lines, adding missing ones and removing unreferenced ones
- Dep - A Go dependency management tool
- DBMate - A lightweight, framework-agnostic database migration tool.
- SafeSQL - a linter for SQL
To build the software from scratch, run:
make clean swagger swagger-validate deps fmt build-mac test lint
To run the software, you will need to setup your AWS account and export a few environment variables:
STAGE
- the stage/environment for the deployment, typically one of:dev
,staging
, orprod
AWS_REGION
- the AWS region, typically:us-east-1
AWS_ACCESS_KEY_ID
- the AWS access key IDAWS_SECRET_ACCESS_KEY
- the AWS secret access key
The configuration can be loaded from AWS SSM parameters or from a local
configuration file. An example local configuration file is provided:
config-example.json
.
# Load from local configuration
./bin/cla-api --config config.json
# Load from AWS SSM (default)
./bin/cla-api
Typical output would look like (dev
environment example):
Logging format not defined - setting value to default: 'text'
Logging configured with level: debug, format: text
INFO[2019-10-18T16:52:43Z] Running init...
INFO[2019-10-18T16:52:43Z] Staring the HTTP server in local mode...
DEBU[2019-10-18T16:52:43Z] Creating a new AWS session for region: ...
DEBU[2019-10-18T16:52:43Z] Successfully created a new AWS session for region: ...
INFO[2019-10-18T16:52:43Z] Loading SSM config...
INFO[2019-10-18T16:52:45Z] Service CLA_API_SERVICE starting...
INFO[2019-10-18T16:52:45Z] Name : CLA_API_SERVICE
INFO[2019-10-18T16:52:45Z] Version : f9dd2ce
INFO[2019-10-18T16:52:45Z] Git commit hash : f9dd2ce
INFO[2019-10-18T16:52:45Z] Branch : master
INFO[2019-10-18T16:52:45Z] Build date : 2019-10-18T09:45:35-0700
INFO[2019-10-18T16:52:45Z] Golang OS : darwin
INFO[2019-10-18T16:52:45Z] Golang Arch : amd64
INFO[2019-10-18T16:52:45Z] LOCAL_MODE : true
INFO[2019-10-18T16:52:45Z] STAGE : dev
INFO[2019-10-18T16:52:45Z] Service Host : Davids-MBP.attlocal.net
INFO[2019-10-18T16:52:45Z] Service Port : 8080
INFO[2019-10-18T16:52:45Z] Sender email address is : [email protected]
INFO[2019-10-18T16:52:45Z] RDS Database : easycla-rds-database-dev
INFO[2019-10-18T16:52:45Z] RDS Username : <value redacted>
INFO[2019-10-18T16:52:45Z] Running http server on port: 8080 - set PORT environment variable to change port
To validate the EasyCLA API is up and running, make a request to the Health Service or the API documentation:
View the Health endpoint:
open http://localhost:8080/v4/ops/health
# via API Gateway
open https://api-gw.dev.platform.linuxfoundation.org/cla-service/v4/ops/health
# or use cURL
curl -s -XGET http://localhost:8080/v4/ops/health
# via API Gateway
curl -s -XGET https://api-gw.dev.platform.linuxfoundation.org/cla-service/v4/ops/health
# or use cURL with jq to make the output pretty
curl -s -XGET http://localhost:8080/v4/ops/health | jq
View the API documentation in a web browser:
open http://localhost:8080/v4/api-docs
Copyright The Linux Foundation and each contributor to CommunityBridge.
This project’s source code is licensed under the MIT License. A copy of the license is available in LICENSE.
The project includes source code from keycloak, which is licensed under the Apache License, version 2.0 (Apache-2.0), a copy of which is available in LICENSE-keycloak.
This project’s documentation is licensed under the Creative Commons Attribution 4.0 International License (CC-BY-4.0). A copy of the license is available in LICENSE-docs.