jenkins/gitlab构建python项目docker镜像
环境准备
pycharm:开发代码
gitlab:代码仓库
jenkins:构建镜像
harbor:镜像仓库
构建流程

gitlab创建dnsweb项目

pycharm配置gitlab
安装gitlab插件

配置gitlab仓库连接地址


提交代码到dnsweb

jenkins配置dnsweb项目
创建dnsweb流水线

保留项目构建数量![]()
添加构建参数,可以根据实际应用构建情况来添加

jenkins构建脚本
checkout可以通过jenkins pipeline自动生成;sh脚本按照实际来写
pipeline { agent any stages { // get project code from repo stage('pull') { steps { //git credentialsId: 'dnsweb-gitlab', url: 'http://gitlab.devops.com/app/dnsweb.git' checkout changelog: false, poll: false, scm: [$class: 'GitSCM', branches: [[name: "${params.gitbranch}"]], \ extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: "${params.app_name}/${env.BUILD_NUMBER}/${params.app_name}"], \ [$class: 'CleanBeforeCheckout', deleteUntrackedNestedRepositories: true]], userRemoteConfigs: [[credentialsId: 'dnsweb-gitlab', \ name: 'origin', url: 'http://gitlab.devops.com/app/dnsweb.git']]] //sh "git clone ${params.git_repo} ${params.app_name}/${env.BUILD_NUMBER}/${params.app_name} && cd ${params.app_name}/${env.BUILD_NUMBER}/${params.app_name} && git checkout ${params.gitbranch}" } } stage('package') { // exec mvn cmd steps { sh "cd ${params.app_name}/${env.BUILD_NUMBER} && mkdir ${params.target_dir} && tar -zcvf ${params.target_dir}/${params.app_name}.tar.gz --exclude=.git ${params.app_name}" } } stage('image') { // build image and push to registry steps { writeFile file: "${params.app_name}/${env.BUILD_NUMBER}/${params.target_dir}/Dockerfile", text: """FROM harbor.devops.com/${params.base_image} ADD ${params.app_name}.tar.gz /opt""" sh "cd ${params.app_name}/${env.BUILD_NUMBER}/${params.target_dir} && \ docker build -t harbor.devops.com/${params.image_name} . && \ docker push harbor.devops.com/${params.image_name}" } } } }
测试构建



浙公网安备 33010602011771号