CI/CD 集成
Shoplazza CLI 支持 CI/CD 流水线中的非交互式认证和自动化。
CI/CD 中的认证
shell
# 使用 UAT 令牌
shoplazza auth login --uat $SHOPLAZZA_UAT --store-domain $SHOPLAZZA_STORE
# 或把令牌导出为 SHOPLAZZA_UAT 并省略 --uat,auth login 会读取它
export SHOPLAZZA_UAT=your-token
shoplazza auth login --store-domain my-store.myshoplaza.com
示例中的 SHOPLAZZA_STORE 是流水线自己的变量,存放店铺域名,CLI 并不读取它。用 UAT 登录店铺时无需 --scope 或 --domain:店铺令牌沿用账号已授予的作用域。
UAT 登录不会保存 Partner 令牌,因此调用 Partner 后台的 app 命令(如 app deploy)仍需通过浏览器 auth login 登录,无法在全新的 CI 环境中运行。下面的示例改为运行店铺级命令。
GitHub Actions 示例
yaml
name: Deploy Theme
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm install -g shoplazza-cli
- run: shoplazza auth login --uat ${{ secrets.SHOPLAZZA_UAT }} --store-domain ${{ secrets.SHOPLAZZA_STORE }}
- run: shoplazza themes push --theme-id ${{ secrets.SHOPLAZZA_THEME_ID }}
GitLab CI 示例
yaml
deploy:
image: node:20
stage: deploy
script:
- npm install -g shoplazza-cli
- shoplazza auth login --uat $SHOPLAZZA_UAT --store-domain $SHOPLAZZA_STORE
- shoplazza themes push --theme-id $SHOPLAZZA_THEME_ID
only:
- main
环境变量
| 变量 | 说明 |
|---|---|
SHOPLAZZA_UAT | 用户访问令牌;省略 --uat 时 auth login 使用它 |
CI | 多数 CI 平台会自动设置;关闭交互式提示,并把默认输出格式改为 json |
SHOPLAZZA_CLI_NO_INTERACTIVE | 在未设置 CI 的环境中关闭交互式提示(等同于 --no-input) |
完整列表见环境变量。
最佳实践
- 安全存储密钥 — 使用 CI/CD 平台的密钥管理,切勿提交令牌
- 最小作用域 — 只请求部署工作流所需的作用域
- 固定 CLI 版本 — 使用
npm install -g [email protected]确保可复现构建 - 先预演 — 在预发布环境使用
--dry-run测试后再部署到生产