{"id":19736410,"url":"https://github.com/erda-project/erda-actions","last_synced_at":"2025-07-05T22:37:55.915Z","repository":{"id":177524047,"uuid":"656097242","full_name":"erda-project/erda-actions","owner":"erda-project","description":null,"archived":false,"fork":false,"pushed_at":"2024-09-13T01:38:22.000Z","size":14352,"stargazers_count":4,"open_issues_count":4,"forks_count":13,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-09-13T14:32:23.024Z","etag":null,"topics":["devops","kubernetes"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/erda-project.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-06-20T08:53:50.000Z","updated_at":"2024-09-13T01:38:26.000Z","dependencies_parsed_at":null,"dependency_job_id":"10458432-379b-44f7-b418-076bdb8e590d","html_url":"https://github.com/erda-project/erda-actions","commit_stats":null,"previous_names":["erda-project/erda-actions"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erda-project%2Ferda-actions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erda-project%2Ferda-actions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erda-project%2Ferda-actions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erda-project%2Ferda-actions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/erda-project","download_url":"https://codeload.github.com/erda-project/erda-actions/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224197973,"owners_count":17271999,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["devops","kubernetes"],"created_at":"2024-11-12T01:07:04.418Z","updated_at":"2024-11-12T01:07:04.980Z","avatar_url":"https://github.com/erda-project.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Erda Actions\n\n## Extensions\n\nExtension（扩展）是平台定义的扩展对象，用来自定义扩展平台的能力，目前包含两类扩展：Action 和 AddOn。\n\n## 扩展的定义\n\n扩展（以下简称 Ext ）使用 dice.yml、spec.yml 和 README.md 这三个文件来定义。这三个文件统称为一个 Ext 的 **元数据文件**。\n\n### dice.yml\n\nExt 使用标准的 dice.yml 来描述 **运行时配置**。这里不再赘述 dice.yml 细节。\n\nAction 和 AddOn 的 dice.yml 略有不同，请查看示例:\n\n- [Action 示例 dice.yml](./actions/echo/1.0/dice.yml)\n- [AddOn 示例 dice.yml](./addons/mysql/5.7.23/dice.yml)\n\n### spec.yml\n\nExt 使用 spec.yml 来描述 **属性及参数规范**。\n\n这里描述的信息主要用于 **界面图形化编辑** 以及 **官网扩展市场展示**。\n\n```yaml\nname: custom-script  # 名字\nversion: \"1.0\"       # 版本号\ntype: action         # 类型，是 action 还是 addOn\ncategory: build      # 扩展所属的类别，用于在 Dice 官网扩展市场界面分类展示，目前可选：build / big_data / microservice / ability / search / distributed_cooperation / database / message\ndesc: execute cmds   # 对 Ext 的简单文字描述\n\n# 国际化 在 locale 中定义\n# 使用方式  ${{ i18n.key }}\nlocale:\n  zh-CN:\n    command: \"Commands\"\n  en-US:\n    command: \"运行的命令\"\n\n# 参数声明，主要用于图形化编辑\n# type: 参数类型，前端图形化编辑时会根据参数类型使用不同的输入框样式，并渲染出对应的文本。\n# 支持的类型列表，具体用法请参见下方示例\n# - string (默认值，不填写时即为 string 类型)\n# - string_array\n# - struct\n# - struct_array\n# - float\n# - int\n# - map\nparams:\n  - name: command\n    desc: ${{ i18n.command }} # 使用国际化 locale 中定义的 key\n    type: string # string / float / int / map\n\n  - name: commands\n    desc: 一组命令\n    type: string_array # go 代码中使用 []string 接收参数\n\n  - name: person\n    desc: 人\n    type: struct\n    struct:\n      - name: name\n        desc: 人名\n        type: string # can omit\n      - name: age\n        desc: 年龄\n        type: int\n\n  - name: kvs\n    desc: 键值对\n    type: map # go 代码中使用 map[string]string 接收参数\n\naccessibleAPIs: # 声明可访问的 OPENAPI 列表\n  # push release\n  - path: /api/releases\n    method: POST\n    schema: http\n\noutputs: # 声明 action 的输出，可被后续 Action 通过 ${alias:OUTPUT:key} 方式引用\n  - name: image\n    desc: 输出的镜像\n...\n```\n\n### README.md\n\nREADME.md 是 Ext 的 **介绍文档**。\n\n尽管你可以在 README.md 中填写任何内容，但是推荐的做法是写得越详细越好，因为这里的每一句话都能帮助用户更好地使用这款扩展。\n\n## 内置扩展和第三方扩展\n\n内置扩展由 Dice 平台开发者开发。与之对应的是第三方开发者开发的扩展，称为第三方扩展。\n\n内置扩展和第三方扩展共同组成了扩展市场里的所有扩展。\n\n## 扩展的使用\n\n扩展市场里定义的扩展是可以运行的。Action 由 Pipeline 运行，AddOn 由 Orchestrator (AddOn-Platform) 运行。\n\n### Action 如何使用\n\n用户可以在 流水线描述文件 中引用 Action，同时在 Dice UI 代码仓库提供了流水线描述文件的图形化编辑界面，方便用户挑选和使用 Action。\n\n### AddOn 如何使用\n\n用户可以在 dice.yml 中引用 AddOn，同时在 Dice UI 代码仓库提供了 dice.yml 的图形化编辑界面，方便用户挑选和使用 AddOn。\n\n## 内置扩展的管理\n\n扩展市场内置了一批扩展，包括 Action 和 AddOn，分别在代码仓库 `actions/` 和 `addons/` 目录下。\n\n### 内置扩展的版本如何管理\n\n扩展市场的版本管理独立于 Dice 版本，不强跟随 Dice 版本升级而升级。\n\n当前，扩展市场 **处于并将长期** 处于 1.0 版本，相对应的，该代码库只维护 master 分支，始终与 **端点 Dice 公有云平台** 的 [扩展市场](https://dice.terminus.io/market/pipeline) (以下简称 端点中心扩展市场) 保持强一致 (master 分支的任何改动都会被立刻同步至中心市场)。\n\n这就要求每款扩展需要尽最大可能保持向前兼容。如果确实有无法兼容的改动出现，请先与团队沟通，再考虑是否升级这款扩展的版本号。\n\n## 如何进行构建\n\n使用以下命令同时构建对应扩展 amd64/arm64 两个平台的镜像\n```bash\nVERSION=${VERSION} make all-arch action=${ACTION}\n```\n\n## 使用 dice cli 维护扩展\n\n我们在 dice cli 中提供了 `dice ext` 子命令，方便对扩展进行维护。\n\n### dice cli 的安装\n\ndice cli 的安装，请查看 [这里](https://dice.app.terminus.io/workBench/projects/70/apps/178/repo/tree/develop/README.md)\n\n### dice ext 命令在具体场景中的使用\n\ndice ext 命令的简单介绍，请查看 [这里](#dice-ext)\n\n#### 如何更改一个扩展使用的资源\n\n- 通过 [dice ext pull](#dice-ext-pull) 拉取指定扩展的元数据文件\n- 修改 dice.yml resources 字段\n- 通过 [dice ext push](#dice-ext-push) 推送更新后的元数据文件至扩展市场，完成更新\n\n#### 如何将市场 A 中的一款扩展推送至市场 B (无需推送镜像至 B 市场所在的 docker registry)\n\n- 通过 `dice login` 登录到市场 A 所在云平台 (注意设置 `~/.dice.d/config` 的 server 配置)\n- 通过 [dice ext pull](#dice-ext-pull) 拉取指定扩展的元数据文件\n- 通过 `dice login` 登录到市场 B 所在云平台 (注意设置 `~/.dice.d/config` 的 server 配置)\n- 通过 [dice ext push](#dice-ext-push) 将指定扩展推送至市场 B\n\n#### 如何从一个市场 A 导出一个已经存在的扩展，并推送至另一个市场 B (同时推送镜像至 B 市场所在的 docker registry)\n\n- 通过 `dice login` 登录到市场 A 所在云平台 (注意设置 `~/.dice.d/config` 的 server 配置)\n- 通过 [dice ext export](#dice-ext-export) 导出指定扩展，包含 image blob\n- 当前环境能否直接访问市场 B 及其 docker registry ?\n  - 若可以，则跳过该步骤\n  - 若不可以，则需要将元数据文件和 image blob 打包拷贝至一台可以直接访问市场 B 及其 docker registry 的机器上\n- 通过 `dice login` 登录到市场 B 所在云平台 (注意设置 `~/.dice.d/config` 的 server 配置)\n- 通过 [dice ext import](#dice-ext-import) 导入指定扩展，包括将 image blob 推送至私有 docker registry 上\n\n## 安装扩展市场\n\n该代码库始终与 **端点 Dice 公有云平台** 的 [扩展市场](https://dice.terminus.io/market/pipeline) 保持同步。\n\n安装扩展市场时，所有扩展信息请直接通过 dice cli 登录 **端点 Dice 公有云平台** 后进行获取。\n\n### 扩展市场在何时需要安装\n\n扩展市场只在中心集群部署。因此，只有在添加中心集群时才需要安装扩展市场。添加 Edge 集群时无需关心扩展市场。\n\n### Edge 集群与扩展市场的关系\n\nEdge 集群不会部署扩展市场。\n\n### 如何在全新安装的中心集群安装扩展市场\n\n安装者根据所需要的扩展列表，将所需数据从 **端点中心扩展市场** 下载并安装至目标扩展市场。\n\n每个 Dice 版本推荐的扩展市场列表，查看 [这里](https://dice.app.terminus.io/workBench/projects/70/apps/3287/repo/tree/develop/extensionctl)\n\n历史 Dice 版本的扩展市场安装：\n\n- Dice 3.4 的扩展市场安装，查看 [这里](docs/INSTALLATION-3.4.md)\n- Dice 3.5 的扩展市场安装，查看 [这里](docs/INSTALLATION-3.5.md)\n\n### 如何在中心集群升级扩展市场\n\n目前不存在扩展市场升级的说法。\n\n只需要将指定的扩展升级至指定版本即可。\n\n## 如何开发一个扩展\n\n查看 [这里](./docs/CONTRIBUTING.md)\n\n## dice ext 命令简单介绍\n\n#### dice ext\n\n查询扩展\n\n```bash\n$ dice ext\nID                       TYPE     CATEGORY                  PUBLIC\napi-gateway              addon    microservice              true\ncanal                    addon    database                  true\nconfigcenter             addon    microservice              true\nconsul                   addon    distributed_cooperation   true\nterminus-elasticsearch   addon    search                    true\nkafka                    addon    message                   true\nmonitor                  addon    microservice              true\nmysql                    addon    database                  true\nredis                    addon    database                  true\nregistercenter           addon    microservice              true\n...\n```\n\n#### dice ext pull\n\n拉取指定 ext 的元信息\n\n```bash\n$ dice ext pull echo@1.0 -d echo\n✔ extension pull success\n\n$ ls echo\nREADME.md dice.yml  spec.yml\n```\n\n#### dice ext push\n\n\u003e 需要系统管理员权限\n\n推送指定 ext 的元信息\n\n```bash\n$ 对元信息进行更新\n\n$ dice ext push -d echo --public -f\n✔ extension echo push success\n```\n\n#### dice ext export\n\n导出指定扩展，包含：\n\n- 元信息\n- 镜像 Blob\n\n```bash\n$ dice ext export echo@1.0 -d echo\nregistry.cn-hangzhou.aliyuncs.com login\n username: fb@terminus.io\npassword:\ndocker://registry.cn-hangzhou.aliyuncs.com/dice/echo-action =\u003e dir:echo/image/echo\nGetting image source signatures\nCopying blob sha256:e7c96db7181be991f19a9fb6975cdbbd73c65f4a2681348e63a141a2192a5f10\nCopying blob sha256:6b34c3a5e37542504a101fcd7f324b0b36cdafeb13f1061e6ce2c58270201fac\nCopying blob sha256:b9b8c261a200259323d418e12d7fb49950dd0fb11d5c18922ba692e3058c8ec5\nCopying blob sha256:eb54ce0d56b748221c0c1b3353ef9a33cd4c8f36dd3542ba73b8254d4ffe9f61\nCopying config sha256:373ef300e43acb288cb201c5999d2bc6f4b790d51652edc1bf9e93c8a56dc1a1\nWriting manifest to image destination\nStoring signatures\n✔ extension echo@1.0 export success\n\n$ tree -R echo\necho\n├── README.md\n├── dice.yml\n├── image\n│   └── echo\n│       ├── 373ef300e43acb288cb201c5999d2bc6f4b790d51652edc1bf9e93c8a56dc1a1\n│       ├── 6b34c3a5e37542504a101fcd7f324b0b36cdafeb13f1061e6ce2c58270201fac\n│       ├── b9b8c261a200259323d418e12d7fb49950dd0fb11d5c18922ba692e3058c8ec5\n│       ├── e7c96db7181be991f19a9fb6975cdbbd73c65f4a2681348e63a141a2192a5f10\n│       ├── eb54ce0d56b748221c0c1b3353ef9a33cd4c8f36dd3542ba73b8254d4ffe9f61\n│       ├── manifest.json\n│       └── version\n└── spec.yml\n\n2 directories, 10 files\n```\n\n#### dice ext import\n\n\u003e 需要系统管理员权限\n\n导入指定扩展，包括：\n\n- 推送元信息至扩展市场\n- docker push 镜像至 docker registry (若不指定 --registry 参数则不推送镜像)\n\n```bash\n$ dice ext import -d echo --registry localhost:5000\nlocalhost:5000 login\n username:\npassword:\ndir:echo/image/echo =\u003e docker://localhost:5000/dice/echo-action\nGetting image source signatures\nCopying blob sha256:e7c96db7181be991f19a9fb6975cdbbd73c65f4a2681348e63a141a2192a5f10\nCopying blob sha256:6b34c3a5e37542504a101fcd7f324b0b36cdafeb13f1061e6ce2c58270201fac\nCopying blob sha256:b9b8c261a200259323d418e12d7fb49950dd0fb11d5c18922ba692e3058c8ec5\nCopying blob sha256:eb54ce0d56b748221c0c1b3353ef9a33cd4c8f36dd3542ba73b8254d4ffe9f61\nCopying config sha256:373ef300e43acb288cb201c5999d2bc6f4b790d51652edc1bf9e93c8a56dc1a1\nWriting manifest to image destination\nStoring signatures\n✔ extension echo@1.0 import success\n```\n\n## action list\n\n### code\n- [git-checkout](./actions/git-checkout)\n- [git-push](./actions/git-push)\n\n### build\n- [gitbook](./actions/gitbook)\n- [buildpack](./actions/buildpack)\n- [maven-deploy](./actions/maven-deploy)\n- [java](./actions/java)\n- [java-build](./actions/java-build)\n- [java-dependency-check](./actions/java-dependency-check)\n- [java-deploy](./actions/java-deploy)\n- [golang](./actions/golang)\n- [js](./actions/js)\n- [js-script](./actions/js-script)\n- [js-build](./actions/js-build)\n- [php](./actions/php)\n- [dockerfile](./actions/dockerfile)\n- [mobile-template](./actions/mobile-template)\n\n### deploy\n\n- [service-deploy](./actions/service-deploy)\n- [dice](./actions/dice)\n- [lib-publish](./actions/lib-publish)\n- [mobile-publish](./actions/mobile-publish)\n- [api-register](./actions/api-register)\n- [publish-api-asset](./actions/publish-api-asset)\n- [dice-deploy](./actions/dice-deploy)\n- [dice-deploy-addon](./actions/dice-deploy-addon)\n- [dice-deploy-domain](./actions/dice-deploy-domain)\n- [dice-deploy-redeploy](./actions/dice-deploy-redeploy)\n- [dice-deploy-release](./actions/dice-deploy-release)\n- [dice-deploy-rollback](./actions/dice-deploy-rollback)\n- [dice-deploy-service](./actions/dice-deploy-service)\n- [erda-mysql-migration](./actions/erda-mysql-migration)\n- [push-extensions](./actions/push-extensions)\n- [archive-extensions](./actions/archive-extensions)\n- [archive-release](./actions/archive-release)\n\n\n### version\n- [npm-publish](./actions/npm-publish)\n- [release](./actions/release)\n\n### test\n- [integration-test](./actions/integration-test)\n- [unit-test](./actions/unit-test)\n- [api-test](./actions/api-test)\n- [sonar](./actions/sonar)\n- [mysqldump](./actions/mysqldump)\n- [manual-review](./actions/manual-review)\n- [mysql-cli](./actions/mysql-cli)\n- [redis-cli](./actions/redis-cli)\n\n### data governance\n- [spark-upload](./actions/spark-upload)\n- [sql](./actions/sql)\n- [datax](./actions/datax)\n- [sftp-access](./actions/sftp-access)\n- [spark](./actions/spark)\n- [k8sflink](./actions/k8sflink)\n- [k8sspark](./actions/k8sspark)\n\n### custom action\n- [custom-script](./actions/custom-script)\n- [oss-upload](./actions/oss-upload)\n- [docker-push](./actions/docker-push)\n- [loop](./actions/loop)\n- [assert](./actions/assert)\n- [jsonparse](./actions/jsonparse)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferda-project%2Ferda-actions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferda-project%2Ferda-actions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferda-project%2Ferda-actions/lists"}