Join us!
Want to join the team?

We would love to get to know you

Are you looking for an employer who cares about you as a person and where you feel involved in everything that concerns you? Welcome to JellyHive!

Who are we? We are a successful IT consultant company and our philosophy is that the company is our employees.
Who are you? You are a system developer (fullstack, frontend, backend), and/or maybe also a scrum master, test lead, devops etc.
What we offer you Participation in developing the company with generous benefits.

Read more Contact us
Stefan Matsson 2016-08-19

Make Visual Studio Online builds great again (or at least working again)

This Wednesday when I arrived at work, all our builds in Visual Studio Online (VSO) had failed and no new builds were able to complete. They all failed with "Access denied" errors on specific files. As VSO fails for wierd reasons some times and we had no hurry we just let it sit for a couple of hours to see if the error corrected itself. 

Unfortunately, it did not. So at lunch time we started investigating and soon found out that the VSO team made an update to the build servers the same day. Nothing in the change log seemed to relate to the issue so we continued to investigate.

It seemed that we could create new file (e.g. minified builds of our JS code) but could not update existing files (e.g. inject said minified code into our index.html file). The same build tasks that did this in VSO worked perfectly on our local machines.

Some time passed. Google gave us nothing and the builds were still not working. As a test I changed my local index.html file to "read only" and tried to run the build task locally. Voila! Gulp showed the same "Access denied" error. As the next step I added a PowerShell-script build step just before our Gulp script, which removed the "read only" attribute from our index.html file. The build completed successfully! 

So here you go, a PowerShell-script that removes the read only attribute from ALL files in the folder that VSO uses for checkouts:

Get-ChildItem "$(Agent.BuildDirectory)" -Recurse |
    Where-Object {$_.GetType().ToString() -eq "System.IO.FileInfo"} |
    Set-ItemProperty -Name IsReadOnly -Value $false

How to use it? 

  1. Edit the build definition of your build
  2. Click on "Add build step..."
  3. Select "Utility" and click on "Add" next to "PowerShell++" 
  4. Close the "Add build step..." modal and drag the new PowerShell++ step to the top of your build definition
  5. In the right side panel, set "Type" to "Inline script" and paste the code above in the "Script" field
  6. Click on Save and enjoy working builds (at least for now...)