diff --git a/.github/release-config.yml b/.github/release-config.yml
new file mode 100644
index 000000000..2f024ea0c
--- /dev/null
+++ b/.github/release-config.yml
@@ -0,0 +1,45 @@
+name-template: 'Release v$RESOLVED_VERSION'
+tag-template: 'v$RESOLVED_VERSION'
+categories:
+ - title: '🌱 新功能 Features'
+ labels:
+ - 'feature'
+ - 'enhancement'
+ - 'feat'
+ - '新功能'
+ - title: '🚀 性能优化 Optimization'
+ labels:
+ - 'perf'
+ - 'opt'
+ - 'refactor'
+ - 'Optimization'
+ - '优化'
+ - title: '🐛 Bug修复 Bug Fixes'
+ labels:
+ - 'fix'
+ - 'bugfix'
+ - 'bug'
+ - title: '🧰 其它 Maintenance'
+ labels:
+ - 'chore'
+ - 'docs'
+exclude-labels:
+ - 'no'
+ - '无需处理'
+ - 'wontfix'
+change-template: '- $TITLE @$AUTHOR (#$NUMBER)'
+version-resolver:
+ major:
+ labels:
+ - 'major'
+ minor:
+ labels:
+ - 'minor'
+ patch:
+ labels:
+ - 'patch'
+ default: patch
+template: |
+ ## 版本变化 What’s Changed
+
+ $CHANGES
diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml
new file mode 100644
index 000000000..954ceb4c6
--- /dev/null
+++ b/.github/workflows/release-drafter.yml
@@ -0,0 +1,46 @@
+on:
+ push:
+ # Sequence of patterns matched against refs/tags
+ tags:
+ - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10
+
+name: Create Release And Upload assets
+
+jobs:
+ create-realese:
+ name: Create Release
+ runs-on: ubuntu-latest
+ outputs:
+ upload_url: ${{ steps.create_release.outputs.upload_url }}
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v2
+ - name: Get version
+ id: get_version
+ run: |
+ TAG=$(basename ${GITHUB_REF})
+ VERSION=${TAG/v/}
+ echo "::set-output name=TAG::$TAG"
+ echo "::set-output name=VERSION::$VERSION"
+ - name: Create Release
+ id: create_release
+ uses: release-drafter/release-drafter@v5
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ config-name: release-config.yml
+ version: ${{ steps.get_version.outputs.TAG }}
+ tag: ${{ steps.get_version.outputs.TAG }}
+
+ build-and-release:
+ needs: create-realese
+ name: Build and Release Matrix
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Build it and upload
+ uses: jumpserver/action-build-upload-assets@master
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ upload_url: ${{ needs.create-realese.outputs.upload_url }}
diff --git a/utils/build.sh b/utils/build.sh
new file mode 100644
index 000000000..15ecdef66
--- /dev/null
+++ b/utils/build.sh
@@ -0,0 +1,37 @@
+#!/bin/bash
+#
+# 该build基于 node:10
+utils_dir=$(pwd)
+project_dir=$(dirname "$utils_dir")
+release_dir=${project_dir}/release
+
+if [[ $(uname) == 'Darwin' ]];then
+ alias sedi="sed -i ''"
+else
+ alias sedi='sed -i'
+fi
+
+function change_version() {
+ sedi "s@Version .*@Version ${VERSION}@g" "${project_dir}/src/layout/components/Footer/index.vue" || return 2
+}
+
+# 修改版本号文件
+if [[ -n ${VERSION} ]]; then
+ change_version || exit 2
+fi
+
+# 下载依赖模块并构建
+cd "${project_dir}" && yarn || exit 3
+rm -rf lina dist
+yarn build:prod || exit 4
+
+# 打包
+rm -rf "${release_dir:?}"/*
+mkdir -p "${release_dir}"
+to_dir="${release_dir}/lina"
+
+if [[ -d "dist" ]];then
+ mv dist "${to_dir}"
+elif [[ -d "lina" ]]; then
+ mv lina "${to_dir}"
+fi