Browse Source

Build and Release Vaultwarden for macOS M4

add Release
pull/7042/head
cloud 1 week ago
parent
commit
ba0f341e40
  1. 63
      .github/workflows/build-macos-m4.yml

63
.github/workflows/build-macos-m4.yml

@ -1,13 +1,16 @@
name: Build Vaultwarden for macOS M4 (ARM64) name: Build and Release Vaultwarden for macOS M4
on: on:
push: push:
branches: [ main ] tags:
workflow_dispatch: - 'v*' # 当推送以 v 开头的 tag 时触发 (如 v1.0.0)
workflow_dispatch: # 允许手动触发测试
jobs: jobs:
build: build:
runs-on: macos-latest runs-on: macos-latest
permissions: # 赋予写入 Release 的权限
contents: write
steps: steps:
- name: Checkout code - name: Checkout code
@ -20,29 +23,17 @@ jobs:
- name: Install Dependencies - name: Install Dependencies
run: | run: |
# 1. 安装所有必需的数据库客户端和工具
brew install openssl mysql-client libpq pkg-config brew install openssl mysql-client libpq pkg-config
{
# 2. 设置 OpenSSL 路径 echo "OPENSSL_ROOT_DIR=$(brew --prefix openssl)"
OPENSSL_PATH=$(brew --prefix openssl) echo "MYSQLCLIENT_LIB_DIR=$(brew --prefix mysql-client)/lib"
echo "OPENSSL_ROOT_DIR=$OPENSSL_PATH" >> $GITHUB_ENV echo "MYSQLCLIENT_VERSION=8.0"
echo "LIBRARY_PATH=$(brew --prefix libpq)/lib"
# 3. 设置 MySQL 路径与环境变量 echo "PKG_CONFIG_PATH=$(brew --prefix libpq)/lib/pkgconfig"
MYSQL_PATH=$(brew --prefix mysql-client) echo "LIBSQLITE3_SYS_BUNDLED=1"
echo "MYSQLCLIENT_LIB_DIR=$MYSQL_PATH/lib" >> $GITHUB_ENV } >> $GITHUB_ENV
echo "MYSQLCLIENT_VERSION=8.0" >> $GITHUB_ENV echo "$(brew --prefix mysql-client)/bin" >> $GITHUB_PATH
echo "$MYSQL_PATH/bin" >> $GITHUB_PATH echo "$(brew --prefix libpq)/bin" >> $GITHUB_PATH
# 4. 设置 PostgreSQL (libpq) 路径
# libpq 同样是 keg-only 的,必须手动导出路径给链接器
PQ_PATH=$(brew --prefix libpq)
echo "LDFLAGS=-L$PQ_PATH/lib" >> $GITHUB_ENV
echo "CPPFLAGS=-I$PQ_PATH/include" >> $GITHUB_ENV
echo "PKG_CONFIG_PATH=$PQ_PATH/lib/pkgconfig" >> $GITHUB_ENV
# 这一步很关键:将 libpq 的 bin 目录加入 PATH
echo "$PQ_PATH/bin" >> $GITHUB_PATH
# 显式给 Rust 的链接器指定库文件路径
echo "LIBRARY_PATH=$PQ_PATH/lib" >> $GITHUB_ENV
- name: Rust Cache - name: Rust Cache
uses: Swatinem/rust-cache@v2 uses: Swatinem/rust-cache@v2
@ -53,13 +44,21 @@ jobs:
--target aarch64-apple-darwin \ --target aarch64-apple-darwin \
--features sqlite,mysql,postgresql --features sqlite,mysql,postgresql
- name: Prepare Artifact - name: Prepare Assets
run: | run: |
mkdir -p output mkdir -p publish
cp target/aarch64-apple-darwin/release/vaultwarden ./output/ # 将二进制文件重命名,方便用户识别架构
cp target/aarch64-apple-darwin/release/vaultwarden ./publish/vaultwarden-macos-arm64
# 进入目录进行压缩 (可选,推荐压缩以减小体积)
cd publish && tar -czvf vaultwarden-macos-arm64.tar.gz vaultwarden-macos-arm64
- name: Upload Binary - name: Create GitHub Release
uses: actions/upload-artifact@v4 uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with: with:
name: vaultwarden-macos-m4 files: ./publish/vaultwarden-macos-arm64.tar.gz
path: ./output/vaultwarden name: Release ${{ github.ref_name }}
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Loading…
Cancel
Save