# CI/CD 集成

> 在 CI/CD 中使用 Shoplazza CLI：用用户访问令牌（UAT）完成非交互式认证，并参照 GitHub Actions 与 GitLab CI 示例配置流水线。

Shoplazza CLI 支持 CI/CD 流水线中的非交互式认证和自动化。

## CI/CD 中的认证

```shell
# 使用 UAT 令牌
shoplazza auth login --uat $SHOPLAZZA_UAT --store-domain $SHOPLAZZA_STORE

# 或设置环境变量（无需显式登录）
export SHOPLAZZA_UAT=your-token
export SHOPLAZZA_STORE=my-store.myshoplaza.com
```

## GitHub Actions 示例

```yaml
name: Deploy App
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 app deploy
```

## 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 app deploy
  only:
    - main
```

## 环境变量

| 变量 | 说明 |
|------|------|
| `SHOPLAZZA_UAT` | 用户访问令牌 |
| `SHOPLAZZA_STORE` | 店铺域名 |

## 最佳实践

* **安全存储密钥** — 使用 CI/CD 平台的密钥管理，切勿提交令牌
* **最小作用域** — 只请求部署工作流所需的作用域
* **固定 CLI 版本** — 使用 `npm install -g shoplazza-cli@x.y.z` 确保可复现构建
* **先预演** — 在预发布环境使用 `--dry-run` 测试后再部署到生产
