ci: 我们现在先做 x64 架构的 macos系统, 后续在编译arm64的 #74
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
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 这个文件的类型,以便在下载时正确处理它。 |