#############
# 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=release

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=
# GITHUB_PR_BODY_CLOSE_PATTERN='(?mi)(fix|close|resolve|fixes|closes|resolves|fixed|closed|resolved)[\s]*.*(((and )?'
GITHUB_PR_BODY_CLOSE_PATTERN=
# GITHUB_PR_BODY_NUMBER_PREFIX='(#|https:\/\/github.com\/%s\/%s\/issues\/)'
GITHUB_PR_BODY_NUMBER_PREFIX=
# GITHUB_PR_TITLE_PATTERN='.*\(#(\d+)\)'
GITHUB_PR_TITLE_PATTERN=

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

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

##########################
# Sensitive information encryption key
##########################
ENCODE_KEY=
