Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug] GitVersionTask crashes with LibGit2SharpException: failed to create locked file: Permission denied #2317

Closed
wjrogers opened this issue Jun 9, 2020 · 4 comments
Labels

Comments

@wjrogers
Copy link
Contributor

wjrogers commented Jun 9, 2020

Describe the bug

When building a tag in GitHub Actions on the ubuntu-latest runner, a dotnet publish command fails in ExecuteGitVersionTask with the error "LibGit2SharpException: failed to create locked file '/home/runner/work/repo/repo/Solution/.git/refs/heads/tags/v20.0.1.lock': Permission denied".

Expected Behavior

GitVersionTask should run successfully. The same GitHub Actions workflow file builds successfully for branch pushes (i.e. not tags).

Actual Behavior

2020-06-09T15:57:16.7289840Z /home/runner/.nuget/packages/gitversiontask/5.3.4/build/GitVersionTask.targets(10,9): error : LibGit2SharpException: failed to create locked file '/home/runner/work/repo/repo/Solution/.git/refs/heads/tags/v20.0.1.lock': Permission denied [/home/runner/work/repo/repo/Solution/Project/Project.csproj]
2020-06-09T15:57:16.7291258Z /home/runner/.nuget/packages/gitversiontask/5.3.4/build/GitVersionTask.targets(10,9): error :    at LibGit2Sharp.Core.Ensure.HandleError(Int32 result) [/home/runner/work/repo/repo/Solution/Project/Project.csproj]
2020-06-09T15:57:16.7292337Z /home/runner/.nuget/packages/gitversiontask/5.3.4/build/GitVersionTask.targets(10,9): error :    at LibGit2Sharp.Core.Ensure.ZeroResult(Int32 result) [/home/runner/work/repo/repo/Solution/Project/Project.csproj]
2020-06-09T15:57:16.7293528Z /home/runner/.nuget/packages/gitversiontask/5.3.4/build/GitVersionTask.targets(10,9): error :    at LibGit2Sharp.Core.Proxy.git_reference_set_target(ReferenceHandle reference, ObjectId id, String logMessage) [/home/runner/work/repo/repo/Solution/Project/Project.csproj]
2020-06-09T15:57:16.7294339Z /home/runner/.nuget/packages/gitversiontask/5.3.4/build/GitVersionTask.targets(10,9): error :    at LibGit2Sharp.ReferenceCollection.UpdateDirectReferenceTarget(Reference directRef, ObjectId targetId, String logMessage) [/home/runner/work/repo/repo/Solution/Project/Project.csproj]
2020-06-09T15:57:16.7295854Z /home/runner/.nuget/packages/gitversiontask/5.3.4/build/GitVersionTask.targets(10,9): error :    at LibGit2Sharp.ReferenceCollection.UpdateTarget(Reference directRef, ObjectId targetId, String logMessage) [/home/runner/work/repo/repo/Solution/Project/Project.csproj]
2020-06-09T15:57:16.7297202Z /home/runner/.nuget/packages/gitversiontask/5.3.4/build/GitVersionTask.targets(10,9): error :    at LibGit2Sharp.ReferenceCollection.UpdateTarget(Reference directRef, ObjectId targetId) [/home/runner/work/repo/repo/Solution/Project/Project.csproj]
2020-06-09T15:57:16.7298976Z /home/runner/.nuget/packages/gitversiontask/5.3.4/build/GitVersionTask.targets(10,9): error :    at GitVersion.Extensions.RepositoryExtensions.EnsureLocalBranchExistsForCurrentBranch(IGitRepository repo, ILog log, Remote remote, String currentBranch) in D:\a\GitVersion\GitVersion\src\GitVersionCore\Extensions\RepositoryExtensions.cs:line 85 [/home/runner/work/repo/repo/Solution/Project/Project.csproj]
2020-06-09T15:57:16.7300356Z /home/runner/.nuget/packages/gitversiontask/5.3.4/build/GitVersionTask.targets(10,9): error :    at GitVersion.GitPreparer.NormalizeGitDirectory(String gitDirectory, Boolean noFetch, String currentBranch, Boolean isDynamicRepository) in D:\a\GitVersion\GitVersion\src\GitVersionCore\Core\GitPreparer.cs:line 227 [/home/runner/work/repo/repo/Solution/Project/Project.csproj]
2020-06-09T15:57:16.7302276Z /home/runner/.nuget/packages/gitversiontask/5.3.4/build/GitVersionTask.targets(10,9): error :    at GitVersion.GitPreparer.NormalizeGitDirectory(String targetBranch, String gitDirectory, Boolean isDynamicRepository) in D:\a\GitVersion\GitVersion\src\GitVersionCore\Core\GitPreparer.cs:line 141 [/home/runner/work/repo/repo/Solution/Project/Project.csproj]
2020-06-09T15:57:16.7304025Z /home/runner/.nuget/packages/gitversiontask/5.3.4/build/GitVersionTask.targets(10,9): error :    at GitVersion.GitPreparer.PrepareInternal(Boolean normalizeGitDirectory, String currentBranch, Boolean shouldCleanUpRemotes) in D:\a\GitVersion\GitVersion\src\GitVersionCore\Core\GitPreparer.cs:line 69 [/home/runner/work/repo/repo/Solution/Project/Project.csproj]
2020-06-09T15:57:16.7306502Z /home/runner/.nuget/packages/gitversiontask/5.3.4/build/GitVersionTask.targets(10,9): error :    at GitVersion.GitPreparer.Prepare() in D:\a\GitVersion\GitVersion\src\GitVersionCore\Core\GitPreparer.cs:line 48 [/home/runner/work/repo/repo/Solution/Project/Project.csproj]
2020-06-09T15:57:16.7308530Z /home/runner/.nuget/packages/gitversiontask/5.3.4/build/GitVersionTask.targets(10,9): error :    at GitVersion.GitVersionTool.CalculateVersionVariables() in D:\a\GitVersion\GitVersion\src\GitVersionCore\Core\GitVersionTool.cs:line 61 [/home/runner/work/repo/repo/Solution/Project/Project.csproj]
2020-06-09T15:57:16.7310586Z /home/runner/.nuget/packages/gitversiontask/5.3.4/build/GitVersionTask.targets(10,9): error :    at GitVersion.MSBuildTask.GitVersionTaskExecutor..ctor(IGitVersionTool gitVersionTool, IOptions`1 options) in D:\a\GitVersion\GitVersion\src\GitVersionTask\GitVersionTaskExecutor.cs:line 19 [/home/runner/work/repo/repo/Solution/Project/Project.csproj]
2020-06-09T15:57:16.7313177Z /home/runner/.nuget/packages/gitversiontask/5.3.4/build/GitVersionTask.targets(10,9): error : --- End of stack trace from previous location where exception was thrown --- [/home/runner/work/repo/repo/Solution/Project/Project.csproj]
2020-06-09T15:57:16.7314524Z /home/runner/.nuget/packages/gitversiontask/5.3.4/build/GitVersionTask.targets(10,9): error :    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context) [/home/runner/work/repo/repo/Solution/Project/Project.csproj]
2020-06-09T15:57:16.7315765Z /home/runner/.nuget/packages/gitversiontask/5.3.4/build/GitVersionTask.targets(10,9): error :    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument) [/home/runner/work/repo/repo/Solution/Project/Project.csproj]
2020-06-09T15:57:16.7317354Z /home/runner/.nuget/packages/gitversiontask/5.3.4/build/GitVersionTask.targets(10,9): error :    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType) [/home/runner/work/repo/repo/Solution/Project/Project.csproj]
2020-06-09T15:57:16.7319043Z /home/runner/.nuget/packages/gitversiontask/5.3.4/build/GitVersionTask.targets(10,9): error :    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite singletonCallSite, RuntimeResolverContext context) [/home/runner/work/repo/repo/Solution/Project/Project.csproj]
2020-06-09T15:57:16.7322829Z /home/runner/.nuget/packages/gitversiontask/5.3.4/build/GitVersionTask.targets(10,9): error :    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument) [/home/runner/work/repo/repo/Solution/Project/Project.csproj]
2020-06-09T15:57:16.7323861Z /home/runner/.nuget/packages/gitversiontask/5.3.4/build/GitVersionTask.targets(10,9): error :    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.Resolve(ServiceCallSite callSite, ServiceProviderEngineScope scope) [/home/runner/work/repo/repo/Solution/Project/Project.csproj]
2020-06-09T15:57:16.7324721Z /home/runner/.nuget/packages/gitversiontask/5.3.4/build/GitVersionTask.targets(10,9): error :    at Microsoft.Extensions.DependencyInjection.ServiceLookup.DynamicServiceProviderEngine.<>c__DisplayClass1_0.<RealizeService>b__0(ServiceProviderEngineScope scope) [/home/runner/work/repo/repo/Solution/Project/Project.csproj]
2020-06-09T15:57:16.7325620Z /home/runner/.nuget/packages/gitversiontask/5.3.4/build/GitVersionTask.targets(10,9): error :    at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.GetService(Type serviceType, ServiceProviderEngineScope serviceProviderEngineScope) [/home/runner/work/repo/repo/Solution/Project/Project.csproj]
2020-06-09T15:57:16.7326786Z /home/runner/.nuget/packages/gitversiontask/5.3.4/build/GitVersionTask.targets(10,9): error :    at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.GetService(Type serviceType) [/home/runner/work/repo/repo/Solution/Project/Project.csproj]
2020-06-09T15:57:16.7327452Z /home/runner/.nuget/packages/gitversiontask/5.3.4/build/GitVersionTask.targets(10,9): error :    at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type serviceType) [/home/runner/work/repo/repo/Solution/Project/Project.csproj]
2020-06-09T15:57:16.7328547Z /home/runner/.nuget/packages/gitversiontask/5.3.4/build/GitVersionTask.targets(10,9): error :    at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetService[T](IServiceProvider provider) [/home/runner/work/repo/repo/Solution/Project/Project.csproj]
2020-06-09T15:57:16.7329362Z /home/runner/.nuget/packages/gitversiontask/5.3.4/build/GitVersionTask.targets(10,9): error :    at GitVersion.MSBuildTask.GitVersionTasks.ExecuteGitVersionTask[T](T task, Action`1 action) in D:\a\GitVersion\GitVersion\src\GitVersionTask\GitVersionTasks.cs:line 27 [/home/runner/work/repo/repo/Solution/Project/Project.csproj]
2020-06-09T15:57:16.7330302Z /home/runner/.nuget/packages/gitversiontask/5.3.4/build/GitVersionTask.targets(10,9): error :  [/home/runner/work/repo/repo/Solution/Project/Project.csproj]

