Problem:
I want to update and commit a version file after a Pull Request complete in Azure Devops. For example, I have a repository with a "main" branch and a "changes" branch. When I create a pull request to merge "changes" into "main", I want to increment the version in version.h.
I am using Azure Devops pipelines, I have a azure-pipeline.yaml file that is triggered when a pull request is created. The yaml executes and it increments version.h, however, I always fail the step to push the version.h file. I do not know how to add it to the current merge request.
I have all the permissions required as defined here.
Tried:
EDIT: Apologies, it's a little difficult to describe what I am trying to do. The error I ran into was related to trying to push to a repository that was not synced to the remote repository. The repository used by the azure build agent only checks out the merge commit, so pushing to "main" or "changes" ended up out of date. I resolved this by deleting the /s directory after every job.
It is quite confusing to understand your actual requirements, based on your current description, because when a PR validation build runs, the PR is not yet completed and we cannot push the updated ·version.h· file as a commit onto the temporary intermediate branch refs/pull/$(System.PullRequest.PullRequestId)/merge
, which can only be generated and changed by the Azure DevOps System and which is actually checked out by the PR validation build.
When a PR completes, it generates a PR merge commit on the PR target branch (main
). As well recognized as an IndividualCI
, it can also trigger a pipeline. You may try the sample YAML pipeline below to be triggered by any commit pushed onto main
branch, then to update a version.h
file and push the commit onto the main
branch. Still not sure why not update the version.h
file in your PR source branch and bring it into PR target branch together with the PR merge commit.
trigger:
branches:
include:
- main
paths:
exclude:
- version.h
pool:
vmImage: ubuntu-latest
steps:
- checkout: self
persistCredentials: true
fetchDepth: 0
- script: |
git config --global user.email "$(Build.RequestedForEmail)"
git config --global user.name "Azure Pipelines"
git checkout -b main
echo test$(Build.BuildId) >> version.h
git add version.h
git commit -m "Updated version.h during build $(Build.BuildId)"
git push origin main