【安装以及本地搭建Jenkins】

CI/CD
https://www.jenkins.io/zh/doc/book/installing/ (jenkens安装手册)
1.首先需要安装docker
2.最低推荐配置:
256MB可用内存
1GB可用磁盘空间(作为一个
Docker容器运行jenkins的话推荐10GB)
为小团队推荐的硬件配置:
1GB+可用内存
50 GB+ 可用磁盘空间
软件配置:
Java 8—​无论是Java运行时环境(JRE)还是Java开发工具包(JDK)都可以。
3.容器中拉取官网 镜像 在本地运行

docker run -u root --rm -d -p 8081:8080 -p 50000:50000 -v jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean

4.打开浏览器访问本地docker地址和端口 http://localhost:8081

5.同时间创建自己的git仓库以及镜像仓库
我这里采用的是腾讯云和gitee
https://gitee.com/dashboard

https://console.cloud.tencent.com/tcr/repository/

6.回到jenkins中创建新的任务选择适合自己项目的任务

我这里选择的是流水线方式,把编辑好的脚本放入脚本执行处中,选择构建就执行了

7.这里需要注意的是,配置好相关的凭证以及系统插件

8.我这里下载的插件有gitee,SHH等,以及配置好相关的git用户名&密码,还有凭证token令牌

9.最后是我的执行脚本并把版本信息推送到企微当中l
// 镜像仓库
def harborUri = ‘XXXXXX’

def versionNumber = new Date().format(‘yyyyMMddHHmmss’, TimeZone.getTimeZone(‘Asia/Shanghai’)) + “${env.BUILD_ID}”

// 镜像版本号
def versionNo = “${versionNumber}-alpine-supervisor-php74”

// 代码目录
String codeConfBaseDir=“index”

// 发布脚本路径
String deployShellDir = “deploy”

// 容器外端口
String outerPort=‘8081’

// 容器内端口
String innerPort=‘8080’

// 镜像仓库用户名
def harborUsername=‘111111111’

// 镜像仓库密码
def harborPasswd=‘1111111’

// 镜像命名空间
def harborNamespace = ‘cangku’

// 凭据
def pullCodeCredentialsId = ‘0ebfe617-30ab-4861-9e19-9a99ce4a67e2’

// 代码仓库地址
def repositoryUrl = ‘https://gitee.com’

// 机器人
def robotMap = [
‘test’:‘e41231c-1c321-321ff-82313-1c6af40f11’,
]

// 容器外storage路径
String storagePathPrefix=‘/index/www/index/’

// 容器内storage路径
String innerStoragePath=‘/www/index’

//部署
node {
String currentDir =pwd()
properties([

        buildDiscarder(logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '', numToKeepStr: '5')),

        // 参数
        parameters([
                // 运行环境
                choice(choices: ['test'], description: '''运行环境(发布时请手动修改环境标识,标识如下:)\n测试环境:test\n生产环境:prod\n''', name: 'runEnv'),
                // 分支
                choice(choices: ['test','master'], description: '''代码分支(发布时请手动修改分支标识,标识如下:)\n测试分支:test\n生产分支:master\n''', name: 'branch')
        ])
])

println("运行环境:${runEnv},发布分支:${branch}")

stage ('ready go') {
    sh ("rm -rf ${currentDir}/${codeConfBaseDir}/*")
    wrap([$class: 'BuildUser']) {
        currentBuild.description="${env.BUILD_USER}-${branch}-${versionNumber}"
    }
}

stage('pull code') {
    checkout([
            $class: 'GitSCM',
            branches: [[name: "${branch}"]],
            doGenerateSubmoduleConfigurations: false,
            extensions: [ [$class: 'RelativeTargetDirectory', relativeTargetDir: "${codeConfBaseDir}"] ],
            submoduleCfg: [],
            userRemoteConfigs: [[
                credentialsId: "${pullCodeCredentialsId}",
                url: "${repositoryUrl}",
            ]]
    ])
    println("拉取代码:${repositoryUrl},分支:${branch}")
}

// 构建镜像
def lankouImageVersion = "${versionNo}"
def lankouImageFullPath = "${harborUri}/${harborNamespace}"
stage('build image') {
    sh ("ls ${codeConfBaseDir} -al")
    sh """
        cd ${codeConfBaseDir} && docker build --no-cache -f Dockerfile \
          --build-arg PROJECT_ENV="${runEnv}" \
        -t ${harborUri}/${harborNamespace}:${versionNo} .
    """
}

// 推送镜像
stage('push image') {
    sh """
            docker login --username=${harborUsername} --password=${harborPasswd} ${harborUri}
            docker push ${harborUri}/${harborNamespace}:${versionNo}
            docker rmi -f ${harborUri}/${harborNamespace}:${versionNo}
    """
}
 // 机器人推送版本号
    stage ('push msg') {
        sh """
            curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=${robotMap[runEnv]}' \\
           -H 'Content-Type: application/json' \\
           -d '
           {
                "msgtype": "text",
                "text": {
                    "content": "特斯拉,环境:${runEnv},镜像构建成功,版本号:${harborUri}/${harborNamespace}:${versionNo}"
                }
           }'
        """
        sh ("rm -rf ${currentDir}/${codeConfBaseDir}/*")
    }

    stage ("echo version") {
        println("特斯拉,环境:${runEnv},镜像构建成功,版本号:${harborUri}/${harborNamespace}:${versionNo}")
    }
}




  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值