如何在Jenkins中设置源代码库?

unguejic  于 2023-10-17  发布在  Jenkins
关注(0)|答案(2)|浏览(204)

我是Jenkins的新手,我想我在设置Jenkins时错过了一个步骤。我在本地Docker容器中运行Jenkins 2.401.3。我在本地Linux机器上有一个git repo。
基本的hello world示例,例如这里的“Through the classic UI”,可以按预期工作:https://www.jenkins.io/doc/book/pipeline/getting-started/
当我试图拉入源代码时,我开始遇到麻烦。我希望我的Jenkins管道使用git repo中的Dockerfile来构建其余的代码。
我想做一些类似的例子从https://www.jenkins.io/doc/book/pipeline/docker/#dockerfile

pipeline {
    agent { dockerfile true }
    stages {
        stage('Test') {
            steps {
                sh 'node --version'
                sh 'svn --version'
            }
        }
    }
}

当我尝试运行示例代码时,Jenkins找不到我的dockerfile。当我添加一个新阶段来 checkout 我的代码时,它似乎确实找到了我的代码,但不会在下一阶段使用dockerfile。

pipeline {
    agent any
    //agent { dockerfile true } //this line doesn't work

    stages {
        stage('Checkout') {
            steps {
                checkout scmGit(branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[url: '/myPath/myRepo/']])
            }
        }
        stage('Build') {
            agent { dockerfile true }
            
            steps {
                sh 'python3 --version' //this should output the version installed by my Dockerfile
            }
        }
    }
}

我从来没有设置过“源代码库”,也找不到这样做的选项。我需要做什么才能让Pipeline识别我的Dockerfile?

ix0qys7i

ix0qys7i1#

我找到了一个可行的解决方案。如果您使用SCM中的Pipeline脚本,则agent {dockerfile true}命令可以找到dockerfile。
变更说明:
1.在Jenkins web GUI中,选择Pipeline
1.单击配置
1.将Pipeline脚本的文本从表单窗口复制到存储库中名为Jenkinsfile的新文件中
1.将管道定义从“管道脚本”更改为“SCM中的管道脚本”
1.单击保存
1.单击“立即生成”
我原来的帖子中的“结账”阶段现在是多余的。我不明白为什么我原来的方法不起作用,但使用Jenkinsfile是一个可行的解决方案。

slwdgvem

slwdgvem2#

例如,您可以在Jenkins机器上使用dir()来指定workdir

stage ("Checkout") {
    steps {
        dir('source'){
           checkout scmGit(branches: [[name: '*/master']], 
                    extensions: [], 
                    userRemoteConfigs: [[url: '/myPath/myRepo/']])
        }
    }
}

使其易于处理任务,减少Jenkins机器的混乱。

相关问题