Skip to content

test release

test release #3

Workflow file for this run

# Workflow's name
name: Build Client
# Workflow's trigger
# 在创建标签的时候打包
on:
push:
tags:
- v*
# Workflow's jobs
# 一共需要3台电脑运行
# windows
# macos-latest amd64
# macos-latest arm64
jobs:
release:
strategy:
fail-fast: false
matrix:
include:
- os: windows-latest
- os: macos-latest
arch: amd64
- os: macos-latest
arch: arm64
runs-on: ${{ matrix.os }}
steps:
- name: Check out git repository
uses: actions/checkout@main
# 获取版本号 workflow不支持 所以用插件
- name: Create version
id: chat2db_version
uses: bhowell2/github-substring-action@1.0.1
with:
value: ${{ github.ref }}
index_of_str: "refs/tags/v"
# 输出基础信息
- name: Print basic information
run: |
echo "current environment: ${{ env.CHAT2DB_ENVIRONMENT }}"
echo "current version: ${{ steps.chat2db_version.outputs.substring }}"
# 安装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"
# 安装jre MacOS X64
- name: Install Jre MacOS X64
if: ${{ runner.os == 'macOS' && matrix.arch == 'amd64' }}
uses: actions/setup-java@main
with:
java-version: "17"
distribution: "temurin"
java-package: "jre"
# 安装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"
# java.security 开放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"
# java.security 开放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
# 复制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
# 复制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/
# 安装node
- name: Install Node.js
uses: actions/setup-node@main
with:
node-version: 16
cache: 'yarn'
cache-dependency-path: chat2db-client/yarn.lock
# 安装java
- name: Install Java and Maven
uses: actions/setup-java@main
with:
java-version: "17"
distribution: "temurin"
cache: "maven"
# 构建静态文件信息
- name: Yarn install & build & copy
run: |
cd chat2db-client
yarn install
yarn run build:web:prod --appVersion=${{ steps.chat2db_version.outputs.substring }}
cp -r dist ../chat2db-server/chat2db-server-start/src/main/resources/static/front
# 编译服务端java版本
- name: Build Java
run: mvn clean package -B '-Dmaven.test.skip=true' -f chat2db-server/pom.xml
# 复制服务端java 到指定位置
- name: Copy App
run: |
cp chat2db-server/chat2db-server-start/target/chat2db-server-start.jar chat2db-client/static/
- name: Prepare Build Electron
run: |
cd chat2db-client
yarn run build:web:desktop --appVersion=${{ steps.chat2db_version.outputs.substring }}
# 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 amd64
- name: Build/release Electron app for MacOS X64
if: ${{ runner.os == 'macOS' && matrix.arch == 'amd64' }}
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
# amd64 notarization
- name: Notarization amd64 App
if: ${{ runner.os == 'macOS' && matrix.arch == 'amd64' }}
run: |
xcrun altool --notarize-app --primary-bundle-id "${{secrets.MAC_PRIMARY_BUNDLE_ID}}" --username "${{secrets.MAC_APPLE_ID}}" --password "${{secrets.MAC_APPLE_PASSWORD}}" --asc-provider "${{secrets.MAC_ASC_PROVIDER}}" -t osx --file chat2db-client/release/Chat2DB-${{ steps.chat2db_version.outputs.substring }}.dmg
# 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 altool --notarize-app --primary-bundle-id "${{secrets.MAC_PRIMARY_BUNDLE_ID}}" --username "${{secrets.MAC_APPLE_ID}}" --password "${{secrets.MAC_APPLE_PASSWORD}}" --asc-provider "${{secrets.MAC_ASC_PROVIDER}}" -t osx --file chat2db-client/release/Chat2DB-${{ steps.chat2db_version.outputs.substring }}-arm64.dmg
# 准备要需要的数据 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
# 准备要需要的数据 MacOS amd64
- name: Prepare upload for MacOS amd64
if: ${{ runner.os == 'macOS' && matrix.arch == 'amd64' }}
run: |
mkdir oss_temp_file
cp chat2db-client/static/chat2db-server-start.jar ./oss_temp_file
cp -r chat2db-client/release/*.dmg ./oss_temp_file
# 准备要需要的数据 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
# 把文件上传到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: 'latest'
- name: Upload to oss
run: |
ossutil cp -rf --acl=public-read ./oss_temp_file/ oss://chat2db/release/${{ steps.chat2db_version.outputs.substring }}/
# 构建完成通知
- 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-chat2db.alibaba.com/static/happy100.jpg) \n ### 任务id:[${{ github.run_id }}](https://github.com/alibaba/Chat2DB/actions/runs/${{ github.run_id }}) \n ### Windows下载地址:[https://oss-chat2db.alibaba.com/release/${{ steps.chat2db_version.outputs.substring }}/Chat2DB%20Setup%20${{ steps.chat2db_version.outputs.substring }}.exe](https://oss-chat2db.alibaba.com/release/${{ steps.chat2db_version.outputs.substring }}/Chat2DB%20Setup%20${{ steps.chat2db_version.outputs.substring }}.exe) "
}
# 构建完成通知
- name: Send dingtalk message for MacOS amd64
if: ${{ runner.os == 'macOS' && matrix.arch == 'amd64' }}
uses: ghostoy/dingtalk-action@master
with:
webhook: ${{ secrets.DINGTALK_WEBHOOK }}
msgtype: markdown
content: |
{
"title": "MacOS-amd64-release-构建完成通知",
"text": "# MacOS-amd64-release-打包完成通知 \n ![bang](https://oss-chat2db.alibaba.com/static/happy100.jpg) \n ### 任务id:[${{ github.run_id }}](https://github.com/alibaba/Chat2DB/actions/runs/${{ github.run_id }}) \n ### Intel芯片下载地址:[https://oss-chat2db.alibaba.com/release/${{ steps.chat2db_version.outputs.substring }}/Chat2DB-${{ steps.chat2db_version.outputs.substring }}.dmg](https://oss-chat2db.alibaba.com/release/${{ steps.chat2db_version.outputs.substring }}/Chat2DB-${{ steps.chat2db_version.outputs.substring }}.dmg) \n ### jar包下载地址:[https://oss-chat2db.alibaba.com/release/${{ steps.chat2db_version.outputs.substring }}/chat2db-start.jar](https://oss-chat2db.alibaba.com/release/${{ steps.chat2db_version.outputs.substring }}/chat2db-start.jar) "
}
# 构建完成通知
- 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-chat2db.alibaba.com/static/happy100.jpg) \n ### 任务id:[${{ github.run_id }}](https://github.com/alibaba/Chat2DB/actions/runs/${{ github.run_id }}) \n ### Apple芯片下载地址:[https://oss-chat2db.alibaba.com/release/${{ steps.chat2db_version.outputs.substring }}/Chat2DB-${{ steps.chat2db_version.outputs.substring }}-arm64.dmg](https://oss-chat2db.alibaba.com/release/${{ steps.chat2db_version.outputs.substring }}/Chat2DB-${{ steps.chat2db_version.outputs.substring }}-arm64.dmg) "
}