Files
Chat2DB/.github/workflows/release_test_2.yml
2024-04-07 23:23:27 +08:00

209 lines
8.2 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: Build Test Client 2
on:
push:
branches:
- "release_test_2"
jobs:
release:
strategy:
fail-fast: false
matrix:
include:
- os: windows-latest
file_extension: ".exe"
file_name: "https://oss.sqlgpt.cn/test/99.0.${{ github.run_id }}/Chat2DB-Test%20Setup%2099.0.${{ github.run_id }}-Test.exe"
build_arg: "--win --x64"
- os: macos-latest
arch: x86_64
file_name: "https://oss.sqlgpt.cn/test/99.0.${{ github.run_id }}/Chat2DB-Test-99.0.${{ github.run_id }}-Test.dmg"
file_extension: ".dmg"
build_arg: "--mac --x64"
- os: macos-latest
arch: arm64
file_name: "https://oss.sqlgpt.cn/test/99.0.${{ github.run_id }}/Chat2DB-Test-99.0.${{ github.run_id }}-Test-arm64.dmg"
file_extension: ".dmg"
build_arg: "--mac --arm64"
- os: ubuntu-latest
file_name: "https://oss.sqlgpt.cn/test/99.0.${{ github.run_id }}/Chat2DB-Test-99.0.${{ github.run_id }}-Test.AppImage"
file_extension: ".AppImage"
build_arg: "--linux"
runs-on: ${{ matrix.os }}
steps:
- name: Check out git repository
uses: actions/checkout@main
# Install JRE
- name: Install JRE
uses: actions/setup-java@main
with:
java-version: "17"
distribution: "temurin"
java-package: "jre"
# architecture: ${{ matrix.arch == 'arm64' && 'aarch64' || 'x64' }}
# Open 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 to the front-end static directory
- name: Copy JRE to static directory
run: |
mkdir -p chat2db-client/static
cp -r "$JAVA_HOME"/ chat2db-client/static/jre
if [ "${{ runner.os }}" != "Windows" ]; then
chmod -R 777 chat2db-client/static/jre
fi
shell: bash
env:
JAVA_HOME: ${{ env.JAVA_HOME }}
# Delete related files in jre in Linux
- if: ${{ runner.os == 'Linux' }}
name: Delete File on Linux
run: |
cd chat2db-client/static/jre/
ls -la
rm -rf legal
ls -la
# Install Node.js
- 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"
# Packaging web front-end resources
- name: Build FE Static
run: |
cd chat2db-client
yarn
yarn run build:web:prod --app_version=99.0.${{ github.run_id }} --app_port=10822
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
# Package backend project & send to frontend
- name: Build BE Static
run: |
mvn clean package -B '-Dmaven.test.skip=true' -f chat2db-server/pom.xml
mkdir -p chat2db-client/versions/99.0.${{ github.run_id }}/static
echo -n 99.0.${{ github.run_id }} > chat2db-client/version
cp -r chat2db-client/version chat2db-client/versions/
cp chat2db-server/chat2db-server-start/target/chat2db-server-start.jar chat2db-client/versions/99.0.${{ github.run_id }}/static/
# Packaging desktop front-end resources
- name: Prepare Build Electron
run: |
cd chat2db-client
yarn run build:web:desktop --app_version=99.0.${{ github.run_id }} --app_port=10822
cp -r dist ./versions/99.0.${{ github.run_id }}/
rm -r dist
# Packing Electron
- name: Build/release Electron app
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.appId=com.chat2db.test
-c.productName=Chat2DB-Test
-c.win.publisherName=Chat2DB-Test
-c.nsis.shortcutName=Chat2DB-Test
-c.extraMetadata.version=99.0.${{ github.run_id }}-Test
${{ matrix.build_arg}}
# Notarization & Signature Mac App
- name: Notarize MacOS x86_64 App
if: matrix.os == 'macos-latest' && 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-Test-99.0.${{ github.run_id }}-Test.dmg --keychain-profile "Chat2DB"
# Build Jar
- name: Prepare upload for Jar
if: ${{ runner.os == 'macOS' && matrix.arch == 'x86_64' }}
run: |
mkdir -p oss_temp_file
cp chat2db-client/versions/99.0.${{ github.run_id }}/static/chat2db-server-start.jar ./oss_temp_file
cp -r chat2db-client/release/*.dmg ./oss_temp_file
cp -r chat2db-client/versions/99.0.${{ github.run_id }}/dist ./oss_temp_file/dist
cd chat2db-client/versions/99.0.${{ github.run_id }}/ && zip -r 99.0.${{ github.run_id }}.zip ./
cp -r 99.0.${{ github.run_id }}.zip ../../../oss_temp_file
cd static/ && zip -r chat2db-server-start.zip ./
cp -r chat2db-server-start.zip ../../../../oss_temp_file
# Prepare files to be sent to OSS
- name: Prepare upload for OSS
run: |
mkdir -p oss_temp_file
cp -r chat2db-client/release/*${{ matrix.file_extension }} ./oss_temp_file
# Set up OSS
- 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"
# Upload to OSS
- name: Upload to OSS
run: |
ossutil cp -rf --acl=public-read ./oss_temp_file/ oss://chat2db-client/test/99.0.${{ github.run_id }}/
# Send to DingTalk
- name: Send dingtalk message
uses: ghostoy/dingtalk-action@master
with:
webhook: ${{ secrets.DINGTALK_WEBHOOK }}
msgtype: markdown
content: |
{
"title": "${{ matrix.os }}-test-打包完成通知",
"text": "# ${{ matrix.os }}-test-打包完成通知\n ![bang](https://oss.sqlgpt.cn/static/bang100.gif)\n ### 任务id:[${{ github.run_id }}](https://github.com/chat2db/Chat2DB/actions/runs/${{ github.run_id }})\n ### 下载地址:[${{matrix.file_name}}](${{matrix.file_name}})"
}
# Send Jar address to DingTalk
- if: ${{ runner.os == 'macOS' && matrix.arch == 'x86_64' }}
name: Send dingtalk message
uses: ghostoy/dingtalk-action@master
with:
webhook: ${{ secrets.DINGTALK_WEBHOOK }}
msgtype: markdown
content: |
{
"title": "Jar-test-构建完成通知",
"text": "### jar包下载地址:[https://oss.sqlgpt.cn/test/99.0.${{ github.run_id }}/chat2db-server-start.zip](https://oss.sqlgpt.cn/test/99.0.${{ github.run_id }}/chat2db-server-start.zip) "
}