You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
2.1 KiB
65 lines
2.1 KiB
name: Build Vaultwarden for macOS M4 (ARM64)
|
|
|
|
on:
|
|
push:
|
|
branches: [ main ]
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: macos-latest
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install Rust toolchain
|
|
uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
targets: aarch64-apple-darwin
|
|
|
|
- name: Install Dependencies
|
|
run: |
|
|
# 1. 安装所有必需的数据库客户端和工具
|
|
brew install openssl mysql-client libpq pkg-config
|
|
|
|
# 2. 设置 OpenSSL 路径
|
|
OPENSSL_PATH=$(brew --prefix openssl)
|
|
echo "OPENSSL_ROOT_DIR=$OPENSSL_PATH" >> $GITHUB_ENV
|
|
|
|
# 3. 设置 MySQL 路径与环境变量
|
|
MYSQL_PATH=$(brew --prefix mysql-client)
|
|
echo "MYSQLCLIENT_LIB_DIR=$MYSQL_PATH/lib" >> $GITHUB_ENV
|
|
echo "MYSQLCLIENT_VERSION=8.0" >> $GITHUB_ENV
|
|
echo "$MYSQL_PATH/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
|
|
uses: Swatinem/rust-cache@v2
|
|
|
|
- name: Build Vaultwarden
|
|
run: |
|
|
cargo build --release \
|
|
--target aarch64-apple-darwin \
|
|
--features sqlite,mysql,postgresql
|
|
|
|
- name: Prepare Artifact
|
|
run: |
|
|
mkdir -p output
|
|
cp target/aarch64-apple-darwin/release/vaultwarden ./output/
|
|
|
|
- name: Upload Binary
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: vaultwarden-macos-m4
|
|
path: ./output/vaultwarden
|