<< Back to previous view

[QB-3283] [Git Proof Build] the critical issues occur in a local repository where the user agent is running while developers run the proof build with their commits
Created: 29/Oct/18  Updated: 21/Jan/19

Status: Closed
Project: QuickBuild
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Major
Reporter: Yoongeon Lee Assigned To: Robin Shen
Resolution: Won't Fix Votes: 0
Remaining Estimate: Unknown Time Spent: Unknown
Original Estimate: Unknown
Environment: (Build Agent) Windows 10 Enterprise x64
(User Agent) Windows 10 Enterprise x64

File Attachments: PNG File 3.0.0.2372-Clone Step.png     Text File 3.0.0.2372_Proof failed-Conflict.txt     PNG File Git repository Configuration.png    

 Description   
We have been using Git and GitHub with connecting to CI-QBuild.
Our developers are merging source code into the main repository through the proof build provided by qbuild.

The developers typically run a proof build and then continue with code development on another branch like develop_feature1, develop_feature2 and so on.
In that case, the following critical issues occur in a local repository where the user agent is running.

1) The developer made a new commit in "develop" branch and then ran the proof build with the commit.
2) Next, developer changes another branch "develop_feature1" using "git checkout" command and continue with code development on it.
3) The following commands were executed sequentially in the developer local repository where the user agent was running
    - git fetch origin develop
    - git merge FETCH_HEAD
4) A lot of conflicts occurred during merging FETCH_HEAD. Those commands should be run in the develop branch, NOT develop_feature1 ( current working branch )

Error message) ( * please refer to the log "3.0.0.2372_Proof failed-Conflict")
Step 'Clone a Repository Into Build Server' is failed: Merge conflicts found. Please fix conflicts and merge first, then run the proof build again.



 Comments   
Comment by Yoongeon Lee [ 29/Oct/18 04:41 PM ]
One more issue,

If a new commit is updated in the remote main repository by another developer "B" while the proof build is running by the developer "A", the proof build fails.
I think if there is no conflict between commits and the commit by developer "A" should be pushed to the main repository without any problem.

We have more than 10~20 changes occur in git repository per sw product. If more than 10 changes are queued, only first commit succeeds, and the other remaining commits fail.

Error log)
error: failed to push some refs to 'git@3dgit.3dsystems.com:3DSprint/3d-sprint.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
Comment by Yoongeon Lee [ 29/Oct/18 05:02 PM ]
To solve these problems, I set the push condition as false in repository configuration, and add the steps to the proof workflow manually. ( like git checkout current branch, git fetch, git rebase --autostash...). However it is not a complete solution.

I think our git proof build seems to be very unstable. It is extremely dangerous for a user agent to fetch and merge in the developer repository.
Please let me know if there is a way to run all steps for merging commits on the Build Agent. ( From git clone To git push )
Comment by Robin Shen [ 30/Oct/18 12:13 AM ]
This is a limitation of proof build. Proof build will operate on the local repository directly and user needs to wait for proof build to complete before switching to other branch. For Git/GitHub development, it is suggested to use pull request instead of proof build to run verification builds before merging user code into main branch.
Comment by Yoongeon Lee [ 30/Oct/18 08:12 AM ]
Can you explain a little bit more about how to set the pull request you mentioned?
Do you have more detailed documentation than the link below? I would like to check it ASAP.
- https://wiki.pmease.com/display/QB51/Working+with+GitHub
Comment by Robin Shen [ 30/Oct/18 11:28 PM ]
It means your team member needs to push their changes to feature branches at GitHub side, and then send a pull request at GitHub side to request to merge the change to master branch. Then QB is pull request enabled will verifying the feature branch automatically. After verification, the pull request can then be accepted to master branch via GitHub interface.
Comment by Yoongeon Lee [ 01/Nov/18 11:28 AM ]
As I understood, the developer pushes his commit manually to his branch and requests a pull request manually.
If pull request is enabled on repository configuration, QB downloads the main branch and the developer branch,
and then QB applies the developer branch to main branch of remote repository automatically after verification(we already defined) is complete. right?

We need more information about 5 options of Pull requests in GitHub repository.
1) All Opened Pull Requests
2) All Closed Pull Requests
3) Pull requests with title filter
4) Specified Pull Requests
5) Pull Requests with body filter
6) Pull Requests with label filter

Comment by Robin Shen [ 01/Nov/18 11:34 PM ]
When a pull request is created, GitHub will merge developer branch and main branch. QB then will verify this merged result (if pull request of type MERGE is specified at QB side). Options explained as below:

1. All open pull requests: build all open pull requests
2. All closed pull requests: build all closed pull requests
3. Pull requests with title filter: build all pull requests with title matching specified criteria
4. Specified pull requests: build specified pull request
5. Pull requests with body filter: build pull requests with description matching specified criteria
6. Pull requests with label filter: build pull requests with label matching specified criteria

Generated at Thu Apr 25 19:53:53 UTC 2024 using JIRA 189.