# @abgov/nx-oc 中文文档

规范地址：https://npmcn.com/package/%40abgov/nx-oc/

版本：13\.12\.2
npm 元数据更新时间：2026-09-24T15:06:28.038Z
中文译文更新时间：2026-11-06T22:51:50.620Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40abgov/nx-oc
原文对照：https://npmcn.com/package/%40abgov/nx-oc/?lang=original
项目主页：https://github.com/GovAlta/nx-tools#readme
源码仓库：https://github.com/GovAlta/nx-tools

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：441 kB，134 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：4 个
- peer 依赖：tslib ^2\.0\.0，@nx/devkit ^23\.0\.0
- 首次发布：2021-03-29T17:05:49.423Z
- 最新版本发布：2026-09-24T15:06:27.663Z
- 近 30 天下载量：2201（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：130（近 12 个月 60 个）

## 中文简介

艾伯塔省政府-OpenShift的Nx插件.

## 安装

```sh
npm install @abgov/nx-oc
```

也可以使用：`pnpm add @abgov/nx-oc`、`yarn add @abgov/nx-oc`、`bun add @abgov/nx-oc`

## README

# @abgov/nx-oc

为艾伯塔省政府应用程序生成和应用OpenShift运单的Nx插件.

该插件为 CI/CD 管道设置和每个应用程序的部署配置提供发电机,并为运行提供执行器 `oc apply` 对抗 OpenShift 集群.

## 先决条件