Steps to Reproduce

Excerpts from the triggering GitHub Actions workflow:

name: Build
on: [ push ]

jobs:
  build_netcore:
    name: .NET Core
    runs-on: ubuntu-latest
    env:
      DOTNET_CLI_TELEMETRY_OPTOUT: 1
      DOTNET_NOLOGO: 1
      FRAMEWORK: netcoreapp2.1
      RUNTIME_LINUX: linux-x64
      RUNTIME_WINDOWS: win10-x64
    steps:
      - name: Set up dotnet
        uses: actions/setup-dotnet@v1

      - name: Checkout Solution
        uses: actions/checkout@v2
        with:
          path: Solution
      - name: Fetch full history
        shell: bash
        run: |
          git -C "${GITHUB_REPOSITORY##*/}" fetch --prune --unshallow
      - name: GitVersion
        uses: docker://gittools/gitversion:5.3.5-linux-alpine.3.10-x64-netcoreapp3.1
        with:
          args: Solution /output buildserver

      - name: Publish Project (${{ env.FRAMEWORK }}/${{ env.RUNTIME_WINDOWS }})
        run: dotnet publish -c Release -f $FRAMEWORK -r $RUNTIME_WINDOWS Solution/Project

"Project" references GitVersionTask 5.3.5. The dotnet publish command in the workflow pictured above causes the crash.

