Build hanging in 'on_success' during git push

Leandro Tavares's Avatar

Leandro Tavares

29 Jun, 2018 08:53 PM

I am trying to push some markdown files to a GitHub wiki. I have successfully cloned the wiki repo, added and committed the new files, but the process seems to hang while pushing to GitHub. I gave all permissions for the token on GitHub. On my local machine, the files are pushed normally and almost immediately. This forum discussion (https://help.appveyor.com/discussions/problems/270-why-is-the-build...) suggests that some prompt may be causing the error, but I am not sure that this is indeed the problem, my machine does not prompt me anything. I have added some git status through the process to figure out what is going on, but the results are inconclusive to me, everything seems to be normal up to the last line git push

This is the last failing build, after 1 hour the workflow timeouts marking build as failure.

https://ci.appveyor.com/project/leandroltavares/greenutil/build/1.0.60

The following is my yml file on_success section:

on_success:
  - git config --global credential.helper store
  - ps: Add-Content "$HOME\.git-credentials" "https://$($env:access_token):x-oauth-basic@github.com`n"
  - git config --global user.email "[email blocked]"
  - git config --global user.name "Leandro Luciani Tavares"
  - md C:\projects\wiki
  - cd C:\projects\wiki
  - git clone https://github.com/leandroltavares/GreenUtil.wiki.git 
  - cd GreenUtil.wiki
  - git status
  - C:\projects\greenutil\Assets\MarkdownGenerator.exe C:\projects\greenutil\GreenUtil\bin\Release\net471\GreenUtil.dll "C:\projects\wiki\GreenUtil.wiki"
  - git status
  - git add .
  - git status
  - git commit -m "Commiting wiki changes"
  - git status
  - git push

What am I missing?

  1. Support Staff 1 Posted by Owen McDonnell on 29 Jun, 2018 09:58 PM

    Owen McDonnell's Avatar

    Is the access_token environment variable you are using straight from github or has it been encrypted (hopefully the latter)?
    If it has been encrypted make sure you're doing so from the same account your building on and syntax should be,

    environment:
      access_token:
        secure: <encrypted token>
    
  2. 2 Posted by Leandro Tavares on 29 Jun, 2018 11:16 PM

    Leandro Tavares's Avatar

    Yes, hopefully, it was encrypted with the same account the build is running. I have made a mistake and forgot to add the secure: tag before the encrypted token. I have just fixed the YML on build 1.0.61 ( https://ci.appveyor.com/project/leandroltavares/greenutil/build/1.0.61 ) to be as you pointed out

    But the hanging issue persists. The full YML file can be seen at https://github.com/leandroltavares/GreenUtil/blob/master/appveyor.yml

    Somehow, I think the credentials on my local machine are being cached from somewhere (maybe the GitHub desktop client). And I am not being able to provide them properly to the git CLI on the CI server. Is there an away to check and debug this? And also check if there is any prompt after the git push command.

  3. Support Staff 3 Posted by Owen McDonnell on 29 Jun, 2018 11:26 PM

    Owen McDonnell's Avatar

    It definitely would be a good idea to RDP to the build worker.
    I would recommend adding this line after adding the git credential in the on_success: stage.

    - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
    
    That way you'll be able to check if that github credential is being added as you expect.
    You'll also be able to check if there are any prompts blocking progress.
  4. 4 Posted by Leandro Tavares on 03 Jul, 2018 03:20 PM

    Leandro Tavares's Avatar

    I have accessed the RDP and no prompt window is displayed. I have also checked the .git-credentials at the C:\Users\appveyor folder. And as the print show the token was properly added (I omitted the token data). The build still hangs on the CI server at the git push.

    I have tested the script locally, and git CLI sometimes prints some errors on the StdErr that caused the build to fail. I have suppressed the output with the -q option. Locally, doing this was enough to solve the problem. The git push command on my machine returns almost immediately.

    The following is the publishing PowerShell script to GitHub wiki:

    Param([string]$token)
    
    $mdFolder = "C:\projects\wiki2"
    
    Write-Host "Start publishing documentation to wiki"
    git config --global credential.helper store
    Add-Content "$HOME\.git-credentials" "https://$($token):x-oauth-basic@github.com`n"
    git config --global user.email "[email blocked]"
    git config --global user.name "Leandro Luciani Tavares"
    Remove-Item $mdFolder -Force -Recurse -ErrorAction SilentlyContinue
    md $mdFolder
    cd $mdFolder
    git clone --branch=master "https://github.com/leandroltavares/GreenUtil.wiki.git" -q
    cd GreenUtil.wiki
    git status
    C:\projects\greenutil\Assets\MarkdownGenerator.exe "C:\projects\greenutil\GreenUtil\bin\Release\net471\GreenUtil.dll" "$($mdFolder)\GreenUtil.wiki"
    git status
    git add .
    git status
    git commit -m "Commiting wiki changes"
    git status
    git push -q
    git status
    Write-Host "Start publishing documentation to wiki"
    
  5. Support Staff 5 Posted by Owen McDonnell on 03 Jul, 2018 09:09 PM

    Owen McDonnell's Avatar

    And you are definitely not using SSH keys to authenticate from your local machine?

  6. Support Staff 6 Posted by Owen McDonnell on 04 Jul, 2018 05:50 AM

    Owen McDonnell's Avatar

    Also, can you try to RDP the same way as before (after the git credential is added) and do all of the git cloning, patching, committing and pushing from the RDP session.

  7. 7 Posted by Leandro Tavares on 04 Jul, 2018 02:14 PM

    Leandro Tavares's Avatar

    I did what you suggested. I have added a sleep to keep the RDP session open and I executed the script manually. It ran to completion with success. All MD files were pushed to GitHub wiki properly with no hanging. You can see the result at (https://github.com/leandroltavares/GreenUtil/wiki). I have attached the output from the PowerShell ISE. I noticed is that the .git-credentials file did not exist on C:\Users\appveyor\ before the script. The file was created during the script execution and the token was added. (as the previous screenshot shown).

    If the script works from the PS ISE, it should work from the CI agent, right? May it be a permission issue? (But, at the best of my knowledge, the RDP session user is the same for the build agent)

  8. Support Staff 8 Posted by Owen McDonnell on 04 Jul, 2018 04:12 PM

    Owen McDonnell's Avatar

    I have followed your steps very closely in this test project, with no problems (i'm making a trivial commit to the projects own wiki). Unless you can see something in it that significantly differentiates it

    How about as a test you try making a trivial commit to some other repository you own. That way we will know for certain that the process itself is working for you as it is for me in the test project i linked to above..

  9. 9 Posted by Leandro Tavares on 04 Jul, 2018 07:59 PM

    Leandro Tavares's Avatar

    I have checked your script and I saw that it is very similar to mine. First, I changed the script to append a simple text to the Home.md (as you did). It did not work for the current wiki, so I changed the test to commit to another wiki repository. Same behavior, when running the full process through the build agent git push hangs. But, running the script inside the RDP session make it work. Do you think it is necessary any other setup? Btw, what permissions do you have set for the token? I granted it the full access. May it be something regarding git version? I ran the git --version and it returned 2.17.1.windows.2 (we both are using the same VM image, but just in case to confirm)

  10. Support Staff 10 Posted by Owen McDonnell on 05 Jul, 2018 12:30 AM

    Owen McDonnell's Avatar

    The token i use only has "repo" permissions.
    I can't imagine granting all permissions could possibly do anything to interrupt this process...
    Still, as this issue is really starting to stump me, do you mind generating a new token with those same permissions and trying again.

  11. 11 Posted by Leandro Tavares on 05 Jul, 2018 01:39 AM

    Leandro Tavares's Avatar

    Created a new token only with the "repo" permission, same behavior. On the agent it stucks in the git push, but in the RDP session, it works. May it be a different version of git.exe?

  12. Support Staff 12 Posted by Owen McDonnell on 06 Jul, 2018 02:12 AM

    Owen McDonnell's Avatar

    By the looks of it, you got your build to push to github successfully. If so, did you determine what was causing the problem?

  13. 13 Posted by Leandro Tavares on 06 Jul, 2018 12:16 PM

    Leandro Tavares's Avatar

    Unfortunately, it didn´t work. I have accessed the RDP session and killed the git-remote-https. I am still trying to figure out an way to make it work.

  14. Support Staff 14 Posted by Owen McDonnell on 06 Jul, 2018 11:52 PM

    Owen McDonnell's Avatar

    I cloned your project but was still unable to reproduce this issue.

    In order to move forward in troubleshooting this you'll need to create a test project that reproduces this error and make me a collaborator on your account.
    Then you can create a temporary GitHub key and put all the settings (including that key) for the project in the UI so that i can make changes to them.

  15. Ilya Finkelshteyn closed this discussion on 06 Sep, 2018 09:00 PM.

Comments are currently closed for this discussion. You can start a new one.

Keyboard shortcuts

Generic

? Show this help
ESC Blurs the current field

Comment Form

r Focus the comment reply box
^ + ↩ Submit the comment

You can use Command ⌘ instead of Control ^ on Mac