1、创建新的项目

2、填写项目英文名称,并且选择多分支流水线

3、填写中文名称以及描述

4、设置Branch Sources,选择Git

5、填入仓库地址,这里使用http协议的地址,并选择拥有Maintainer权限的令牌

6、选择需要发选的分支通过正则表达式过滤,这里选择只发现develop和test分支,正则表达式“(develop|test)”,也可以根据自己的实际需要来使用其他分支

7、如果没有出发条件,这里配置在30分钟内自动出发一次

8、其他选项保持默认不变,最后保存即可

9、构建结果

10、在项目的develop跟test分支中添加Jenkinsfile文件用于jenkins的扫描构建

pipeline {
    agent any
    environment {
        COMMIT = sh (script: 'git log -1 --pretty=%B ${GIT_COMMIT}', returnStdout: true).trim()
    }
    stages {
        stage('Build Info') {
            steps {
                script {
                    sh "echo BRANCH_NAME : ${env.BRANCH_NAME}"
                    sh "echo COMMIT : ${env.COMMIT}"
                    sh "echo WORKSPACE : ${env.WORKSPACE}"
                    sh "echo BUILD_NUMBER : ${env.BUILD_NUMBER}"
                    sh "echo JOB_NAME : ${env.JOB_NAME}"
                }
            }
        }
        stage('Develop') {
            when { branch 'develop' }
            steps {
                sh """
                    rsync --exclude='.git' -r ./ {项目目录}
                    docker restart {容器名}
                    docker exec {容器名} bash -c 'cd {项目目录} ; {其他命令}'
                    docker exec openresty nginx -s reload
                """
            }
        }
        stage('Test') {
            when { branch 'test'}
            steps {
                sh """
                    rsync --exclude='.git' -r ./ {项目目录}
                    docker restart {容器名}
                    docker exec {容器名} bash -c 'cd {项目目录} ; composer install; chmod -R 777 bootstrap storage'
                    docker exec openresty nginx -s reload
                """
            }
        }

    }
    post {
        failure {
            dingtalk (
                robot: 'Deployer',
                type: 'MARKDOWN',
                title: "{项目名}/${env.BRANCH_NAME}",
                text: [
                    "# [{项目名}](${env.JOB_URL})",
                    "---",
                    "- 环境:${env.BRANCH_NAME}",
                    "- 任务:[#${env.BUILD_NUMBER}](${env.JOB_URL})",
                    "- 状态:<font color=#DC143C>失败</font>",
                    "- 提交:${env.COMMIT}"
                ],
            )
        }
        success {
            dingtalk (
                robot: 'Deployer',
                type: 'MARKDOWN',
                title: "{项目名}/${env.BRANCH_NAME}",
                text: [
                    "# [{项目名}](${env.JOB_URL})",
                    "---",
                    "- 环境:${env.BRANCH_NAME}",
                    "- 任务:[#${env.BUILD_NUMBER}](${env.JOB_URL})",
                    "- 状态:<font color=#32CD32>成功</font>",
                    "- 提交:${env.COMMIT}"
                ],
            )
        }
    }
}

{}中是汉字的是指变量,对应实际项目中的参数,因为我的部署环境用到了docker,所以有容器的相关操作

在sh """

"""

中间的是命令行,可以根据实际情况来修改

11、在对应的gitlab项目中添加webhook

可以查看构建历史是否成功,如果失败可以进入console ouput查找具体原因

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