Merge pull request #1723 from merico-dev/release-v0.10

chore: release v0.10.1
diff --git a/releases/lake-v0.10.1/docker-compose.yml b/releases/lake-v0.10.1/docker-compose.yml
new file mode 100644
index 0000000..70ec528
--- /dev/null
+++ b/releases/lake-v0.10.1/docker-compose.yml
@@ -0,0 +1,62 @@
+version: "3"
+services:
+  mysql:
+    image: mysql:8.0.26
+    platform: linux/x86_64
+    volumes:
+      - mysql-storage:/var/lib/mysql
+    restart: always
+    ports:
+      - 127.0.0.1:3306:3306
+    environment:
+      MYSQL_ROOT_PASSWORD: admin
+      MYSQL_DATABASE: lake
+      MYSQL_USER: merico
+      MYSQL_PASSWORD: merico
+
+  grafana:
+    image: mericodev/grafana:v0.10.1
+    ports:
+      - 3002:3000
+    volumes:
+      - grafana-storage:/var/lib/grafana
+    environment:
+      GF_USERS_ALLOW_SIGN_UP: 'false'
+      GF_DASHBOARDS_JSON_ENABLED: 'true'
+      GF_INSTALL_PLUGINS: grafana-piechart-panel
+      GF_LIVE_ALLOWED_ORIGINS: '*'
+      MYSQL_URL: mysql:3306
+      MYSQL_DATABASE: lake
+      MYSQL_USER: merico
+      MYSQL_PASSWORD: merico
+    restart: always
+    depends_on:
+      - mysql
+
+  devlake:
+    image: mericodev/lake:v0.10.1
+    ports:
+      - 127.0.0.1:8080:8080
+    restart: always
+    volumes:
+      - ./.env:/app/.env
+    depends_on:
+      - mysql
+
+  config-ui:
+    image: mericodev/config-ui:v0.10.1
+    ports:
+      - 127.0.0.1:4000:80
+    env_file:
+      - ./.env
+    environment:
+      DEVLAKE_ENDPOINT: devlake:8080
+      GRAFANA_ENDPOINT: http://localhost:3002
+      #ADMIN_USER: devlake
+      #ADMIN_PASS: merico
+    depends_on:
+      - devlake
+
+volumes:
+  mysql-storage:
+  grafana-storage:
diff --git a/releases/lake-v0.10.1/env.example b/releases/lake-v0.10.1/env.example
new file mode 100644
index 0000000..1f48cac
--- /dev/null
+++ b/releases/lake-v0.10.1/env.example
@@ -0,0 +1,115 @@
+#############
+# 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
+# Silent Error Warn Info
+DB_LOGGING_LEVEL=Error
+
+# Lake REST API
+PORT=:8080
+MODE=release
+
+NOTIFICATION_ENDPOINT=
+NOTIFICATION_SECRET=
+
+API_TIMEOUT=10s
+API_RETRY=3
+API_REQUESTS_PER_HOUR=10000
+#TEMPORAL_URL=temporal:7233
+TEMPORAL_URL=
+TEMPORAL_TASK_QUEUE=
+# Debug Info Warn Error
+LOGGING_LEVEL=
+
+
+########################
+# 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=
+GITLAB_PROXY=
+GITLAB_API_REQUESTS_PER_HOUR=
+
+##########################
+# 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=
+JENKINS_PROXY=
+JENKINS_API_REQUESTS_PER_HOUR=
+
+#########################
+# Feishu configuration #
+#########################
+
+FEISHU_APPID=
+FEISHU_APPSCRECT=
+FEISHU_ENDPOINT=https://open.feishu.cn/open-apis/vc/v1/
+
+########################
+# GitHub configuration #
+########################
+
+GITHUB_ENDPOINT=https://api.github.com/
+GITHUB_AUTH=***
+GITHUB_PROXY=
+GITHUB_API_REQUESTS_PER_HOUR=
+# 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 )?(#|https:\/\/github.com\/%s\/%s\/issues\/)\d+[ ]*)+)'
+GITHUB_PR_BODY_CLOSE_PATTERN='(?mi)(fix|close|resolve|fixes|closes|resolves|fixed|closed|resolved)[\s]*.*(((and )?(#|https:\/\/github.com\/%s\/%s\/issues\/)\d+[ ]*)+)'
+# GITHUB_PR_TITLE_PATTERN='.*\(#(\d+)\)'
+GITHUB_PR_TITLE_PATTERN='.*\(#(\d+)\)'
+
+##########################
+# AE (Merico-Analysis-Engine) configuration #
+##########################
+AE_APP_ID=
+AE_SECRET_KEY=
+AE_ENDPOINT=
+AE_RATE_LIMIT=100
+AE_PROXY=
+
+##########################
+# Sensitive information encryption key
+##########################
+ENCODE_KEY=