How to tag a git repo in a bamboo build

后端 未结 3 1271
傲寒
傲寒 2021-01-30 09:19

I\'m trying to tag the git repo of a ruby gem in a Bamboo build. I thought doing something like this in ruby would do the job

`git tag v#{current_version}`
`git         


        
相关标签:
3条回答
  • 2021-01-30 09:54

    I know this is an old thread, however, I thought of adding this info.

    From Bamboo version 6.7 onwards, it has the Git repository tagging feature Repository Tag.

    You can add a repository tagging task to the job and the Bamboo variable as tag name. You must have Bamboo-Bitbucket integrated via the application link.

    0 讨论(0)
  • 2021-01-30 09:58

    It seems that after a checkout by the bamboo agent, the remote repository url for origin is set as file://nothing

    [remote "origin"]
    url = file://nothing
    fetch = +refs/heads/*:refs/remotes/origin/*
    

    That's why we can either update the url using git remote set-url or in my case I just created a new alias so it does not break the existing behavior. There must be a good reason why it is set this way.

    [remote "build-origin"]
    url = <remote url>
    fetch = +refs/heads/*:refs/remotes/build-origin/*
    

    I also noticed that using ${bamboo.planRepository.<position>.repositoryUrl} did not work for me since it was defined in my plan as https. Switching to ssh worked.

    0 讨论(0)
  • 2021-01-30 10:10

    Yes, if you navigate to the job workspace, you will find that Bamboo does not do a straightforward git clone "under the hood", and the the remote is set to an internal file path.

    Fortunately, Bamboo does store the original repository URL as ${bamboo.repository.git.repositoryUrl}, so all you need to do is set a remote pointing back at the original and push to there. This is what I've been using with both basic Git repositories and Stash, creating a tag based on the build number.

    git tag -f -a ${bamboo.buildNumber} -m "${bamboo.planName} build number ${bamboo.buildNumber} passed automated acceptance testing." ${bamboo.planRepository.revision}
    git remote add central ${bamboo.planRepository.repositoryUrl}
    git push central ${bamboo.buildNumber}
    git ls-remote --exit-code --tags central ${bamboo.buildNumber} 
    

    The final line is simply to cause the task to fail if the newly created tag cannot be read back.

    EDIT: Do not be tempted to use the variable ${bamboo.repository.git.repositoryUrl}, as this will not necessarily point to the repo checked out in your job.

    Also bear in mind that if you're checking out from multiple sources, ${bamboo.planRepository.repositoryUrl} points to the first repo in your "Source Code Checkout" task. The more specific URLs are referenced via:

    ${bamboo.planRepository.1.repositoryUrl}
    ${bamboo.planRepository.2.repositoryUrl}
    ...
    

    and so on.

    0 讨论(0)
提交回复
热议问题