-   [打开Shift CLI (`oc`(中文(简体) )](https://docs.openshift.com/container-platform/latest/cli_reference/openshift_cli/getting-started-cli.html) 安装和运行 `PATH`
-   活跃的 OpenShift 登录 : `oc login <url> --token=<token>`
-   为建设基础设施和每个运行时间环境(dev, test, prod)提供单独的 OpenShift 项目

## 安装

```bash
npm i -D @abgov/nx-oc
```

## 快速启动

```bash
# 1. Create workspace and install plugin
npx create-nx-workspace my-workspace
npm i -D @abgov/nx-oc

# 2. Login to OpenShift
oc login <url> --token=<token>

# 3. Generate pipeline infrastructure manifests
npx nx g @abgov/nx-oc:pipeline my-pipeline \
  --infra my-infra-project \
  --envs "my-dev my-test my-prod" \
  --registry ghcr.io/my-org

# 4. Apply the generated infrastructure manifests to the cluster
npx nx g @abgov/nx-oc:apply-infra

# 5. Add deployment manifests to each application
npx nx g @abgov/nx-oc:deployment my-app --appType node --env dev
```

## 发电机

### `pipeline`

生成一个CI/CD管道的OpenShift清单,包括在所有环境中使用的共享建设基础设施资源.

```bash
npx nx g @abgov/nx-oc:pipeline my-pipeline \
  --infra my-infra-project \
  --envs "my-dev my-test my-prod" \
  --registry ghcr.io/my-org \
  --type actions
```

| 选项 | 别名 | 需求 | 说明 |
| --- | --- | --- | --- |
| `pipeline` | —— 说 | 对 | OpenShift 管道名称 |
| `infra` | `-i` | 对 | 用于建设基础设施的 OpenShift 项目名称 |
| `envs` | `-e` | 对 | OpenShift 环境项目(例如, `"my-dev my-test my-prod"`(中文(简体) ) |
| `registry` | `-r` | 对 | 发布图像的集装箱登记册(例如:, `ghcr.io/my-org`(中文(简体) ) |
| `type` | `-t` | 没有 | 管道类型 : `actions` (违约)或 `jenkins` |
| `apply` | `-a` | 没有 | 生成后立即将生成的运算表应用到 OpenShift |

* * *

### `apply-infra`

应用 OpenShift 基础设施列表 `pipeline`。没有选择——从工作空间读取生成的管道配置.

```bash
npx nx g @abgov/nx-oc:apply-infra
```

使用 `apply-infra` 后续行动 `pipeline` 当您想要推迟集群提供时,或者作为编辑生成的列表后重新应用的步骤.

* * *

### `deployment`

将 OpenShift 部署表(部署,服务,路由等)添加到一个针对特定环境的现有Nx项目.

```bash
npx nx g @abgov/nx-oc:deployment my-app --appType node --env dev
```

| 选项 | 别名 | 需求 | 说明 |
| --- | --- | --- | --- |
| `project` | —— 说 | 对 | 将部署单添加到 |
| `appType` | `-t` | 对 | 应用程序类型 : `frontend`, (中文(简体) ), `dotnet`,或 `node` |
| `env` | `-e` | 对 | ADSP环境: `dev`, (中文(简体) ), `test`,或 `prod` |
| `accessToken` | `-at` | 没有 | 非交互检索 ADSP 配置的访问令牌 |

每个应用程序运行一次生成器。 对于典型的 三环境设置,运行三次 `--env dev`, (中文(简体) ), `--env test`,以及 `--env prod`。 。 。 .

`deployment` 写入 `.openshift/<project>/<project>.yml`· ; [`sandbox`](https://npmcn.com/package/%40abgov/nx-oc/#readme-sandbox-deployment-local-build) 写入 `.openshift/<project>/<project>.sandbox.yml` 和它并肩并肩 分享同样的 `.openshift/<project>/Dockerfile` (无论哪种方式都一样). 项目既可以有,也可以有 \* 真正由CI驱动的管道部署和用于当地试验的沙盒——同样 时间;运行一个从不接触另一个的表。 每一个物体都使 携带一个 `deployment-mode: pipeline`编号 :`sandbox` 标签( 除了现有的 `app` 标签, 这么说 `teardown-<env>` 财务报告和审定财务报表 `sandbox-teardown` 对象的标签选择器删除永远无法 删除其它模式的资源, 即使它们曾经在同一命名空间降落 .

* * *

## 执行者 : `apply`

运行 `oc apply` 以部署应用程序的 OpenShift 运单。 配置为项目的目标 `project.json`数字 :

```json
{
  "targets": {
    "deploy": {
      "executor": "@abgov/nx-oc:apply",
      "options": {
        "ocProject": "my-dev-project"
      }
    }
  }
}
```

然后运行 :

```bash
npx nx run my-app:deploy
```

### 选项

| 选项 | 需求 | 说明 |
| --- | --- | --- |
| `ocProject` | 对 | OpenShift 工程将应用到 |

`ocProject` 接受三种表格:

```json
// Single project
{ "ocProject": "my-dev" }

// Multiple projects
{ "ocProject": ["my-dev", "my-test"] }

// Tagged deployments
{ "ocProject": [{ "project": "my-dev", "tag": "v1.2.3" }] }
```

* * *

## 沙盒部署(当地建筑)

对于快速迭代 `sandbox` 每件应用程序安装一个电线 图像 **本地与 pockman**,将其推入集装箱登记册(GHCR),以及 导入到您的 OpenShift 命名空间中 。 (要求 Nx23线, `@abgov/nx-oc` (13.x.) (中文(简体) )

`sandbox` 写入 `.openshift/<project>/<project>.sandbox.yml`,同时 [`deployment`](https://npmcn.com/package/%40abgov/nx-oc/#readme-deployment)是因为 `.openshift/<project>/<project>.yml` ——两股 同样的 `.openshift/<project>/Dockerfile` (无论哪种方式都一样) 但永远不要碰 彼此显相. 一个项目可以同时进行——一个真正的CI驱动管道 部署和用于当地实验的沙盒——同时.

```bash
# Add the sandbox targets to a project (run once per app)
npx nx g @abgov/nx-oc:sandbox my-app --sandboxProject=<namespace> --registry=ghcr.io/<org>

# Build → podman → push → import → roll out
npx nx run my-app:sandbox

# Tear down the sandbox resources + delete the pushed image
npx nx run my-app:sandbox-teardown
```

先决条件: `podman` (机器启动于macOS), `oc` 登录到 组合,和 `gh` 认证为账户 **`write:packages`** 编辑 登记册(部署为: `gh auth token` 推和拉的秘密——不 PAT是存储的,所以账户必须是 **活动** `gh` 账户).

部署是 `@abgov/nx-oc:sandbox` **执行器**,因此其逻辑被版本化 在插件中( 定义到达每个工程 `npm update`) (中文(简体) ). 它会:

-   **飞行前** `oc`编号 :`gh`编号 :`podman` 并快速失败可操作信件 在建造之前;
-   **重试 `oc import-image`** 匀支 `oc tag` 调和种族;
-   **自动检测数据库** (从 `adsp:database:*` 项目标签,或 细雨 `db:migrate` 和提供共享的Postgres/mongo实例+ 每个应用程序数据库+移入的容器——否 `--database` 需要旗帜;
-   (单位:千美元) **前端**,确保每个对接后端的服务存在 **警告时** 如果后端没有运行的 pocks( 代理) `/api` 电话502;通过 `--deployBackend` 在同一运行中部署后端;
-   支持 `--skipBuild` 编号 : `--skipPush` 改为 **恢复** a 部分部署.

运行生成器也写着 `.openshift/<app>/SANDBOX.md` a 包括: 部署/分解程序簿(飞行前修正、恢复旗帜、人工完成) (d) 程序、配额/自动/CrashLoopBackOff指导).

* * *

## 典型的工作流程

### 生产管道

1.  运行 `pipeline` 一旦每个工作区生成共享的建筑基础设施清单.
2.  运行 `apply-infra` (或通过) `--apply` 改为 `pipeline`(b) 为专题组提供资源.
3.  运行 `deployment` 用于每个应用程序和环境组合.
4.  添加一个 `apply` 每个应用程序的执行目标 `project.json`。 。 。 .
5.  在您的 GitHub 行动或 Jenkins 管道,呼叫 `npx nx run my-app:deploy` 以适用CI/CD期间的运单.

### 沙盒喷发

1.  运行 `sandbox` 每个申请,通过 `--sandboxProject` 财务报告和审定财务报表 `--database` 视需要而定.
2.  运行 `npx nx run my-app:sandbox` 建设,推进,部署. 重复每个变化.

## 常见问题

### @abgov/nx-oc 是什么？

艾伯塔省政府-OpenShift的Nx插件\.

### 如何安装 @abgov/nx-oc？

在项目目录运行 npm install @abgov/nx-oc，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：tslib（^2\.0\.0）、@nx/devkit（^23\.0\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @abgov/nx-oc 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @abgov/nx-oc 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @abgov/nx-oc 可以商用吗？

@abgov/nx-oc 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @abgov/nx-oc 的下载量有多少？

根据 npm 官方下载统计，@abgov/nx-oc 在 2026/10/05 – 2026/11/03 这 30 天内被下载 2,201 次，日均约 73 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @abgov/nx-oc 还在维护吗？

最新版本 13\.12\.2 发布于 2026/09/24（1 个月前）；至今共发布 130 个版本，其中过去 12 个月发布了 60 个；首次发布于 2021/03/30。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

