@cnbcool/cnb-cli 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -61
- package/bin/cnb.js +1 -1
- package/package.json +27 -7
- package/{cag.config.js → skills/cnb-api/scripts/core/config/cag.config.js} +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/core/convertLink.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/core/core.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/core/help.json +16 -16
- package/skills/{cnb-skill → cnb-api}/scripts/modules/activities/get-user-activities-by-date.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/activities/get-user-repo-activity-details.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/activities/top-contributors.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/ai/ai-auto-pr.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/ai/ai-chat-completions.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/assets/delete-asset.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/assets/get-files.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/assets/get-imgs.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/assets/list-assets.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/badge/get-badge.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/badge/list-badge.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/badge/upload-badge.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/build/build-crontab-sync.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/build/build-logs-delete.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/build/build-runner-download-log.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/build/get-build-logs.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/build/get-build-stage.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/build/get-build-status.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/build/start-build.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/build/stop-build.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/charge/get-special-amount.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/event/get-events.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/followers/get-followers-by-user-id.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/followers/get-following-by-user-id.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/create-blob.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/create-branch-lock.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/create-branch.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/create-tag.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/delete-branch-lock.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/delete-branch.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/delete-commit-annotation.js +2 -2
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/delete-commit-asset.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/delete-tag-annotation.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/delete-tag.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/get-archive-commit-changed-files.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/get-archive-compare-changed-files.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/get-archive.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/get-branch.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/get-commit-annotations-in-batch.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/get-commit-annotations.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/get-commit-assets-by-sha.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/get-commit-assets.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/get-commit-statuses.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/get-commit.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/get-compare-commits.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/get-content-without-path.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/get-content.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/get-head.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/get-presigned-lfs-download-link.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/get-raw.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/get-tag-annotations.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/get-tag.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/list-branches.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/list-commits.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/list-tags.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/post-commit-asset-upload-confirmation.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/post-commit-asset-upload-url.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/put-commit-annotations.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git/put-tag-annotations.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git-settings/delete-branch-protection.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git-settings/get-branch-protection.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git-settings/get-pipeline-settings.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git-settings/get-pull-request-settings.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git-settings/get-push-limit-settings.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git-settings/list-branch-protections.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git-settings/patch-branch-protection.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git-settings/post-branch-protection.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git-settings/put-pipeline-settings.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git-settings/put-pull-request-settings.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/git-settings/put-push-limit-settings.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/issues/can-user-be-assigned-to-issue.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/issues/create-issue.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/issues/delete-issue-assignees.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/issues/delete-issue-label.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/issues/delete-issue-labels.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/issues/get-issue-comment.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/issues/get-issue.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/issues/list-issue-activities-latest.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/issues/list-issue-activities.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/issues/list-issue-assignees.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/issues/list-issue-comments.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/issues/list-issue-labels.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/issues/list-issues.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/issues/patch-issue-assignees.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/issues/patch-issue-comment.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/issues/post-issue-assignees.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/issues/post-issue-comment.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/issues/post-issue-labels.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/issues/put-issue-labels.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/issues/update-issue-properties.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/issues/update-issue.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/knowledge-base/delete-knowledge-base.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/knowledge-base/get-knowledge-base-info.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/knowledge-base/get-models.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/knowledge-base/query-knowledge-base.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/members/add-members-of-group.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/members/add-members-of-mission.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/members/add-members-of-registry.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/members/add-members-of-repo.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/members/delete-members-of-group.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/members/delete-members-of-repo.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/members/delete-outside-collaborators.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/members/get-member-access-level-of-group.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/members/get-member-access-level-of-repo.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/members/list-all-members.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/members/list-inherit-members-of-group.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/members/list-inherit-members-of-repo.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/members/list-member-access-level-of-group.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/members/list-member-access-level-of-repo.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/members/list-members-of-group.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/members/list-members-of-repo.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/members/list-outside-collaborators.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/members/update-members-of-group.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/members/update-members-of-repo.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/members/update-outside-collaborators.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/missions/create-mission.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/missions/delete-mission.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/missions/get-group-sub-missions.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/missions/get-mission-view-config.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/missions/get-mission-view-list.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/missions/post-mission-view-config.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/missions/post-mission-view-list.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/missions/put-mission-view-list.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/missions/set-mission-visibility.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/organizations/create-organization.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/organizations/delete-organization.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/organizations/get-group-setting.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/organizations/get-group.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/organizations/get-groups-by-user-id.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/organizations/list-groups.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/organizations/list-subgroups.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/organizations/list-top-groups.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/organizations/transfer-group.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/organizations/update-group-setting.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/organizations/update-organization.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/organizations/upload-logos.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/can-user-be-assigned-to-pull.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/delete-pull-assignees.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/delete-pull-label.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/delete-pull-labels.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/delete-repo-files.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/delete-repo-imgs.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/get-pull-comment.js +2 -2
- package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/get-pull.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/list-pull-assignees.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/list-pull-comments.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/list-pull-commit-statuses.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/list-pull-commits.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/list-pull-files.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/list-pull-labels.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/list-pull-review-comments.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/list-pull-reviews.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/list-pulls-by-numbers.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/list-pulls.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/merge-pull.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/patch-pull-comment.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/patch-pull.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/post-pull-assignees.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/post-pull-comment.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/post-pull-labels.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/post-pull-request-review-reply.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/post-pull-review.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/post-pull.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/put-pull-labels.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/upload-files.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/upload-imgs.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/registries/delete-package-tag.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/registries/delete-package.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/registries/delete-registry.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/registries/get-group-sub-registries.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/registries/get-package-tag-detail.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/registries/get-package.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/registries/list-package-tags.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/registries/list-packages.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/registries/set-registry-visibility.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/releases/delete-release-asset.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/releases/delete-release.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/releases/get-latest-release.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/releases/get-release-asset.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/releases/get-release-by-id.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/releases/get-release-by-tag.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/releases/get-releases-asset.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/releases/list-releases.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/releases/patch-release.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/releases/post-release-asset-upload-confirmation.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/releases/post-release-asset-upload-url.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/releases/post-release.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/repo-code-issue/get-code-issue-detail-open-api.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/repo-code-issue/list-code-issue-open-api.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/repo-contributor/get-repo-contributor-trend.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/repo-labels/delete-label.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/repo-labels/list-labels.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/repo-labels/patch-label.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/repo-labels/post-label.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/repositories/archive-repo.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/repositories/create-repo.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/repositories/delete-repo.js +2 -2
- package/skills/{cnb-skill → cnb-api}/scripts/modules/repositories/get-by-id.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/repositories/get-group-sub-repos.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/repositories/get-pinned-repo-by-group.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/repositories/get-pinned-repo-by-id.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/repositories/get-repos-by-user-name.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/repositories/get-repos.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/repositories/list-forks-repos.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/repositories/set-pinned-repo-by-group.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/repositories/set-repo-visibility.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/repositories/transfer-repo.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/repositories/un-archive-repo.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/repositories/update-repo.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/search/list-public-repos.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/security/get-repo-security-overview.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/starring/get-user-all-stared-repos.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/starring/get-user-stared-repos.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/starring/list-star-users.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/users/auto-complete-source.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/users/get-user-info-by-name.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/users/get-user-info.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/users/list-email.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/users/list-gpg-keys.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/users/update-user-info.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/workspace/delete-workspace.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/workspace/get-workspace-detail.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/workspace/list-workspaces.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/workspace/start-workspace.js +1 -1
- package/skills/{cnb-skill → cnb-api}/scripts/modules/workspace/workspace-stop.js +1 -1
- package/.cnb.yml +0 -37
- package/DEVELOPMENT.md +0 -345
- package/downloads/1773729361207-dsfgely.png +0 -0
- package/skills/artifact-migrate/README.md +0 -79
- package/skills/artifact-migrate/SKILL.md +0 -674
- package/skills/auto-code/SKILL.md +0 -71
- package/skills/auto-code/hooks/hooks.json +0 -15
- package/skills/cnb-code-import/LICENSE +0 -20
- package/skills/cnb-code-import/README.md +0 -311
- package/skills/cnb-code-import/SKILL.md +0 -368
- package/skills/cnb-code-import/scripts/migrate.sh +0 -371
- package/skills/cnb-skill/SKILL.md +0 -100
- package/skills/cnb-skill/scripts/core/config/cag.config.js +0 -57
- package/skills/code-review/README.md +0 -3
- package/skills/code-review/SKILL.md +0 -131
- package/skills/code-review/hooks/hooks.json +0 -15
- package/skills/diagnose-pr-pipeline/README.md +0 -3
- package/skills/diagnose-pr-pipeline/SKILL.md +0 -88
- package/skills/dialog-ci-log/README.md +0 -16
- package/skills/dialog-ci-log/SKILL.md +0 -41
- package/skills/dialog-ci-log/scrips/get-failed-stage-logs.js +0 -124
- package/skills/pr-diff/README.md +0 -3
- package/skills/pr-diff/SKILL.md +0 -97
- package/skills/pr-summary/README.md +0 -3
- package/skills/pr-summary/SKILL.md +0 -70
- package/skills/tapd-resource-fetcher/README.md +0 -3
- package/skills/tapd-resource-fetcher/SKILL.md +0 -97
- package/skills/text-path-converter/README.md +0 -3
- package/skills/text-path-converter/SKILL.md +0 -30
- package/skills/text-path-converter/scripts/convertLink.js +0 -148
- package/test.js +0 -1
- /package/skills/{cnb-skill → cnb-api}/scripts/core/fetch-response-handler.js +0 -0
- /package/skills/{cnb-skill → cnb-api}/scripts/core/index.d.js +0 -0
- /package/skills/{cnb-skill → cnb-api}/scripts/core/index.js +0 -0
- /package/skills/{cnb-skill → cnb-api}/scripts/core/modules.help.js +0 -0
- /package/skills/{cnb-skill → cnb-api}/scripts/core/schemaToJson.d.js +0 -0
- /package/skills/{cnb-skill → cnb-api}/scripts/core/schemaToJson.js +0 -0
- /package/skills/{cnb-skill → cnb-api}/scripts/core/shortcuts.js +0 -0
- /package/skills/{cnb-skill → cnb-api}/scripts/core/tools.help.js +0 -0
- /package/skills/{cnb-skill → cnb-api}/scripts/core/utils/convert-link.js +0 -0
- /package/skills/{cnb-skill → cnb-api}/scripts/core/utils/generate-unique-id.js +0 -0
- /package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/get-files.js +0 -0
- /package/skills/{cnb-skill → cnb-api}/scripts/modules/pulls/get-imgs.js +0 -0
- /package/skills/{cnb-skill → cnb-api}/scripts/modules/rank/get-language-list.js +0 -0
- /package/skills/{cnb-skill → cnb-api}/scripts/modules/rank/get-repo-annual-rank.js +0 -0
- /package/skills/{cnb-skill → cnb-api}/scripts/modules/rank/get-repo-daily-rank.js +0 -0
- /package/skills/{cnb-skill → cnb-api}/scripts/modules/rank/get-repo-monthly-rank.js +0 -0
- /package/skills/{cnb-skill → cnb-api}/scripts/modules/rank/get-repo-weekly-rank.js +0 -0
|
@@ -1,674 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: artifact-migrate
|
|
3
|
-
description: CNB 制品批量迁移工具。支持从 CODING、CNB、CodeUp、Nexus、Jfrog、TCR 等平台迁移 Maven、NPM、Docker、NuGet、Composer、PyPI、Conan、Cargo 制品到 CNB 平台。通过 Docker 运行迁移工具,支持全量迁移、正则过滤、指定包版本和断点续传。
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# CNB 制品批量迁移工具 - Skill 文档
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## 🔧 环境准备
|
|
11
|
-
|
|
12
|
-
### 依赖工具
|
|
13
|
-
|
|
14
|
-
| 工具 | 版本要求 | 安装方式 | 说明 |
|
|
15
|
-
|------|----------|----------|------|
|
|
16
|
-
| Docker | 19.03+ | [官方文档](https://docs.docker.com/get-docker/) | 用于运行迁移工具容器 |
|
|
17
|
-
| Podman(可选) | 3.0+ | `brew install podman` 或系统包管理器 | Docker 的替代方案 |
|
|
18
|
-
|
|
19
|
-
> **说明**:迁移工具以 Docker 镜像方式分发,镜像地址为 `docker.cnb.cool/cnb/plugins/cnbcool/artifact-migrate:latest`,镜像内已内置所有运行时依赖(Go 编译产物、skopeo、Python3、Conan 等)。
|
|
20
|
-
|
|
21
|
-
### 权限要求
|
|
22
|
-
|
|
23
|
-
- **源制品库**:需要 **读取** 权限(用户名 + 密码/Token);公开仓库可不填用户名密码
|
|
24
|
-
- **目标制品库(CNB)**:需要 **写入** 权限(仅需 `TAR_REGISTRY_PASSWORD`,用户名固定为 `cnb`)
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
## ⚙️ 参数说明
|
|
29
|
-
|
|
30
|
-
### 核心参数(必填)
|
|
31
|
-
|
|
32
|
-
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|
|
33
|
-
|--------|------|:----:|--------|------|
|
|
34
|
-
| `ARTIFACT_TYPE` | string | ✅ | - | 制品类型,可选:`maven`、`npm`、`docker`、`nuget`、`composer`、`pypi`、`conan`、`cargo` |
|
|
35
|
-
| `SRC_REGISTRY_TYPE` | string | ✅ | - | 源仓库平台类型,可选:`coding`、`cnb`、`codeup`、`nexus`、`jfrog`、`tcr`、`other` |
|
|
36
|
-
| `SRC_REGISTRY_URL` | string | ✅ | - | 源仓库地址 |
|
|
37
|
-
| `TAR_REGISTRY_URL` | string | ✅ | - | 目标仓库地址(CNB 仓库地址) |
|
|
38
|
-
| `TAR_REGISTRY_PASSWORD` | string | ✅ | - | 目标仓库(CNB)密码/Token |
|
|
39
|
-
|
|
40
|
-
### 源仓库认证参数
|
|
41
|
-
|
|
42
|
-
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|
|
43
|
-
|--------|------|:----:|--------|------|
|
|
44
|
-
| `SRC_REGISTRY_USERNAME` | string | 条件必填 | - | 源仓库用户名(公开仓库可不填) |
|
|
45
|
-
| `SRC_REGISTRY_PASSWORD` | string | 条件必填 | - | 源仓库密码(公开仓库可不填) |
|
|
46
|
-
|
|
47
|
-
### 过滤与筛选参数
|
|
48
|
-
|
|
49
|
-
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|
|
50
|
-
|--------|------|:----:|--------|------|
|
|
51
|
-
| `INCLUDE_REGX` | string | ❌ | - | 包含正则(多个用 `,` 分隔),匹配格式为 `包名#版本`;为空则包含所有 |
|
|
52
|
-
| `EXCLUDE_REGX` | string | ❌ | - | 排除正则(多个用 `,` 分隔),匹配格式为 `包名#版本`;为空则不排除 |
|
|
53
|
-
| `PACKAGE_VERSIONS_FILE_NAME` | string | ❌ | - | 包版本配置文件路径(容器内路径),用于迁移少量指定包版本 |
|
|
54
|
-
| `PACKAGE_VERSIONS_EXT` | string | ❌ | - | Maven 额外文件扩展名(多个用 `,` 分隔),仅 Other 源 Maven 使用 |
|
|
55
|
-
|
|
56
|
-
### 高级参数
|
|
57
|
-
|
|
58
|
-
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|
|
59
|
-
|--------|------|:----:|--------|------|
|
|
60
|
-
| `CONCURRENCY` | uint | ❌ | `5` | 并发数(最大 256) |
|
|
61
|
-
| `LOG_LEVEL` | string | ❌ | `info` | 日志等级,可选:`trace`、`debug`、`info`、`warn`、`error`、`fatal`、`panic` |
|
|
62
|
-
| `SRC_PAGE_SIZE` | int | ❌ | `500` | 源仓库分页大小 |
|
|
63
|
-
| `IS_STRICT_VERSION_ORDER` | bool | ❌ | `false` | 是否按版本排序后再上传(多版本场景) |
|
|
64
|
-
|
|
65
|
-
### 平台专用参数
|
|
66
|
-
|
|
67
|
-
| 参数名 | 类型 | 专用平台 | 说明 |
|
|
68
|
-
|--------|------|----------|------|
|
|
69
|
-
| `SRC_CODING_DISABLE_THIRD_PACKAGE` | bool | CODING | 是否过滤第三方包(**强烈推荐 `true`**) |
|
|
70
|
-
| `SRC_DOCKER_ISTLSVERIFY` | bool | Docker | 源仓库是否使用 HTTPS(HTTPS 时设 `true`) |
|
|
71
|
-
| `TAR_DOCKER_ISTLSVERIFY` | bool | Docker | 目标仓库是否使用 HTTPS(HTTPS 时设 `true`) |
|
|
72
|
-
| `SRC_NEXUS_DOCKER_REPO_URL` | string | Nexus+Docker | Nexus 平台 Docker 仓库实际地址 |
|
|
73
|
-
| `SRC_CODEUP_TOKEN` | string | CodeUp | CodeUp 平台 API 访问令牌 |
|
|
74
|
-
| `SRC_CODEUP_LOGIN_ALIYUNID_TICKET` | string | CodeUp+Maven | CodeUp Maven 文件列表令牌(需单引号包裹) |
|
|
75
|
-
| `SRC_TCR_REGION` | string | TCR | TCR 平台地域编码,如 `ap-shanghai` |
|
|
76
|
-
| `SRC_TCR_SECRET_ID` | string | TCR | TCR 云账号 API 访问令牌 ID |
|
|
77
|
-
| `SRC_TCR_SECRET_KEY` | string | TCR | TCR 云账号 API 访问令牌 Key |
|
|
78
|
-
| `TAR_NPM_API_VERSION` | string | NPM | 目标仓库 NPM API 版本,可选 `v1`、`v2`,默认 `v2` |
|
|
79
|
-
| `SRC_TEMP_DIR` | string | PyPI | PyPI 临时目录 |
|
|
80
|
-
|
|
81
|
-
---
|
|
82
|
-
|
|
83
|
-
## 🚀 使用步骤
|
|
84
|
-
|
|
85
|
-
### Step 1:拉取迁移工具镜像
|
|
86
|
-
|
|
87
|
-
```bash
|
|
88
|
-
docker pull docker.cnb.cool/cnb/plugins/cnbcool/artifact-migrate:latest
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
### Step 2:准备访问凭证
|
|
92
|
-
|
|
93
|
-
1. **源仓库**:获取源制品仓库的地址、用户名、密码(各平台获取方式不同,参考项目文档 `docs/certificate.md`)
|
|
94
|
-
2. **目标仓库(CNB)**:在 CNB 创建制品仓库,获取仓库地址和访问 Token
|
|
95
|
-
|
|
96
|
-
### Step 3:执行迁移
|
|
97
|
-
|
|
98
|
-
#### 模式一:迁移仓库下所有制品
|
|
99
|
-
|
|
100
|
-
```bash
|
|
101
|
-
docker run --rm \
|
|
102
|
-
-e ARTIFACT_TYPE=npm \
|
|
103
|
-
-e SRC_REGISTRY_TYPE=coding \
|
|
104
|
-
-e SRC_REGISTRY_URL="https://example-npm.pkg.coding.net/my-project/my-repo/" \
|
|
105
|
-
-e SRC_REGISTRY_USERNAME="my-username" \
|
|
106
|
-
-e SRC_REGISTRY_PASSWORD=xxx \
|
|
107
|
-
-e SRC_CODING_DISABLE_THIRD_PACKAGE=true \
|
|
108
|
-
-e TAR_REGISTRY_URL="https://npm.cnb.cool/my-project2/my-repo2/-/packages/" \
|
|
109
|
-
-e TAR_REGISTRY_PASSWORD=xxx \
|
|
110
|
-
-u root \
|
|
111
|
-
-v $(pwd)/log:/app/log \
|
|
112
|
-
docker.cnb.cool/cnb/plugins/cnbcool/artifact-migrate:latest
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
#### 模式二:使用正则过滤迁移
|
|
116
|
-
|
|
117
|
-
```bash
|
|
118
|
-
docker run --rm \
|
|
119
|
-
-e ARTIFACT_TYPE=npm \
|
|
120
|
-
-e INCLUDE_REGX="^@myorg,^mypackage" \
|
|
121
|
-
-e EXCLUDE_REGX="^third-party" \
|
|
122
|
-
-e SRC_REGISTRY_TYPE=coding \
|
|
123
|
-
-e SRC_REGISTRY_URL="https://example-npm.pkg.coding.net/my-project/my-repo/" \
|
|
124
|
-
-e SRC_REGISTRY_USERNAME="my-username" \
|
|
125
|
-
-e SRC_REGISTRY_PASSWORD=xxx \
|
|
126
|
-
-e SRC_CODING_DISABLE_THIRD_PACKAGE=true \
|
|
127
|
-
-e TAR_REGISTRY_URL="https://npm.cnb.cool/my-project2/my-repo2/-/packages/" \
|
|
128
|
-
-e TAR_REGISTRY_PASSWORD=xxx \
|
|
129
|
-
-u root \
|
|
130
|
-
-v $(pwd)/log:/app/log \
|
|
131
|
-
docker.cnb.cool/cnb/plugins/cnbcool/artifact-migrate:latest
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
#### 模式三:迁移指定包版本(文件模式)
|
|
135
|
-
|
|
136
|
-
1. 创建本地文件 `package-versions.txt`,格式示例:
|
|
137
|
-
```
|
|
138
|
-
@coding/migrate#1.0.0
|
|
139
|
-
lodash#4.17.21
|
|
140
|
-
lodash
|
|
141
|
-
```
|
|
142
|
-
- `包名#版本`:迁移指定版本
|
|
143
|
-
- `包名`(不带版本):迁移该包所有版本
|
|
144
|
-
|
|
145
|
-
2. 执行迁移命令:
|
|
146
|
-
```bash
|
|
147
|
-
docker run --rm \
|
|
148
|
-
-e ARTIFACT_TYPE=npm \
|
|
149
|
-
-e PACKAGE_VERSIONS_FILE_NAME=/app/config.txt \
|
|
150
|
-
-e SRC_REGISTRY_TYPE=coding \
|
|
151
|
-
-e SRC_REGISTRY_URL="https://example-npm.pkg.coding.net/my-project/my-repo/" \
|
|
152
|
-
-e SRC_REGISTRY_USERNAME="my-username" \
|
|
153
|
-
-e SRC_REGISTRY_PASSWORD=xxx \
|
|
154
|
-
-e SRC_CODING_DISABLE_THIRD_PACKAGE=true \
|
|
155
|
-
-e TAR_REGISTRY_URL="https://npm.cnb.cool/my-project2/my-repo2/-/packages/" \
|
|
156
|
-
-e TAR_REGISTRY_PASSWORD=xxx \
|
|
157
|
-
-u root \
|
|
158
|
-
-v $(pwd)/log:/app/log \
|
|
159
|
-
-v $(pwd)/package-versions.txt:/app/config.txt \
|
|
160
|
-
docker.cnb.cool/cnb/plugins/cnbcool/artifact-migrate:latest
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
### Step 4:查看迁移结果
|
|
164
|
-
|
|
165
|
-
迁移结束后,终端会自动输出统计报告:
|
|
166
|
-
|
|
167
|
-
```
|
|
168
|
-
INFO[0042] ----------------- MigrateRecord Print Start-----------------
|
|
169
|
-
INFO[0042] Migrate success ✅ ✅ ✅ ✅
|
|
170
|
-
INFO[0042] 迁移制品类型: npm
|
|
171
|
-
INFO[0042] 源仓库类型: coding
|
|
172
|
-
INFO[0042] 源仓库地址: https://example-npm.pkg.coding.net/my-project/my-repo/
|
|
173
|
-
INFO[0042] 目标仓库地址: https://npm.cnb.cool/my-project2/my-repo2/-/packages/
|
|
174
|
-
INFO[0042] 开始时间: 2025-01-01T10:00:00+08:00
|
|
175
|
-
INFO[0042] 结束时间: 2025-01-01T10:00:42+08:00
|
|
176
|
-
INFO[0042] 耗时: 42s
|
|
177
|
-
INFO[0042] 总数: 120, 成功数: 118, 存在数: 2, 忽略数: 0, 错误数: 0
|
|
178
|
-
INFO[0042] ----------------- Migrate Print End -----------------
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
---
|
|
182
|
-
|
|
183
|
-
## 📝 完整示例
|
|
184
|
-
|
|
185
|
-
### 示例 1:从 CODING 迁移全量 NPM 制品
|
|
186
|
-
|
|
187
|
-
```bash
|
|
188
|
-
docker run --rm \
|
|
189
|
-
-e ARTIFACT_TYPE=npm \
|
|
190
|
-
-e SRC_REGISTRY_TYPE=coding \
|
|
191
|
-
-e SRC_REGISTRY_URL="https://example-npm.pkg.coding.net/my-project/my-repo/" \
|
|
192
|
-
-e SRC_REGISTRY_USERNAME="my-username" \
|
|
193
|
-
-e SRC_REGISTRY_PASSWORD=xxx \
|
|
194
|
-
-e SRC_CODING_DISABLE_THIRD_PACKAGE=true \
|
|
195
|
-
-e TAR_REGISTRY_URL="https://npm.cnb.cool/my-project2/my-repo2/-/packages/" \
|
|
196
|
-
-e TAR_REGISTRY_PASSWORD=xxx \
|
|
197
|
-
-u root \
|
|
198
|
-
-v $(pwd)/log:/app/log \
|
|
199
|
-
docker.cnb.cool/cnb/plugins/cnbcool/artifact-migrate:latest
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
**预期输出**:
|
|
203
|
-
```
|
|
204
|
-
INFO[0000] Load config from environment variables success
|
|
205
|
-
INFO[0000] migrate start artifactType=npm
|
|
206
|
-
INFO[0042] migrate end artifactType=npm
|
|
207
|
-
INFO[0042] ----------------- MigrateRecord Print Start-----------------
|
|
208
|
-
INFO[0042] Migrate success ✅ ✅ ✅ ✅
|
|
209
|
-
INFO[0042] 迁移制品类型: npm
|
|
210
|
-
INFO[0042] 总数: 50, 成功数: 48, 存在数: 2, 忽略数: 0, 错误数: 0
|
|
211
|
-
INFO[0042] ----------------- Migrate Print End -----------------
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
### 示例 2:从 Nexus 迁移 Maven 制品(正则过滤)
|
|
215
|
-
|
|
216
|
-
```bash
|
|
217
|
-
docker run --rm \
|
|
218
|
-
-e ARTIFACT_TYPE=maven \
|
|
219
|
-
-e INCLUDE_REGX="^com\.myorg" \
|
|
220
|
-
-e EXCLUDE_REGX="^com\.myorg\.test" \
|
|
221
|
-
-e SRC_REGISTRY_TYPE=nexus \
|
|
222
|
-
-e SRC_REGISTRY_URL="https://nexus.example.com:8081/repository/maven-releases/" \
|
|
223
|
-
-e SRC_REGISTRY_USERNAME="admin" \
|
|
224
|
-
-e SRC_REGISTRY_PASSWORD=xxx \
|
|
225
|
-
-e TAR_REGISTRY_URL="https://maven.cnb.cool/my-project/my-repo/-/packages/" \
|
|
226
|
-
-e TAR_REGISTRY_PASSWORD=xxx \
|
|
227
|
-
-u root \
|
|
228
|
-
-v $(pwd)/log:/app/log \
|
|
229
|
-
docker.cnb.cool/cnb/plugins/cnbcool/artifact-migrate:latest
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
**预期输出**:
|
|
233
|
-
```
|
|
234
|
-
INFO[0000] Load config from environment variables success
|
|
235
|
-
INFO[0000] migrate start artifactType=maven
|
|
236
|
-
INFO[0120] migrate end artifactType=maven
|
|
237
|
-
INFO[0120] ----------------- MigrateRecord Print Start-----------------
|
|
238
|
-
INFO[0120] Migrate success ✅ ✅ ✅ ✅
|
|
239
|
-
INFO[0120] 迁移制品类型: maven
|
|
240
|
-
INFO[0120] 包括包名规则: ^com\.myorg
|
|
241
|
-
INFO[0120] 排除包名规则: ^com\.myorg\.test
|
|
242
|
-
INFO[0120] 总数: 200, 成功数: 195, 存在数: 5, 忽略数: 0, 错误数: 0
|
|
243
|
-
INFO[0120] ----------------- Migrate Print End -----------------
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
### 示例 3:从 Jfrog 迁移 Docker 镜像
|
|
247
|
-
|
|
248
|
-
```bash
|
|
249
|
-
docker run --rm \
|
|
250
|
-
-e ARTIFACT_TYPE=docker \
|
|
251
|
-
-e SRC_REGISTRY_TYPE=jfrog \
|
|
252
|
-
-e SRC_REGISTRY_URL="https://jfrog.example.com/artifactory/docker-repo/" \
|
|
253
|
-
-e SRC_REGISTRY_USERNAME="admin" \
|
|
254
|
-
-e SRC_REGISTRY_PASSWORD=xxx \
|
|
255
|
-
-e SRC_DOCKER_ISTLSVERIFY=true \
|
|
256
|
-
-e TAR_REGISTRY_URL="docker.cnb.cool/my-project/my-repo" \
|
|
257
|
-
-e TAR_REGISTRY_PASSWORD=xxx \
|
|
258
|
-
-e TAR_DOCKER_ISTLSVERIFY=true \
|
|
259
|
-
-u root \
|
|
260
|
-
-v $(pwd)/log:/app/log \
|
|
261
|
-
docker.cnb.cool/cnb/plugins/cnbcool/artifact-migrate:latest
|
|
262
|
-
```
|
|
263
|
-
|
|
264
|
-
### 示例 4:断点续传
|
|
265
|
-
|
|
266
|
-
```bash
|
|
267
|
-
# 第一次迁移(中途失败/中断)
|
|
268
|
-
docker run --rm \
|
|
269
|
-
-e ARTIFACT_TYPE=npm \
|
|
270
|
-
-e SRC_REGISTRY_TYPE=coding \
|
|
271
|
-
-e SRC_REGISTRY_URL="https://example-npm.pkg.coding.net/my-project/my-repo/" \
|
|
272
|
-
-e SRC_REGISTRY_USERNAME="my-username" \
|
|
273
|
-
-e SRC_REGISTRY_PASSWORD=xxx \
|
|
274
|
-
-e SRC_CODING_DISABLE_THIRD_PACKAGE=true \
|
|
275
|
-
-e TAR_REGISTRY_URL="https://npm.cnb.cool/my-project2/my-repo2/-/packages/" \
|
|
276
|
-
-e TAR_REGISTRY_PASSWORD=xxx \
|
|
277
|
-
-u root \
|
|
278
|
-
-v $(pwd)/log:/app/log \
|
|
279
|
-
docker.cnb.cool/cnb/plugins/cnbcool/artifact-migrate:latest
|
|
280
|
-
|
|
281
|
-
# 第二次迁移(自动从断点继续,且优先重试上次失败的制品)
|
|
282
|
-
# 使用完全相同的命令即可
|
|
283
|
-
docker run --rm \
|
|
284
|
-
-e ARTIFACT_TYPE=npm \
|
|
285
|
-
-e SRC_REGISTRY_TYPE=coding \
|
|
286
|
-
-e SRC_REGISTRY_URL="https://example-npm.pkg.coding.net/my-project/my-repo/" \
|
|
287
|
-
-e SRC_REGISTRY_USERNAME="my-username" \
|
|
288
|
-
-e SRC_REGISTRY_PASSWORD=xxx \
|
|
289
|
-
-e SRC_CODING_DISABLE_THIRD_PACKAGE=true \
|
|
290
|
-
-e TAR_REGISTRY_URL="https://npm.cnb.cool/my-project2/my-repo2/-/packages/" \
|
|
291
|
-
-e TAR_REGISTRY_PASSWORD=xxx \
|
|
292
|
-
-u root \
|
|
293
|
-
-v $(pwd)/log:/app/log \
|
|
294
|
-
docker.cnb.cool/cnb/plugins/cnbcool/artifact-migrate:latest
|
|
295
|
-
```
|
|
296
|
-
|
|
297
|
-
### 示例 5:在 CNB 云原生构建中使用
|
|
298
|
-
|
|
299
|
-
```yaml
|
|
300
|
-
main:
|
|
301
|
-
push:
|
|
302
|
-
- services:
|
|
303
|
-
- docker
|
|
304
|
-
stages:
|
|
305
|
-
- name: 拉取镜像
|
|
306
|
-
script: |
|
|
307
|
-
docker pull docker.cnb.cool/cnb/plugins/cnbcool/artifact-migrate:latest
|
|
308
|
-
|
|
309
|
-
- name: 开始迁移
|
|
310
|
-
script: |
|
|
311
|
-
mkdir -p /workspace/log
|
|
312
|
-
docker run --rm \
|
|
313
|
-
-e ARTIFACT_TYPE=npm \
|
|
314
|
-
-e SRC_REGISTRY_TYPE=coding \
|
|
315
|
-
-e SRC_REGISTRY_URL="https://example-npm.pkg.coding.net/my-project/my-repo/" \
|
|
316
|
-
-e SRC_REGISTRY_USERNAME="my-username" \
|
|
317
|
-
-e SRC_REGISTRY_PASSWORD=xxx \
|
|
318
|
-
-e SRC_CODING_DISABLE_THIRD_PACKAGE=true \
|
|
319
|
-
-e TAR_REGISTRY_URL="https://npm.cnb.cool/my-project2/my-repo2/-/packages/" \
|
|
320
|
-
-e TAR_REGISTRY_PASSWORD=xxx \
|
|
321
|
-
-e LOG_LEVEL=info \
|
|
322
|
-
-u root \
|
|
323
|
-
-v /workspace/log:/app/log \
|
|
324
|
-
docker.cnb.cool/cnb/plugins/cnbcool/artifact-migrate:latest
|
|
325
|
-
tar czf /workspace/artifact-migrate.tar.gz -C /workspace log
|
|
326
|
-
|
|
327
|
-
- name: 上传迁移日志到commit附件
|
|
328
|
-
image: cnbcool/attachments:latest
|
|
329
|
-
settings:
|
|
330
|
-
commit: ${CNB_COMMIT}
|
|
331
|
-
attachments:
|
|
332
|
-
- "./artifact-migrate.tar.gz"
|
|
333
|
-
```
|
|
334
|
-
|
|
335
|
-
---
|
|
336
|
-
|
|
337
|
-
## 🔄 迁移流程图
|
|
338
|
-
|
|
339
|
-
```
|
|
340
|
-
┌──────────────────────┐
|
|
341
|
-
│ 加载环境变量配置 │
|
|
342
|
-
│ (Config.LoadConfig) │
|
|
343
|
-
└──────────┬───────────┘
|
|
344
|
-
│
|
|
345
|
-
┌──────────▼───────────┐
|
|
346
|
-
│ 初始化迁移管理器 │
|
|
347
|
-
│ (MigrateManager) │
|
|
348
|
-
│ - 解析制品类型 │
|
|
349
|
-
│ - 编译正则表达式 │
|
|
350
|
-
│ - 加载断点续传记录 │
|
|
351
|
-
│ - 初始化 HTTP 客户端 │
|
|
352
|
-
│ - 初始化工作池 │
|
|
353
|
-
└──────────┬───────────┘
|
|
354
|
-
│
|
|
355
|
-
┌───────────────┼───────────────┐
|
|
356
|
-
│ │ │
|
|
357
|
-
┌────────▼────────┐ │ ┌─────────▼─────────┐
|
|
358
|
-
│ 创建 Producer │ │ │ 创建 N 个 Consumer │
|
|
359
|
-
│ (源仓库适配器) │ │ │ (并发消费者) │
|
|
360
|
-
└────────┬────────┘ │ └─────────┬─────────┘
|
|
361
|
-
│ │ │
|
|
362
|
-
└───────┬───────┘───────────────┘
|
|
363
|
-
│
|
|
364
|
-
┌──────────▼───────────┐
|
|
365
|
-
│ 启动迁移 Pipeline │
|
|
366
|
-
│ Producer → Channel → │
|
|
367
|
-
│ → N × Consumer │
|
|
368
|
-
└──────────┬───────────┘
|
|
369
|
-
│
|
|
370
|
-
┌────────────▼────────────┐
|
|
371
|
-
│ Producer 生产流程 │
|
|
372
|
-
│ │
|
|
373
|
-
│ 1. 重试上次失败的制品 │
|
|
374
|
-
│ (FailedTask) │
|
|
375
|
-
│ 2. 从断点分页继续拉取 │
|
|
376
|
-
│ (RegxTask) │
|
|
377
|
-
│ ─── 或 ─── │
|
|
378
|
-
│ 文件模式: 按配置文件拉取 │
|
|
379
|
-
│ (FileTask) │
|
|
380
|
-
└────────────┬────────────┘
|
|
381
|
-
│
|
|
382
|
-
│ chan *MigrateParam
|
|
383
|
-
│
|
|
384
|
-
┌────────────▼────────────┐
|
|
385
|
-
│ Consumer 消费流程 │
|
|
386
|
-
│ │
|
|
387
|
-
│ 1. 从 channel 取任务 │
|
|
388
|
-
│ 2. 从源仓库下载制品 │
|
|
389
|
-
│ 3. 上传至 CNB 目标仓库 │
|
|
390
|
-
│ 4. 返回 MigrateResult │
|
|
391
|
-
│ 5. Record 统一记录结果 │
|
|
392
|
-
└────────────┬────────────┘
|
|
393
|
-
│
|
|
394
|
-
┌────────────▼────────────┐
|
|
395
|
-
│ 迁移结束 & 收尾 │
|
|
396
|
-
│ │
|
|
397
|
-
│ 1. 剩余任务写入失败文件 │
|
|
398
|
-
│ 2. 全部记录刷入日志文件 │
|
|
399
|
-
│ 3. 打印统计报告 │
|
|
400
|
-
│ (总/成功/存在/忽略/错误)│
|
|
401
|
-
└─────────────────────────┘
|
|
402
|
-
```
|
|
403
|
-
|
|
404
|
-
---
|
|
405
|
-
|
|
406
|
-
## 🧩 核心架构与逻辑说明
|
|
407
|
-
|
|
408
|
-
### 架构设计
|
|
409
|
-
|
|
410
|
-
工具采用 **生产者-消费者** 模式:
|
|
411
|
-
|
|
412
|
-
- **Producer**:负责从源仓库拉取制品元数据列表,通过 Channel 发送给 Consumer
|
|
413
|
-
- **Consumer**:并发消费任务,负责下载制品文件并上传至目标仓库
|
|
414
|
-
- **MigrateManager**:核心调度器,管理配置、正则匹配、迁移记录
|
|
415
|
-
- **MigrateRecord**:迁移状态记录器,实现断点续传和结果统计
|
|
416
|
-
|
|
417
|
-
### 三种迁移模式
|
|
418
|
-
|
|
419
|
-
| 模式 | 触发条件 | 说明 |
|
|
420
|
-
|------|----------|------|
|
|
421
|
-
| **全量模式** | 不配置 `INCLUDE_REGX`、`EXCLUDE_REGX`、`PACKAGE_VERSIONS_FILE_NAME` | 迁移源仓库所有制品 |
|
|
422
|
-
| **正则模式** | 配置 `INCLUDE_REGX` 和/或 `EXCLUDE_REGX` | 按正则匹配过滤迁移 |
|
|
423
|
-
| **文件模式** | 配置 `PACKAGE_VERSIONS_FILE_NAME` | 仅迁移配置文件中指定的包版本 |
|
|
424
|
-
|
|
425
|
-
### 关键函数 / 模块
|
|
426
|
-
|
|
427
|
-
| 函数/模块名 | 功能描述 | 输入 | 输出 |
|
|
428
|
-
|-------------|----------|------|------|
|
|
429
|
-
| `config.LoadConfig()` | 从环境变量加载并验证配置 | 环境变量 | `*Config` |
|
|
430
|
-
| `manager.NewMigrateManager()` | 创建迁移管理器(初始化正则、记录、工作池) | `*Config` | `*MigrateManager` |
|
|
431
|
-
| `producer.NewProducer()` | 创建生产者(绑定源仓库适配器) | `*MigrateManager` | `Producer` |
|
|
432
|
-
| `consumer.NewConsumer()` | 按制品类型创建消费者实例 | `*MigrateManager` | `Consumer` |
|
|
433
|
-
| `Producer.Product()` | 生产待迁移任务(断点续传 + 分页拉取 或 文件模式) | `ctx`, `chan` | 通过 Channel 发送 `*MigrateParam` |
|
|
434
|
-
| `Consumer.DoMigrate()` | 消费一个迁移任务(下载 → 上传) | `ctx`, `*MigrateParam` | `*MigrateResult` |
|
|
435
|
-
| `MigrateRecord.RecordMigrateResult()` | 记录迁移结果(成功/失败/已存在/忽略) | `TaskType`, `*MigrateResult` | - |
|
|
436
|
-
| `MigrateManager.Print()` | 打印最终迁移统计报告 | - | 日志输出 |
|
|
437
|
-
| `repository.NewRepository()` | 按源仓库类型创建仓库适配器 | `*MigrateManager` | `Repository` |
|
|
438
|
-
| `Repository.GetArtifactsByPage()` | 分页获取制品列表 | `ctx`, `page` | `*FetchResult`, 页码, 是否最后一页, error |
|
|
439
|
-
| `Repository.GetArtifactsByPackageOrVersion()` | 按包名/版本获取制品列表 | `ctx`, `pkgName`, `versions` | `*FetchResult`, error |
|
|
440
|
-
|
|
441
|
-
### 断点续传机制
|
|
442
|
-
|
|
443
|
-
1. 每次迁移结束(正常或异常),所有状态信息写入 `log/` 目录下的 7 个文件
|
|
444
|
-
2. 下次启动时自动读取这些文件,恢复上次迁移状态
|
|
445
|
-
3. **优先重试上次失败的制品**(`failed-files.txt`),然后从分页断点(`pagination.txt`)继续拉取
|
|
446
|
-
4. 文件模式(`PACKAGE_VERSIONS_FILE_NAME`)不支持断点续传,每次都会清空历史记录
|
|
447
|
-
|
|
448
|
-
### 信号处理
|
|
449
|
-
|
|
450
|
-
工具监听 `SIGINT`(Ctrl+C)和 `SIGTERM` 信号,收到信号后会:
|
|
451
|
-
|
|
452
|
-
1. 取消 context,通知 Producer 和 Consumer 停止
|
|
453
|
-
2. 将 Channel 中未处理的任务写入失败文件
|
|
454
|
-
3. 将迁移记录刷入日志文件
|
|
455
|
-
4. 打印统计报告
|
|
456
|
-
|
|
457
|
-
---
|
|
458
|
-
|
|
459
|
-
## ⚠️ 注意事项
|
|
460
|
-
|
|
461
|
-
1. **强烈建议不迁移第三方包**:CNB 有加速源可直接拉取第三方包,CODING 源请设置 `SRC_CODING_DISABLE_THIRD_PACKAGE=true`,其他平台可通过 `EXCLUDE_REGX` 正则过滤
|
|
462
|
-
2. **Docker 迁移必须关注 TLS 配置**:迁移 Docker 时,如果源/目标仓库使用 HTTPS,必须设置 `SRC_DOCKER_ISTLSVERIFY=true` 和 `TAR_DOCKER_ISTLSVERIFY=true`
|
|
463
|
-
3. **断点续传依赖日志目录**:断点续传功能依赖工作目录下的 `log` 文件夹,请确保 `-v $(pwd)/log:/app/log` 挂载正确,且不要手动删除日志文件
|
|
464
|
-
4. **文件模式不支持断点续传**:使用 `PACKAGE_VERSIONS_FILE_NAME` 时,每次运行都是全量迁移该文件中的包
|
|
465
|
-
5. **云原生构建中不支持断点续传**:在 CNB 云原生构建流水线中运行时,每次构建环境都是全新的,日志可在附件中查看
|
|
466
|
-
6. **Nexus 平台限制**:当仓库下总版本数大于 10,000 条时,只能采用文件模式(`PACKAGE_VERSIONS_FILE_NAME`)迁移
|
|
467
|
-
7. **Other 源仅支持文件模式**:`SRC_REGISTRY_TYPE=other` 只支持通过 `PACKAGE_VERSIONS_FILE_NAME` 指定包版本迁移
|
|
468
|
-
8. **目标仓库用户名固定**:目标仓库用户名统一为 `cnb`(代码中硬编码),仅需配置 `TAR_REGISTRY_PASSWORD`
|
|
469
|
-
9. **并发数计算规则**:消费者数量 = `CONCURRENCY / 2`(至少为 1),默认并发数为 5,最大 256
|
|
470
|
-
|
|
471
|
-
---
|
|
472
|
-
|
|
473
|
-
## ❌ 常见错误与解决方案
|
|
474
|
-
|
|
475
|
-
| 错误信息 | 原因 | 解决方案 |
|
|
476
|
-
|----------|------|----------|
|
|
477
|
-
| `ARTIFACT_TYPE is required` | 未配置制品类型 | 添加 `-e ARTIFACT_TYPE=<type>` |
|
|
478
|
-
| `SRC_REGISTRY_TYPE is required` | 未配置源仓库类型 | 添加 `-e SRC_REGISTRY_TYPE=<type>` |
|
|
479
|
-
| `SRC_REGISTRY_URL is required` | 未配置源仓库地址 | 添加 `-e SRC_REGISTRY_URL=<url>` |
|
|
480
|
-
| `TAR_REGISTRY_URL is required` | 未配置目标仓库地址 | 添加 `-e TAR_REGISTRY_URL=<url>` |
|
|
481
|
-
| `TAR_REGISTRY_PASSWORD is required` | 未配置目标仓库密码 | 添加 `-e TAR_REGISTRY_PASSWORD=<token>` |
|
|
482
|
-
| `The current scope does not support access to this API` | CODING 迁移 Docker 时未配置 TLS | 添加 `-e SRC_DOCKER_ISTLSVERIFY=true` |
|
|
483
|
-
| `artifact type xxx is not supported` | 制品类型不在支持列表中 | 检查 `ARTIFACT_TYPE` 拼写是否正确 |
|
|
484
|
-
| `packageVersionFile must be a .txt file` | 文件模式配置文件不是 .txt 格式 | 确保配置文件以 `.txt` 结尾 |
|
|
485
|
-
| `packageVersionFile is empty` | 配置文件为空或格式不正确 | 检查文件内容,格式为 `包名#版本` 或 `包名` |
|
|
486
|
-
| 迁移 0 个包 | CODING 配置了 `SRC_CODING_DISABLE_THIRD_PACKAGE` 后全为三方包 | 确认是否确实有自有包需要迁移 |
|
|
487
|
-
|
|
488
|
-
---
|
|
489
|
-
|
|
490
|
-
## 📊 输出说明
|
|
491
|
-
|
|
492
|
-
### 迁移结果统计
|
|
493
|
-
|
|
494
|
-
| 输出项 | 说明 |
|
|
495
|
-
|--------|------|
|
|
496
|
-
| `Migrate success ✅` | 总数 = 成功数 + 存在数 + 忽略数(无失败) |
|
|
497
|
-
| `Migrate failed ❌` | 存在迁移失败的制品 |
|
|
498
|
-
| 迁移制品类型 | 当前迁移的制品类型(如 npm、maven) |
|
|
499
|
-
| 包括/排除包名规则 | 本次使用的正则过滤规则 |
|
|
500
|
-
| 源仓库/目标仓库地址 | 迁移的源和目标 |
|
|
501
|
-
| 开始/结束时间、耗时 | 迁移总耗时 |
|
|
502
|
-
| 本次迁移错误列表 | 逐条列出失败的包名和错误信息 |
|
|
503
|
-
| **总数** | 需要迁移的制品版本总数 |
|
|
504
|
-
| **成功数** | 本次成功上传的制品版本数 |
|
|
505
|
-
| **存在数** | 目标仓库已存在的制品版本数(无需重复上传) |
|
|
506
|
-
| **忽略数** | 被正则/规则过滤跳过的制品版本数 |
|
|
507
|
-
| **错误数** | 迁移失败的制品版本数 |
|
|
508
|
-
|
|
509
|
-
### 日志文件
|
|
510
|
-
|
|
511
|
-
所有日志文件存储在 `log/{平台}-{制品类型}-{源仓库}-{目标仓库}/` 目录下:
|
|
512
|
-
|
|
513
|
-
| 文件 | 格式 | 说明 |
|
|
514
|
-
|------|------|------|
|
|
515
|
-
| `versions.txt` | 每行一个 `包名#版本` | 所有需迁移的制品版本列表 |
|
|
516
|
-
| `success-versions.txt` | 每行一个 `包名#版本` | 成功迁移的制品版本 |
|
|
517
|
-
| `exist-versions.txt` | 每行一个 `包名#版本` | 目标仓库已存在的版本 |
|
|
518
|
-
| `ignore-versions.txt` | 每行一个 `包名#版本` | 被忽略的版本 |
|
|
519
|
-
| `failed-versions.txt` | 每行一个 `包名#版本` | 失败的制品版本(断点续传依赖) |
|
|
520
|
-
| `failed-files.txt` | 每行 `包名#版本#URL` | 失败的制品文件详情(断点续传依赖) |
|
|
521
|
-
| `pagination.txt` | JSON | 分页断点信息 `{"latestPage":"...", "isLastPage":false}` |
|
|
522
|
-
|
|
523
|
-
### 迁移输出示例
|
|
524
|
-
|
|
525
|
-
#### 成功场景
|
|
526
|
-
|
|
527
|
-
```log
|
|
528
|
-
INFO ----------------- MigrateRecord Print Start-----------------
|
|
529
|
-
INFO Migrate success ✅ ✅ ✅ ✅
|
|
530
|
-
INFO 迁移制品类型: npm
|
|
531
|
-
INFO 包括包名规则: ^@myorg
|
|
532
|
-
INFO 排除包名规则: ^third-party
|
|
533
|
-
INFO 迁移包版本文件路径:
|
|
534
|
-
INFO 迁移包版本: map[]
|
|
535
|
-
INFO maven专用 文件ext:
|
|
536
|
-
INFO 是否使用严格上传模式: false
|
|
537
|
-
INFO 源仓库类型: coding
|
|
538
|
-
INFO 源仓库地址: https://example-npm.pkg.coding.net/my-project/my-repo/
|
|
539
|
-
INFO coding专用 是否不迁移源仓库第三方包: true
|
|
540
|
-
INFO docker专用 源仓库是否使用https: false
|
|
541
|
-
INFO nexus专用 源仓库docker地址:
|
|
542
|
-
INFO 目标仓库地址: https://npm.cnb.cool/my-project2/my-repo2/-/packages/
|
|
543
|
-
INFO docker专用 目标仓库是否使用https: false
|
|
544
|
-
INFO 开始时间: 2025-01-15T10:00:00+08:00
|
|
545
|
-
INFO 结束时间: 2025-01-15T10:02:30+08:00
|
|
546
|
-
INFO 耗时: 2m30s
|
|
547
|
-
INFO 本次迁移错误列表:
|
|
548
|
-
INFO 总数: 120, 成功数: 115, 存在数: 5, 忽略数: 0, 错误数: 0
|
|
549
|
-
INFO ----------------- Migrate Print End -----------------
|
|
550
|
-
```
|
|
551
|
-
|
|
552
|
-
#### 部分失败场景
|
|
553
|
-
|
|
554
|
-
```log
|
|
555
|
-
INFO ----------------- MigrateRecord Print Start-----------------
|
|
556
|
-
INFO Migrate failed ❌ ❌ ❌ ❌
|
|
557
|
-
INFO 迁移制品类型: maven
|
|
558
|
-
INFO 源仓库类型: nexus
|
|
559
|
-
INFO 源仓库地址: https://nexus.example.com:8081/repository/maven-releases/
|
|
560
|
-
INFO 目标仓库地址: https://maven.cnb.cool/my-project/my-repo/-/packages/
|
|
561
|
-
INFO 开始时间: 2025-01-15T14:00:00+08:00
|
|
562
|
-
INFO 结束时间: 2025-01-15T14:15:42+08:00
|
|
563
|
-
INFO 耗时: 15m42s
|
|
564
|
-
INFO 本次迁移错误列表:
|
|
565
|
-
INFO pkgName: com.example:broken-lib, errorMsg: upload failed: 502 Bad Gateway
|
|
566
|
-
INFO pkgName: com.example:large-artifact, errorMsg: context deadline exceeded
|
|
567
|
-
INFO 总数: 500, 成功数: 490, 存在数: 3, 忽略数: 5, 错误数: 2
|
|
568
|
-
INFO ----------------- Migrate Print End -----------------
|
|
569
|
-
```
|
|
570
|
-
|
|
571
|
-
### 智能体输出总结模板
|
|
572
|
-
|
|
573
|
-
当迁移完成后,智能体应使用以下模板对迁移结果进行结构化总结:
|
|
574
|
-
|
|
575
|
-
```markdown
|
|
576
|
-
## 迁移结果总结
|
|
577
|
-
|
|
578
|
-
**状态**: [成功 ✅ / 部分失败 ⚠️ / 失败 ❌]
|
|
579
|
-
|
|
580
|
-
| 指标 | 数量 |
|
|
581
|
-
|------|------|
|
|
582
|
-
| 总计 | {总数} |
|
|
583
|
-
| 成功 | {成功数} |
|
|
584
|
-
| 已存在 | {存在数} |
|
|
585
|
-
| 忽略 | {忽略数} |
|
|
586
|
-
| 失败 | {错误数} |
|
|
587
|
-
|
|
588
|
-
**耗时**: {耗时}
|
|
589
|
-
**源仓库**: {源仓库类型} - {源仓库地址}
|
|
590
|
-
**目标仓库**: {目标仓库地址}
|
|
591
|
-
|
|
592
|
-
{如有失败项,逐条列出失败原因}
|
|
593
|
-
|
|
594
|
-
{如有失败,建议:重新运行相同命令即可自动断点续传(仅全量/正则模式)}
|
|
595
|
-
```
|
|
596
|
-
|
|
597
|
-
**状态判定规则**:
|
|
598
|
-
|
|
599
|
-
```
|
|
600
|
-
若 总数 == 成功数 + 存在数 + 忽略数 → 成功 ✅
|
|
601
|
-
若 错误数 > 0 且 成功数 > 0 → 部分失败 ⚠️
|
|
602
|
-
若 错误数 == 总数 → 失败 ❌
|
|
603
|
-
```
|
|
604
|
-
|
|
605
|
-
---
|
|
606
|
-
|
|
607
|
-
## 🔗 快速参考
|
|
608
|
-
|
|
609
|
-
### 最小化命令模板
|
|
610
|
-
|
|
611
|
-
```bash
|
|
612
|
-
docker run --rm \
|
|
613
|
-
-e ARTIFACT_TYPE=<制品类型> \
|
|
614
|
-
-e SRC_REGISTRY_TYPE=<源平台> \
|
|
615
|
-
-e SRC_REGISTRY_URL="<源仓库地址>" \
|
|
616
|
-
-e SRC_REGISTRY_USERNAME="<用户名>" \
|
|
617
|
-
-e SRC_REGISTRY_PASSWORD=<密码> \
|
|
618
|
-
-e TAR_REGISTRY_URL="<目标仓库地址>" \
|
|
619
|
-
-e TAR_REGISTRY_PASSWORD=<CNB Token> \
|
|
620
|
-
-u root \
|
|
621
|
-
-v $(pwd)/log:/app/log \
|
|
622
|
-
docker.cnb.cool/cnb/plugins/cnbcool/artifact-migrate:latest
|
|
623
|
-
```
|
|
624
|
-
|
|
625
|
-
### 制品类型 × 目标仓库 URL 格式
|
|
626
|
-
|
|
627
|
-
| 制品 | ARTIFACT_TYPE | 目标仓库 URL 格式 |
|
|
628
|
-
|------|---------------|-------------------|
|
|
629
|
-
| Maven | `maven` | `https://maven.cnb.cool/<project>/<repo>/-/packages/` |
|
|
630
|
-
| NPM | `npm` | `https://npm.cnb.cool/<project>/<repo>/-/packages/` |
|
|
631
|
-
| Docker | `docker` | `docker.cnb.cool/<project>/<repo>` |
|
|
632
|
-
| NuGet | `nuget` | `https://nuget.cnb.cool/<project>/<repo>/-/packages/` |
|
|
633
|
-
| Composer | `composer` | `https://composer.cnb.cool/<project>/<repo>/-/packages/` |
|
|
634
|
-
| PyPI | `pypi` | `https://pypi.cnb.cool/<project>/<repo>/simple` |
|
|
635
|
-
| Conan | `conan` | `https://conan.cnb.cool/<project>/<repo>/-/packages/` |
|
|
636
|
-
| Cargo | `cargo` | `https://cargo.cnb.cool/<project>/<repo>/-/packages/` |
|
|
637
|
-
|
|
638
|
-
### 源平台 × 额外参数速查
|
|
639
|
-
|
|
640
|
-
| 平台 | SRC_REGISTRY_TYPE | 额外必填参数 |
|
|
641
|
-
|------|-------------------|--------------|
|
|
642
|
-
| CODING | `coding` | `SRC_CODING_DISABLE_THIRD_PACKAGE=true`(推荐) |
|
|
643
|
-
| CNB | `cnb` | - |
|
|
644
|
-
| CodeUp | `codeup` | `SRC_CODEUP_TOKEN` |
|
|
645
|
-
| Nexus | `nexus` | Docker 额外需要 `SRC_NEXUS_DOCKER_REPO_URL` |
|
|
646
|
-
| Jfrog | `jfrog` | - |
|
|
647
|
-
| TCR | `tcr` | `SRC_TCR_REGION` + `SRC_TCR_SECRET_ID` + `SRC_TCR_SECRET_KEY` |
|
|
648
|
-
| Other | `other` | 必须配合 `PACKAGE_VERSIONS_FILE_NAME` 使用 |
|
|
649
|
-
|
|
650
|
-
### 常用正则示例
|
|
651
|
-
|
|
652
|
-
```bash
|
|
653
|
-
# 只迁移特定前缀的包
|
|
654
|
-
-e INCLUDE_REGX="^@myorg"
|
|
655
|
-
|
|
656
|
-
# 排除第三方包
|
|
657
|
-
-e EXCLUDE_REGX="^third-party"
|
|
658
|
-
|
|
659
|
-
# 只迁移特定包的特定版本范围
|
|
660
|
-
-e INCLUDE_REGX="^myapp#[1-7].*$"
|
|
661
|
-
|
|
662
|
-
# 组合多个规则(逗号分隔)
|
|
663
|
-
-e INCLUDE_REGX="^@myorg,^mypackage"
|
|
664
|
-
-e EXCLUDE_REGX="^@myorg/test,^@myorg/dev"
|
|
665
|
-
```
|
|
666
|
-
|
|
667
|
-
---
|
|
668
|
-
|
|
669
|
-
## 🔗 相关资源
|
|
670
|
-
|
|
671
|
-
- **镜像地址**:`docker.cnb.cool/cnb/plugins/cnbcool/artifact-migrate:latest`
|
|
672
|
-
- **快速开始**:`docs/usage.md`
|
|
673
|
-
- **参数说明**:`docs/parameters.md`
|
|
674
|
-
- **访问凭证获取**:`docs/certificate.md`
|