跳到主要内容

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 测试后再部署到生产