前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >jenkins编译服务脚本

jenkins编译服务脚本

作者头像
章工运维
发布2023-05-19 17:45:09
3260
发布2023-05-19 17:45:09
举报
文章被收录于专栏:章工运维
代码语言:javascript
复制
#!/bin/bash

project_code=$product_code
build_path=/var/jenkins_home/workspace/$JOB_NAME
time=`date +'%Y-%m-%dT%H:%M:%SZ'`
git_tree_state="clean"
build_tag=""

function run_build(){
    name=${JOB_BASE_NAME##*.}
    if [[ $name = "service_cpp_quote" ]] || [[ $name = "service_new_trade" ]]  || [[ $name = "service_new_trade_gg" ]];then
        # C++需要先编译.
        mapping_path=/workspace
        docker_images=xxx/cpp/dev_base_tools:1.1.1
        build_command="cd /workspace && rm -rf build && mkdir build && cd build && cmake .. && make -j4 install"
        sudo docker run -v /opt/apps/jenkins/jenkins_home/workspace/$JOB_BASE_NAME:$mapping_path --rm $docker_images sh -c "$build_command"
        cd $build_path/build/dist
    elif [[ $JOB_BASE_NAME = "AIRM.db" ]]; then
        time=`date "+%Y%m%d%H%M%S"`
        cd $build_path
        sudo mkdir -p $JOB_BASE_NAME
        versionlib_path=/data/Vsersion_Lib/$project_code
		sudo mkdir -p $versionlib_path
        sudo cp -rf `ls |grep $"sql"` $JOB_BASE_NAME/
        sudo tar -zcf  "$JOB_BASE_NAME"_"$time"_"$COMMIT_ID".tar.gz $JOB_BASE_NAME/
        sudo cp "$JOB_BASE_NAME"_"$time"_"$COMMIT_ID".tar.gz $versionlib_path/
        sudo rm -f "$JOB_BASE_NAME"_"$time"_"$COMMIT_ID".tar.gz
        sudo rm -rf $JOB_BASE_NAME/
        echo "$JOB_BASE_NAME"_"$time"_"$COMMIT_ID".tar.gz

        return 0
    elif [[ $JOB_BASE_NAME = "AIRM.gateway" ]]; then
        build_tag="--build-arg VERSION=$version_number --build-arg GIT_COMMIT=$COMMIT_ID --build-arg GIT_TREE_STATE=$git_tree_state --build-arg BUILD_DATE=$time"
    elif [[ $JOB_BASE_NAME = "AIRM.service_go_trade" ]]; then
        build_tag="--build-arg VERSION=$version_number --build-arg GIT_COMMIT=$COMMIT_ID --build-arg GIT_TREE_STATE=$git_tree_state --build-arg BUILD_DATE=$time"
        docker_names=("new_gateway" "query" "trade")
        for docker_name in ${docker_names[@]}
        do
            cp script/docker/$docker_name/Dockerfile .
            sudo docker tag xxx/$project_code/$docker_name:$version_number xxx/$project_code/$docker_name:$version_number.$BUILD_NUMBER
            sudo docker rmi xxx/$project_code/$docker_name:$version_number
            sudo docker build -t xxx/$project_code/$docker_name:$version_number $build_tag .
            rm -f Dockerfile
            sudo docker push xxx/$project_code/$docker_name:$version_number
        done

        return 0
    else
        cd $build_path
    fi

    # 打包.
    docker_name=${name}
    sudo docker tag xxx/$project_code/$docker_name:$version_number xxx/$project_code/$docker_name:$version_number.$BUILD_NUMBER
    sudo docker rmi xxx/$project_code/$docker_name:$version_number
    sudo docker build -t xxx/$project_code/$docker_name:$version_number $build_tag .
    sudo docker push xxx/$project_code/$docker_name:$version_number
}

function checkBuild(){
    product=$1
    version=$2
    if [[ -z $product ]] || [[ -z $version ]];then
        # 参数为空.
        return 1
    fi
    info_path=http://172.16.30.217:9110/version/status
    value=`curl -XGET "$info_path?product_code=$product_code&version_number=$version_number" |awk -F'lock_status":' '{print $2}'|awk -F, '{print $1}'`
    if [[ $value -eq 0 ]];then
        # 可以正常构建.
        return 0
    else
        # 版本已锁定.
        return 3
    fi
}

res1=$(checkBuild $product_code $version_number)
res2=`echo $?`
if [[ $res2 -eq 1 ]];then
    echo "版本号没有输入"
    exit $res2
elif [[ $res2 -eq 3 ]];then
    echo "对应的版本已锁定"
    exit $res2
else
    run_build
fi
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档