Search code examples
pythonwindowsgoogle-cloud-platformgoogle-app-enginegcloud

Cannot gcloud builds submit due to a tempfile file.tgz permissions error on Windows


I have an issue running the following command on Windows:

gcloud builds submit --timeout=3600s --region=europe-west1 --tag europe-west1-docker.pkg.dev/project/project-appengine/project-image:latest

It was working fine, but a couple of days ago my deployment script stopped working. Here is what the command returns:

Creating temporary tarball archive of 3571 file(s) totalling 25.3 MiB before compression.
ERROR: gcloud crashed (PermissionError): [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\Users\\user\\AppData\\Local\\Temp\\tmp5i8xwo38\\file.tgz'

If you would like to report this issue, please run the following command:
  gcloud feedback

To check gcloud for common problems, please run the following command:
  gcloud info --run-diagnostics

I have the latest version of Google Cloud CLI on my Windows 10.

Something is off with file permissions? The archive file is in the directory and is fine. Seems like the SDK cannot access is. Maybe related to the Python version used?

I tried Process Explorer, but found no process locking this file.

Trace: Traceback (most recent call last): File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin..\lib\googlecloudsdk\api_lib\cloudbuild\snapshot.py", line 102, in CopyTarballToGCS tf = self._MakeTarball(archive_path) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin..\lib\googlecloudsdk\api_lib\cloudbuild\snapshot.py", line 77, in _MakeTarball tf.add(path, filter=_ResetOwnership) File "C:\Users\user\AppData\Local\Programs\Python\Python311\Lib\tarfile.py", line 2002, in add self.addfile(tarinfo, f) File "C:\Users\user\AppData\Local\Programs\Python\Python311\Lib\tarfile.py", line 2030, in addfile copyfileobj(fileobj, self.fileobj, tarinfo.size, bufsize=bufsize) File "C:\Users\user\AppData\Local\Programs\Python\Python311\Lib\tarfile.py", line 254, in copyfileobj buf = src.read(remainder) ^^^^^^^^^^^^^^^^^^^ PermissionError: [Errno 13] Permission denied

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin..\lib\googlecloudsdk\command_lib\crash_handling.py", line 199, in Wrapper target_function(*args, **kwargs) File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin..\lib\googlecloudsdk\gcloud_main.py", line 193, in main gcloud_cli.Execute() File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin..\lib\googlecloudsdk\calliope\cli.py", line 1024, in Execute self._HandleAllErrors(exc, command_path_string, specified_arg_names) File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin..\lib\googlecloudsdk\calliope\cli.py", line 1061, in _HandleAllErrors exceptions.HandleError(exc, command_path_string, self._known_error_handler) File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin..\lib\googlecloudsdk\calliope\exceptions.py", line 557, in HandleError core_exceptions.reraise(exc) File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin..\lib\googlecloudsdk\core\exceptions.py", line 146, in reraise six.reraise(type(exc_value), exc_value, tb) File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin..\lib\third_party\six_init.py", line 719, in reraise raise value File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin..\lib\googlecloudsdk\calliope\cli.py", line 998, in Execute resources = calliope_command.Run(cli=self, args=args) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin..\lib\googlecloudsdk\calliope\backend.py", line 815, in Run resources = command_instance.Run(args) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin..\lib\surface\builds\submit.py", line 234, in Run build_config = submit_util.SetSource( ^^^^^^^^^^^^^^^^^^^^^^ File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin..\lib\googlecloudsdk\command_lib\builds\submit_util.py", line 428, in SetSource staged_source_obj = staging_bucket_util.Upload( ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin..\lib\googlecloudsdk\command_lib\builds\staging_bucket_util.py", line 109, in Upload return source_snapshot.CopyTarballToGCS( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin..\lib\googlecloudsdk\api_lib\cloudbuild\snapshot.py", line 100, in CopyTarballToGCS with files.TemporaryDirectory() as tmp: File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin..\lib\googlecloudsdk\core\util\files.py", line 599, in exit exceptions.RaiseWithContext( File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin..\lib\googlecloudsdk\core\exceptions.py", line 180, in RaiseWithContext raise curr_exc File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin..\lib\googlecloudsdk\core\util\files.py", line 597, in exit self.Close() File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin..\lib\googlecloudsdk\core\util\files.py", line 608, in Close RmTree(self.path) File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin..\lib\googlecloudsdk\core\util\files.py", line 262, in RmTree shutil.rmtree(path, onerror=_HandleRemoveError) File "C:\Users\user\AppData\Local\Programs\Python\Python311\Lib\shutil.py", line 759, in rmtree return _rmtree_unsafe(path, onerror) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\user\AppData\Local\Programs\Python\Python311\Lib\shutil.py", line 622, in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info()) File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin..\lib\googlecloudsdk\core\util\files.py", line 244, in HandleRemoveError exceptions.reraise(exc_info[1], tb=exc_info[2]) File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin..\lib\googlecloudsdk\core\exceptions.py", line 146, in reraise six.reraise(type(exc_value), exc_value, tb) File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin..\lib\third_party\six_init.py", line 719, in reraise raise value File "C:\Users\user\AppData\Local\Programs\Python\Python311\Lib\shutil.py", line 620, in _rmtree_unsafe os.unlink(fullname) PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\Users\user\AppData\Local\Temp\tmp2j_tooam\file.tgz'

How do I make this command work? Cannot deploy to Google App Engine 😱

UPD: Solved by manually tgzipping the source files and submitting the build like:

gcloud builds submit file.tgz ...


Solution

  • @PiotrMarkielau, As per recent edit in your post, I can see you have found a work around that solved your issue.Answering it as community wiki for better community visibility.Feel free edit if i miss anything. Work around is

    By manually tgzipping the source files and submitting the build like:

     gcloud builds submit file.tgz --timeout=3600s --region=europe-west1--tag europe-west1-docker.pkg.dev/project/project-appengine/project-image:latest
    

    Additionally I have found an issue tracker with 1 Upvote. According to the description over there it looks like an issue at cloud build end. You may consider adding your concern as well and see whether you get any better solution than the workaround you have found.