Skip to content

chore: Optimize action #187

chore: Optimize action

chore: Optimize action #187

Workflow file for this run

name: Build Test Client
on:
push:
# branches:
# - "release_test"
jobs:
release:
strategy:
fail-fast: false
matrix:
include:
- os: windows-latest
file_extension: ".exe"
- os: macos-latest
arch: x86_64
file_extension: ".dmg"
- os: macos-latest
arch: arm64
file_extension: ".dmg"
- os: ubuntu-latest
file_extension: ".AppImage"
runs-on: ${{ matrix.os }}
steps:
- name: Check out git repository
uses: actions/checkout@main
- name: Install JRE
uses: actions/setup-java@main
with:
java-version: "17"
distribution: "temurin"
java-package: "jre"
architecture: ${{ matrix.arch }}
- 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
else
sed -i '' "s/\(^jdk.tls.disabledAlgorithms=\)\(.*\)\( TLSv1, TLSv1.1,\)\(.*\)/\1\2\4/" $JAVA_HOME/conf/security/java.security
fi
env:
JAVA_HOME: ${{ env.JAVA_HOME }}
- name: Copy JRE to static directory
run: |
mkdir -p chat2db-client/static/jre
cp -r "${JAVA_HOME}" chat2db-client/static/jre
if [[ "${{ runner.os }}" != "Windows" ]]; then
chmod -R 777 chat2db-client/static/jre
fi
env:
JAVA_HOME: ${{ env.JAVA_HOME }}
- name: Install Node.js
uses: actions/setup-node@main
with:
node-version: "16"
cache: "yarn"
cache-dependency-path: chat2db-client/yarn.lock
- name: Install Java and Maven
uses: actions/setup-java@main
with:
java-version: "17"
distribution: "temurin"
cache: "maven"
- name: Cache Yarn dependencies
uses: actions/cache@v3
with:
path: '**/node_modules'
key: yarn-${{ runner.os }}-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
yarn-${{ runner.os }}-
- name: Build FE Static
run: |
cd chat2db-client
yarn install --frozen-lockfile
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/
- 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/
- 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
# 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
uses: samuelmeuli/action-electron-builder@v1
with:
package_root: "chat2db-client/"
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
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.os }} ${{ matrix.arch }}
# Only for macOS x86_64
- 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
- name: Prepare upload for OSS
run: |
mkdir -p oss_temp_file
cp -r chat2db-client/release/*${{ matrix.file_extension }} ./oss_temp_file
- 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/test/99.0.${{ github.run_id }}/
- 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 ### 下载地址:[https://oss.sqlgpt.cn/test/99.0.${{ github.run_id }}/${{ matrix.os }}-Test${{ matrix.file_extension }}](https://oss.sqlgpt.cn/test/99.0.${{ github.run_id }}/${{ matrix.os }}-Test${{ matrix.file_extension }})"
}