atlassian/bitbucket-pipelines-importer,简化迁移流程。
Bitbucket Pipelines Importer 主要通过Docker镜像分发,也可编译为Java应用程序运行。以下是两种使用方式的详细说明。
打印帮助信息:
shelldocker run -it --rm atlassian/bitbucket-pipelines-importer --help
定义Docker容器内的挂载路径环境变量:
shellexport MOUNT_PATH=/files
运行Docker容器执行迁移:
shelldocker run -it --rm \ -e MOUNT_PATH=$MOUNT_PATH \ # 容器内文件挂载路径 -v $PWD/workDir:$MOUNT_PATH \ # 将本地工作目录挂载到容器内路径 atlassian/bitbucket-pipelines-importer migrate jenkins \ -i "${MOUNT_PATH}/Jenkinsfile" \ # 输入Jenkinsfile路径(容器内) -o "${MOUNT_PATH}/bitbucket-pipelines.yml" # 输出配置文件路径(容器内)
参数说明:
-i/--input:指定输入的Jenkinsfile路径(容器内路径)-o/--output:指定输出的bitbucket-pipelines.yml路径(容器内路径)-v:本地目录与容器目录挂载,用于文件输入输出-e MOUNT_PATH:容器内挂载路径环境变量,需与挂载目录保持一致编译JAR文件:
shellmvn package spring-boot:repackage
运行JAR文件执行迁移:
shelljava -jar target/bitbucket-pipelines-importer-<version>.jar \ migrate jenkins \ -i Jenkinsfile \ # 本地Jenkinsfile路径 -o bitbucket-pipelines.yml # 输出配置文件路径
构建镜像:
shelldocker build -t bitbucket-pipelines-importer .
运行本地镜像:
shelldocker run -it --rm bitbucket-pipelines-importer --help
工具采用插件化架构,支持以下扩展方式:
创建实现PluginTranslationHandler接口的类:
javapublic class CustomPluginHandler implements PluginMappingStrategy { @Override public PluginMappingResult map(MappingContext context, JenkinsStep jenkinsStep) { // 自定义转换逻辑实现 return; } }
注册为Spring组件并设置优先级和支持的命令:
java@Component @Order(BeanPrecedence.DEFAULT_MID_IMPLEMENTATION) // 设置优先级 @SupportedCommands({"custom"}) // 指定支持的Jenkins命令 public class CustomPluginHandler implements PluginMappingStrategy {}
创建覆盖默认实现的类
使用@Order注解设置更高优先级(值越小优先级越高):
javapublic interface BeanPrecedence { int CUSTOM_IMPLEMENTATION = 1; // 自定义实现(最高优先级) int DEFAULT_MID_IMPLEMENTATION = 10; // 默认中等优先级实现 int DEFAULT_LOW_FALLBACK = 100; // 默认低优先级回退实现 } @Component @Order(BeanPrecedence.CUSTOM_IMPLEMENTATION) // 高于默认实现 @SupportedCommands({"sh"}) // 覆盖"sh"命令的处理 public class CustomPluginHandler implements PluginMappingStrategy {}
详细使用说明请参考官方文档
Jenkins迁移演示
加入Bitbucket Pipelines社区,可:
shellmvn verify
shellmvn spotless:apply
工具使用Lombok减少样板代码,需在编辑器中安装Lombok插件:
欢迎对Bitbucket Pipelines Importer贡献代码!详情请参见CONTRIBUTING.md
Copyright (c) 2024 Atlassian US., Inc.
采用Apache 2.0许可证,详见LICENSE文件。
![With ❤️ from Atlassian]([***]
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务