Context

I use GitVersion and GitVersionTask as the source of version information for automated builds and deployments. This bug is causing my tagged builds to fail, which means I can't deploy release versions of my software.

Your Environment

  • Version Used: 5.3.5
  • Operating System and version: GitHub Actions
Current runner version: '2.263.0'
Operating System
  Ubuntu
  18.04.4
  LTS
Virtual Environment
  Environment: ubuntu-18.04
  Version: 20200518.1
  Included Software: https://github.com/actions/virtual-environments/blob/ubuntu18/20200518.1/images/linux/Ubuntu1804-README.md
@wjrogers wjrogers added the bug label Jun 9, 2020
@asbjornu
Copy link
Member

asbjornu commented Jun 9, 2020

I think you're missing the volume mapping. Either way, please use our official GitHub Actions instead.

@wjrogers
Copy link
Contributor Author

wjrogers commented Jun 9, 2020

Running GitVersion from the docker container works fine. It's GitVersionTask in the build that crashes. (And even that works fine when the build trigger isn't a tag!) What volume mapping are you referring to?

I had tried using the official actions, but I hit the '(e || "").replace is not a function' bug. I see that's been fixed, so I'll give it another try and report back.

@asbjornu
Copy link
Member

asbjornu commented Jun 9, 2020

It might be that GitVersionTask tries to perform normalization of the Git repository, but doesn't have permission to do so. If so, you may be dealing with #2074 which is still unsolved.

@wjrogers
Copy link
Contributor Author

Tags seem to build fine when I run GitVersion using the .NET Core global tool instead of the Docker image. I think it's safe to say this has something to do with normalizing the repository + inconsistent disk state lingering from the containerized build step. Closing in favor of other open issues about normalizing tags.

      - name: Set up GitVersion
        run: dotnet tool update -g --version 5.3.5 GitVersion.Tool
      - name: Checkout
        uses: actions/checkout@v2
        with:
          fetch-depth: 0 # fetch full history for GitVersion
      - name: GitVersion
        run: dotnet-gitversion /output buildserver

(note actions/checkout has added a fetch-depth input that removes the need for the extra fetch step!)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants