Skip to content

ci: 我们现在先做 x64 架构的 macos系统, 后续在编译arm64的 #74

ci: 我们现在先做 x64 架构的 macos系统, 后续在编译arm64的

ci: 我们现在先做 x64 架构的 macos系统, 后续在编译arm64的 #74

Workflow file for this run

on:
push:
branches:
- test-github-actions-mac
pull_request:
branches:
- test-github-actions-mac
jobs:
build:
# runs-on: macos-latest # 指定虚拟机 现在的latest代表的macos-14是arm64架构的
runs-on: macos-13 # 指定虚拟机, 指定macos-13, 以获得x64架构的打包。
steps:
- name: Checkout code
uses: actions/checkout@v4 # 将仓库代码复制到虚拟机文件系统中
- name: Set up Go
uses: actions/setup-go@v5 # 安装go依赖
with:
go-version: 1.22.0 # 指定go依赖版本
- name: Install Node.js
uses: actions/setup-node@v4 # 安装nodejs
with:
node-version: "16" # 指定nodejs 版本
- name: Install Quasar CLI
run: npm install -g @quasar/cli # 安装quasar/cli
- name: Install frontend dependencies
working-directory: frontend # 以项目根目录为起点,指定对应目录
run: npm install # 安装前端依赖
- name: Build Windows Application
shell: bash # 我不喜欢powershell(即使是在windows下) # 这个指定, 应该会让我们使用git-bash。
run: | # 指定此run为多个命令依次执行
cd sdk
make mac
# - name: Debug Generated Build
# uses: actions/upload-artifact@v3 # 安装用于上传最终打包结果到执行完毕界面的脚本
# with:
# name: elect
# path: frontend/dist/electron/*
- name: Find the generated installer && ZIP the generated installer
working-directory: frontend/dist/electron/Packaged
shell: bash # 由于我们下方要使用的find命令, powershell中没有(更重要的是, 我不喜欢powershell) # 这个指定, 应该会让我们使用git-bash。
run: |
# 由于find -name 'KeyTone-Setup-*-win.exe'得到的结果为./KeyTone-Setup-*-win.exe , 而我们不需要./ , 因此使用basename提取文件名
# 由于大部分人的计算机是x64架构的(现在x86的纯32位系统几乎没人用了, 因此我的应用只支持64位的机器), 所以默认不显示架构。(我们通过正则表达式来除掉这部分)(主要显示了3中形式太乱, 如amd64、x64、x86_64)
# * 这部分正则的原理是, 替换: 将 `从mac末尾的任意字符开头至遇到第一个.后的所有内容` 使用`mac.` 来替换。
# ----------------------------------------------------------------------------------------INSTALLER_NAME_DMG
INSTALLER_NAME_DMG=$(basename $(find . -name 'KeyTone-*-mac*dmg'))
# mv $INSTALLER_NAME_DMG $(echo $INSTALLER_NAME_DMG | sed 's/mac[^.]*\./mac./')
# INSTALLER_NAME_DMG=$(echo $INSTALLER_NAME_DMG | sed 's/mac[^.]*\./mac./')
echo "INSTALLER_NAME_DMG=$INSTALLER_NAME_DMG" >> $GITHUB_ENV
- name: Upload Build Artifact DMG
uses: actions/upload-artifact@v3 # 安装用于上传最终打包结果到执行完毕界面的脚本
with:
name: ${{ env.INSTALLER_NAME_DMG }}
path: frontend/dist/electron/Packaged/${{ env.INSTALLER_NAME_DMG }}
# - name: Calculate File Hashes
# shell: bash
# run: |
# SHA256=$(sha256sum frontend/dist/electron/Packaged/${{ env.INSTALLER_NAME }} | awk '{print $1}')
# MD5=$(md5sum frontend/dist/electron/Packaged/${{ env.INSTALLER_NAME }} | awk '{print $1}')
# echo "SHA256=$SHA256" >> $GITHUB_ENV
# echo "MD5=$MD5" >> $GITHUB_ENV
# ##################################################################################################################
# # 开始构建Release
# ##################################################################################################################
# - name: Create GitHub Release
# id: create_release # id 项的作用是为这个步骤分配一个唯一的标识符。 使得你可以在后续的步骤中引用这个步骤的输出或状态(以step开头)。这样可以使工作流更加清晰和易于维护。
# uses: actions/create-release@v1 # 安装用户自动创建release的脚本
# env:
# GITHUB_TOKEN: ${{ secrets.PERSONAL_TOKEN }}
# with:
# tag_name: ${{ github.ref }} # 选择此release的tag名称<准确来讲这是触发工作流的分支或标签的完整引用--即带前缀的`refs/heads/ 或 refs/tags/ 前缀`>(可以尝试手动创建一个release, 其界面上是有一个让你选择tag的选项框的)
# release_name: Release ${{ github.ref_name }} # 这个是当前release的名称<这个并非像上面一样的完整引用--即不包括`refs/heads/ 或 refs/tags/ 前缀`>。(理论上github.ref_name的值: 如果当前actions是被push/tag触发的, 则会选择tag名; 若仅是push触发, 则会选择分支名)
# draft: true # 此项为true, 表示发布的是仅自己可见的草稿(我们可以手动编辑检查后在手动发布)
# prerelease: false # 此项若为true, 则会将release打上预发布标志
# body: |
# ### Overview
# ### Security
# ##### The SHA256 hash sum
# `${{ env.INSTALLER_NAME }}` is:
# * `${{ env.SHA256 }}`
# ##### The MD5 hash sum
# `${{ env.INSTALLER_NAME }}` is:
# * `${{ env.MD5 }}`
# ### Changelogs
# - name: Upload Build Artifact to Release
# uses: actions/upload-release-asset@v1 # 安装用于上传最终打包结果到本次release的脚本
# env:
# GITHUB_TOKEN: ${{ secrets.PERSONAL_TOKEN }}
# with:
# upload_url: ${{ steps.create_release.outputs.upload_url }} # 这里就通过之前步骤的唯一id, 进行了进一步的操作(以将构建后的结果, 上传到此步骤的可供用户下载的地方)
# asset_path: frontend/dist/electron/Packaged/${{ env.INSTALLER_NAME }}
# asset_name: ${{ env.INSTALLER_NAME }}
# asset_content_type: application/octet-stream # asset_content_type 的作用是指定上传文件的 MIME 类型。在这个例子中,它被设置为 application/octet-stream,这是一种通用的二进制文件类型。这样做的目的是告诉 GitHub 这个文件的类型,以便在下载时正确处理它。
# - name: Upload Build Artifact ZIP to Release
# uses: actions/upload-release-asset@v1 # 安装用于上传最终打包结果到本次release的脚本
# env:
# GITHUB_TOKEN: ${{ secrets.PERSONAL_TOKEN }}
# with:
# upload_url: ${{ steps.create_release.outputs.upload_url }} # 这里就通过之前步骤的唯一id, 进行了进一步的操作(以将构建后的结果, 上传到此步骤的可供用户下载的地方)
# asset_path: frontend/dist/electron/Packaged/${{ env.INSTALLER_NAME_NO_EXE}}_exe.zip
# asset_name: ${{ env.INSTALLER_NAME_NO_EXE }}_exe.zip
# asset_content_type: application/zip # asset_content_type 的作用是指定上传文件的 MIME 类型。在这个例子中,它被设置为 application/zip,这是一种通用的压缩文件类型。这样做的目的是告诉 GitHub 这个文件的类型,以便在下载时正确处理它。