@abgov/nx-oc

中文文档
13.12.2发布于 2026/09/24Apache-2.0TypeScriptCommonJS构建来源已验证近 30 天下载 2201

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

中文使用文档
文档目录13 节
  1. 先决条件
  2. 安装
  3. 快速启动
  4. 发电机
  5. pipeline
  6. apply-infra
  7. deployment
  8. 执行者 : apply
  9. 选项
  10. 沙盒部署(当地建筑)
  11. 典型的工作流程
  12. 生产管道
  13. 沙盒喷发

@abgov/nx-oc

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

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

先决条件

  • 打开Shift CLI (oc(中文(简体) ) 安装和运行 PATH
  • 活跃的 OpenShift 登录 : oc login <url> --token=<token>
  • 为建设基础设施和每个运行时间环境(dev, test, prod)提供单独的 OpenShift 项目

安装

npm i -D @abgov/nx-oc

快速启动

# 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清单,包括在所有环境中使用的共享建设基础设施资源.

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。没有选择——从工作空间读取生成的管道配置.

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

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


deployment

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

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


执行者 : apply

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

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

然后运行 :

npx nx run my-app:deploy

选项

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

ocProject 接受三种表格:

// 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是因为 .openshift/<project>/<project>.yml ——两股 同样的 .openshift/<project>/Dockerfile (无论哪种方式都一样) 但永远不要碰 彼此显相. 一个项目可以同时进行——一个真正的CI驱动管道 部署和用于当地实验的沙盒——同时.

# 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 共发布 130 个版本,首次发布于 2021/03/30;过去 12 个月发布了 60 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
13.12.2latest2026/09/241 个月前
13.12.12026/09/111 个月前
13.12.02026/09/022 个月前
13.11.12026/09/022 个月前
13.11.02026/09/012 个月前
13.10.12026/08/252 个月前

其他发布通道:beta → 13.8.1-beta.2。

关于 @abgov/nx-oc 的常见问题

@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 和提交记录判断。