我如何从dockerfile进行git clone时知道我在哪个git分支上

时间:2018-09-28 09:11:59

标签: git docker jenkins

我的dockerfile:

WORKDIR /var/jenkins_home/workspace/pipeline@script/xxxxx
RUN apt-get -y install git
RUN git clone https://Team:1234@bitbucket.org/MinoxTeam/xxxxx.git /xxxxx && \
    cd /xxxxx

我正在使用jenkinsfile中的这些命令来确认我在master上并且已经更新了master分支,然后才运行测试:

pipeline {
 stage {
  steps {
    checkout scm 
    sh 'git checkout master'
    sh 'git pull'`enter code here`
    sh 'npm i'
    sh 'npm run test:single rest'
  }
 }
}

我的问题是,当我从dockerfile本身进行git clone时,它已经与docker映像一起获得了工作区,因此我是否必须结帐scm和git checkout master-它不是自动在master上吗?

我不想依靠jenkins gui进行piplelineSCM的结帐步骤

2 个答案:

答案 0 :(得分:1)

通过这一行,您可以使用git和perl命令(任何地方都可以使用perl)在任何bash中获得分支。

#outputs: master
git status -b --porcelain | perl -ne 'print $1 if /## (\w+)/'

此行可以集成到其他脚本中,因为它仅输出分支名称。克隆后运行它,或仅执行git status以显示人类可读信息。

答案 1 :(得分:0)

Jenkins定义了一个GIT_BRANCH环境变量。您可以添加此步骤进行检查:

sh "echo ${env.GIT_BRANCH}"