#############
# Lake core #
#############

# Lake plugin dir, absolute path or relative path
PLUGIN_DIR=bin/plugins

# Lake Database Connection String
DB_URL=merico:merico@tcp(mysql:3306)/lake?charset=utf8mb4&parseTime=True

# Lake REST API
PORT=:8080
MODE=debug

NOTIFICATION_ENDPOINT=
NOTIFICATION_SECRET=

########################
# Docker configuration #
########################

COMPOSE_PROFILES=user

######################
# Jira configuration #
######################

# Jira configuration has been migrated into MySQL #

########################
# Gitlab configuration #
########################

GITLAB_ENDPOINT=https://gitlab.com/api/v4/
GITLAB_AUTH=

##########################
# Jira <> Gitlab mapping #
##########################

# Lake maintains a many-to-many relationship between Jira boards and Gitlab projects
# Format:
#   JIRA_BOARD_GITLAB_PROJECTS=JIRA_BOARD_ID1:GITLAB_PROJECT_ID1,PROJECT_ID2;JIRA_BOARD_ID2:...
JIRA_BOARD_GITLAB_PROJECTS=

#########################
# Jenkins configuration #
#########################

JENKINS_ENDPOINT=
JENKINS_USERNAME=
JENKINS_PASSWORD=

#########################
# Feishu configuration #
#########################

FEISHU_APPID=
FEISHU_APPSCRECT=

########################
# GitHub configuration #
########################

GITHUB_ENDPOINT=https://api.github.com/
GITHUB_AUTH=***
GITHUB_PROXY=
# GITHUB_PR_TYPE=type/(.*)$ the program will extract the value in (), in this example, you will get "refactor" from "type/refactor"
GITHUB_PR_TYPE='type/(.*)$'
# GITHUB_PR_COMPONENT=component/(.*)$ the program will extract the value in (), in this example, you will get "plugins" from "component/plugins"
GITHUB_PR_COMPONENT='component/(.*)$'
# GITHUB_ISSUE_SEVERITY=severity/(.*)$ the program will extract the value in (), in this example, you will get "refactor" from "type/refactor"
GITHUB_ISSUE_SEVERITY='severity/(.*)$'
# GITHUB_ISSUE_COMPONENT=component/(.*)$ the program will extract the value in (), in this example, you will get "refactor" from "type/refactor"
GITHUB_ISSUE_COMPONENT='component/(.*)$'
GITHUB_ISSUE_PRIORITY='^(highest|high|medium|low)$'
GITHUB_ISSUE_TYPE_BUG='^(bug|failure|error)$'
GITHUB_ISSUE_TYPE_REQUIREMENT='^(feat|feature|proposal|requirement)$'
GITHUB_ISSUE_TYPE_INCIDENT=

##########################
# ConfigUI configuration #
##########################
DEVLAKE_ENDPOINT=devlake:8080
GRAFANA_ENDPOINT=http://localhost:3002

##########################
# AE (Merico-Analysis-Engine) configuration #
##########################
AE_APP_ID=
AE_SECRET_KEY=
AE_ENDPOINT=
