feat:support download task #112
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Workflow's name | |
name: Build Client | |
# Workflow's trigger | |
# Pack when creating tags | |
on: | |
push: | |
tags: | |
- v* | |
# Workflow's jobs | |
# A total of 3 computers are required to run | |
# windows | |
# macos-latest x86_64 | |
# macos-latest arm64 | |
jobs: | |
release: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: windows-latest | |
- os: macos-latest | |
arch: x86_64 | |
- os: macos-latest | |
arch: arm64 | |
- os: ubuntu-latest | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Check out git repository | |
uses: actions/checkout@main | |
# Obtaining the version number is not supported by workflow, so a plug-in is used. | |
- name: Create version | |
id: chat2db_version | |
uses: bhowell2/[email protected] | |
with: | |
value: ${{ github.ref }} | |
index_of_str: "refs/tags/v" | |
# Output basic information | |
- name: Print basic information | |
run: | | |
echo "current environment: ${{ env.CHAT2DB_ENVIRONMENT }}" | |
echo "current version: ${{ steps.chat2db_version.outputs.substring }}" | |
# Install jre Windows | |
- name: Install Jre for Windows | |
if: ${{ runner.os == 'Windows' }} | |
uses: actions/setup-java@main | |
with: | |
java-version: "17" | |
distribution: "temurin" | |
java-package: "jre" | |
# Install jre MacOS X64 | |
- name: Install Jre MacOS X64 | |
if: ${{ runner.os == 'macOS' && matrix.arch == 'x86_64' }} | |
uses: actions/setup-java@main | |
with: | |
java-version: "17" | |
distribution: "temurin" | |
java-package: "jre" | |
# Install jre MacOS arm64 | |
- name: Install Jre MacOS arm64 | |
if: ${{ runner.os == 'macOS' && matrix.arch == 'arm64' }} | |
uses: actions/setup-java@main | |
with: | |
java-version: "17" | |
distribution: "temurin" | |
java-package: "jre" | |
architecture: "aarch64" | |
# Install jre Linux | |
- name: Install Jre for Linux | |
if: ${{ runner.os == 'Linux' }} | |
uses: actions/setup-java@main | |
with: | |
java-version: "17" | |
distribution: "temurin" | |
java-package: "jre" | |
# java.security open tls1 Windows | |
# - name: Enable tls1 | |
# if: ${{ runner.os == 'Windows' }} | |
# run: | | |
# sed -i '' "s/\(^jdk.tls.disabledAlgorithms=\)\(.*\)\( TLSv1, TLSv1.1,\)\(.*\)/\1\2\4/" "${{ env.JAVA_HOME }}/conf/security/java.security" | |
# shell: pwsh | |
# | |
# # java.security open tls1 macOS | |
# - name: Enable tls1 | |
# if: ${{ runner.os == 'macOS' }} | |
# run: | | |
# sed -i '' "s/\(^jdk.tls.disabledAlgorithms=\)\(.*\)\( TLSv1, TLSv1.1,\)\(.*\)/\1\2\4/" $JAVA_HOME/conf/security/java.security | |
# 开放TLS | |
- name: Enable TLS 1.0 and 1.1 in java.security | |
run: | | |
if [ "$RUNNER_OS" = "Windows" ]; then | |
sed -i "s/\(^jdk.tls.disabledAlgorithms=\)\(.*\)\(TLSv1, TLSv1.1,\)\(.*\)/\1\2\4/" "$JAVA_HOME/conf/security/java.security" | |
elif [ "$RUNNER_OS" = "Linux" ]; then | |
sed -i "s/\(^jdk.tls.disabledAlgorithms=\)\(.*\)\(TLSv1, TLSv1.1,\)\(.*\)/\1\2\4/" "$JAVA_HOME/conf/security/java.security" | |
elif [ "$RUNNER_OS" = "macOS" ]; then | |
sed -i '' "s/\(^jdk.tls.disabledAlgorithms=\)\(.*\)\(TLSv1, TLSv1.1,\)\(.*\)/\1\2\4/" "$JAVA_HOME/conf/security/java.security" | |
fi | |
shell: bash | |
env: | |
RUNNER_OS: ${{ runner.os }} | |
JAVA_HOME: ${{ env.JAVA_HOME }} | |
# Copy jre Windows | |
- name: Copy Jre for Windows | |
if: ${{ runner.os == 'Windows' }} | |
run: | | |
mkdir chat2db-client/static | |
cp -r "${{ env.JAVA_HOME }}" chat2db-client/static/jre | |
# Copy jre macOS | |
- name: Copy Jre for macOS | |
if: ${{ runner.os == 'macOS' }} | |
run: | | |
mkdir chat2db-client/static | |
cp -r $JAVA_HOME chat2db-client/static/jre | |
chmod -R 777 chat2db-client/static/jre/ | |
# Copy jre Linux | |
- name: Copy Jre for Linux | |
if: ${{ runner.os == 'Linux' }} | |
run: | | |
mkdir chat2db-client/static | |
cp -r $JAVA_HOME chat2db-client/static/jre | |
chmod -R 777 chat2db-client/static/jre/ | |
# Install node | |
- name: Install Node.js | |
uses: actions/setup-node@main | |
with: | |
node-version: 16 | |
cache: "yarn" | |
cache-dependency-path: chat2db-client/yarn.lock | |
# Install java | |
- name: Install Java and Maven | |
uses: actions/setup-java@main | |
with: | |
java-version: "17" | |
distribution: "temurin" | |
cache: "maven" | |
# Build static file information | |
- name: Yarn install & build & copy | |
run: | | |
cd chat2db-client | |
yarn | |
yarn run build:web:prod --app_version=${{ steps.chat2db_version.outputs.substring }} | |
cp -r dist ../chat2db-server/chat2db-server-start/src/main/resources/static/front | |
cp -r dist/index.html ../chat2db-server/chat2db-server-start/src/main/resources/thymeleaf/ | |
cd src/main | |
yarn | |
yarn run build | |
# Compile server-side java version | |
- name: Build Java | |
run: mvn clean package -B '-Dmaven.test.skip=true' -f chat2db-server/pom.xml | |
# touch versions | |
- name: touch versions | |
run: | | |
cd chat2db-client | |
mkdir versions | |
mkdir versions/${{ steps.chat2db_version.outputs.substring }} | |
mkdir versions/${{ steps.chat2db_version.outputs.substring }}/static | |
touch version | |
echo -n ${{ steps.chat2db_version.outputs.substring }} > version | |
cp -r version ./versions/ | |
# Copy server-side java to the specified location | |
- name: Copy App | |
run: | | |
cp chat2db-server/chat2db-server-start/target/chat2db-server-start.jar chat2db-client/versions/${{ steps.chat2db_version.outputs.substring }}/static/ | |
# cp -r chat2db-server/chat2db-server-start/target/lib chat2db-client/versions/${{ steps.chat2db_version.outputs.substring }}/static/lib | |
- name: Prepare Build Electron | |
run: | | |
cd chat2db-client | |
yarn run build:web:desktop --app_version=${{ steps.chat2db_version.outputs.substring }} | |
cp -r dist ./versions/${{ steps.chat2db_version.outputs.substring }}/ | |
rm -r dist | |
# windows | |
- name: Build/release Electron app for Windows | |
if: ${{ runner.os == 'Windows' }} | |
uses: samuelmeuli/action-electron-builder@v1 | |
with: | |
package_root: "chat2db-client/" | |
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }} | |
mac_certs: ${{ secrets.mac_certs }} | |
mac_certs_password: ${{ secrets.mac_certs_password }} | |
skip_build: true | |
args: "-c.extraMetadata.version=${{ steps.chat2db_version.outputs.substring }} --win --x64" | |
release: true | |
# macos x86_64 | |
- name: Build/release Electron app for MacOS X64 | |
if: ${{ runner.os == 'macOS' && matrix.arch == 'x86_64' }} | |
uses: samuelmeuli/action-electron-builder@v1 | |
with: | |
package_root: "chat2db-client/" | |
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }} | |
mac_certs: ${{ secrets.mac_certs }} | |
mac_certs_password: ${{ secrets.mac_certs_password }} | |
skip_build: true | |
args: "-c.extraMetadata.version=${{ steps.chat2db_version.outputs.substring }} --mac --x64" | |
release: true | |
# x86_64 notarization | |
- name: Notarization x86_64 App | |
if: ${{ runner.os == 'macOS' && matrix.arch == 'x86_64' }} | |
run: | | |
xcrun notarytool store-credentials "Chat2DB" --apple-id "${{secrets.MAC_APPLE_ID}}" --password "${{secrets.MAC_APPLE_PASSWORD}}" --team-id "${{secrets.MAC_TEAM_ID}}" | |
xcrun notarytool submit chat2db-client/release/Chat2DB-${{ steps.chat2db_version.outputs.substring }}.dmg --keychain-profile "Chat2DB" | |
# macos arm64 | |
- name: Build/release Electron app for MacOS arm64 | |
if: ${{ runner.os == 'macOS' && matrix.arch == 'arm64' }} | |
uses: samuelmeuli/action-electron-builder@v1 | |
with: | |
package_root: "chat2db-client/" | |
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }} | |
mac_certs: ${{ secrets.mac_certs }} | |
mac_certs_password: ${{ secrets.mac_certs_password }} | |
skip_build: true | |
args: "-c.extraMetadata.version=${{ steps.chat2db_version.outputs.substring }} --mac --arm64" | |
release: true | |
# arm notarization | |
- name: Notarization arm64 App | |
if: ${{ runner.os == 'macOS' && matrix.arch == 'arm64' }} | |
run: | | |
xcrun notarytool store-credentials "Chat2DB" --apple-id "${{secrets.MAC_APPLE_ID}}" --password "${{secrets.MAC_APPLE_PASSWORD}}" --team-id "${{secrets.MAC_TEAM_ID}}" | |
xcrun notarytool submit chat2db-client/release/Chat2DB-${{ steps.chat2db_version.outputs.substring }}-arm64.dmg --keychain-profile "Chat2DB" | |
# Linux | |
- name: Delete File | |
if: ${{ runner.os == 'Linux' }} | |
run: | | |
cd chat2db-client/static/jre/ | |
ls -la | |
rm -rf legal | |
ls -la | |
- name: Build/release Electron app for Linux | |
if: ${{ runner.os == 'Linux' }} | |
uses: samuelmeuli/action-electron-builder@v1 | |
with: | |
package_root: "chat2db-client/" | |
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }} | |
skip_build: true | |
args: "-c.extraMetadata.version=${{ steps.chat2db_version.outputs.substring }} --linux" | |
release: true | |
# Prepare the required data Windows | |
- name: Prepare upload for Windows | |
if: runner.os == 'Windows' | |
run: | | |
mkdir oss_temp_file | |
cp -r chat2db-client/release/*Setup*.exe ./oss_temp_file | |
# Prepare the required data MacOS x86_64 | |
- name: Prepare upload for MacOS x86_64 | |
if: ${{ runner.os == 'macOS' && matrix.arch == 'x86_64' }} | |
run: | | |
mkdir oss_temp_file | |
cp chat2db-client/versions/${{ steps.chat2db_version.outputs.substring }}/static/chat2db-server-start.jar ./oss_temp_file | |
cp -r chat2db-client/release/*.dmg ./oss_temp_file | |
cp -r chat2db-client/versions/${{ steps.chat2db_version.outputs.substring }}/dist ./oss_temp_file/dist | |
cd chat2db-client/versions/${{ steps.chat2db_version.outputs.substring }}/ && zip -r ${{ steps.chat2db_version.outputs.substring }}.zip ./ | |
cp -r ${{ steps.chat2db_version.outputs.substring }}.zip ../../../oss_temp_file | |
cd static/ && zip -r chat2db-server-start.zip ./ | |
cp -r chat2db-server-start.zip ../../../../oss_temp_file | |
# Prepare the required data MacOS arm64 | |
- name: Prepare upload for MacOS arm64 | |
if: ${{ runner.os == 'macOS' && matrix.arch == 'arm64' }} | |
run: | | |
mkdir oss_temp_file | |
cp -r chat2db-client/release/*.dmg ./oss_temp_file | |
# Prepare the required data Linux | |
- name: Prepare upload for Linux | |
if: runner.os == 'Linux' | |
run: | | |
mkdir oss_temp_file | |
cp -r chat2db-client/release/*.AppImage ./oss_temp_file | |
# Upload files to OSS for easy downloading | |
- name: Set up oss utils | |
uses: yizhoumo/setup-ossutil@v1 | |
with: | |
endpoint: "oss-accelerate.aliyuncs.com" | |
access-key-id: ${{ secrets.OSS_ACCESS_KEY_ID }} | |
access-key-secret: ${{ secrets.OSS_ACCESS_KEY_SECRET }} | |
ossutil-version: "1.7.16" | |
- name: Upload to oss | |
run: | | |
ossutil cp -rf --acl=public-read ./oss_temp_file/ oss://chat2db-client/release/${{ steps.chat2db_version.outputs.substring }}/ | |
# Build completion notification | |
- name: Send dingtalk message for Windows | |
if: ${{ runner.os == 'Windows' }} | |
uses: ghostoy/dingtalk-action@master | |
with: | |
webhook: ${{ secrets.DINGTALK_WEBHOOK }} | |
msgtype: markdown | |
content: | | |
{ | |
"title": "Windows-release-打包完成通知", | |
"text": "# Windows-release-打包完成通知 \n ![bang](https://oss.sqlgpt.cn/static/happy100.jpg) \n ### 任务id:[${{ github.run_id }}](https://github.com/chat2db/Chat2DB/actions/runs/${{ github.run_id }}) \n ### Windows下载地址:[https://oss.sqlgpt.cn/release/${{ steps.chat2db_version.outputs.substring }}/Chat2DB%20Setup%20${{ steps.chat2db_version.outputs.substring }}.exe](https://oss.sqlgpt.cn/release/${{ steps.chat2db_version.outputs.substring }}/Chat2DB%20Setup%20${{ steps.chat2db_version.outputs.substring }}.exe) " | |
} | |
# Build completion notification | |
- name: Send dingtalk message for MacOS x86_64 | |
if: ${{ runner.os == 'macOS' && matrix.arch == 'x86_64' }} | |
uses: ghostoy/dingtalk-action@master | |
with: | |
webhook: ${{ secrets.DINGTALK_WEBHOOK }} | |
msgtype: markdown | |
content: | | |
{ | |
"title": "MacOS-x86_64-release-构建完成通知", | |
"text": "# MacOS-x86_64-release-打包完成通知 \n ![bang](https://oss.sqlgpt.cn/static/happy100.jpg) \n ### 任务id:[${{ github.run_id }}](https://github.com/chat2db/Chat2DB/actions/runs/${{ github.run_id }}) \n ### Intel芯片下载地址:[https://oss.sqlgpt.cn/release/${{ steps.chat2db_version.outputs.substring }}/Chat2DB-${{ steps.chat2db_version.outputs.substring }}.dmg](https://oss.sqlgpt.cn/release/${{ steps.chat2db_version.outputs.substring }}/Chat2DB-${{ steps.chat2db_version.outputs.substring }}.dmg) \n ### jar包下载地址:[https://oss.sqlgpt.cn/release/${{ steps.chat2db_version.outputs.substring }}/chat2db-server-start.zip](https://oss.sqlgpt.cn/release/${{ steps.chat2db_version.outputs.substring }}/chat2db-server-start.zip) " | |
} | |
# Build completion notification | |
- name: Send dingtalk message for MacOS arm64 | |
if: ${{ runner.os == 'macOS' && matrix.arch == 'arm64' }} | |
uses: ghostoy/dingtalk-action@master | |
with: | |
webhook: ${{ secrets.DINGTALK_WEBHOOK }} | |
msgtype: markdown | |
content: | | |
{ | |
"title": "MacOS-arm64-release-构建完成通知", | |
"text": "# MacOS-arm64-release-打包完成通知 \n ![bang](https://oss.sqlgpt.cn/static/happy100.jpg) \n ### 任务id:[${{ github.run_id }}](https://github.com/chat2db/Chat2DB/actions/runs/${{ github.run_id }}) \n ### Apple芯片下载地址:[https://oss.sqlgpt.cn/release/${{ steps.chat2db_version.outputs.substring }}/Chat2DB-${{ steps.chat2db_version.outputs.substring }}-arm64.dmg](https://oss.sqlgpt.cn/release/${{ steps.chat2db_version.outputs.substring }}/Chat2DB-${{ steps.chat2db_version.outputs.substring }}-arm64.dmg) " | |
} | |
# Build completion notification | |
- name: Send dingtalk message for Linux | |
if: ${{ runner.os == 'Linux' }} | |
uses: ghostoy/dingtalk-action@master | |
with: | |
webhook: ${{ secrets.DINGTALK_WEBHOOK }} | |
msgtype: markdown | |
content: | | |
{ | |
"title": "Linux-test-打包完成通知", | |
"text": "# Linux-test-打包完成通知 \n ![bang](https://oss.sqlgpt.cn/static/happy100.jpg) \n ### 任务id:[${{ github.run_id }}](https://github.com/chat2db/Chat2DB/actions/runs/${{ github.run_id }}) \n ### Linux下载地址:[https://oss.sqlgpt.cn/release/${{ steps.chat2db_version.outputs.substring }}/Chat2DB-${{ steps.chat2db_version.outputs.substring }}.AppImage](https://oss.sqlgpt.cn/release/${{ steps.chat2db_version.outputs.substring }}/Chat2DB-${{ steps.chat2db_version.outputs.substring }}.AppImage)" | |
} |