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

Concurrent build support #21

Open
StarGardenGames opened this issue Apr 15, 2020 · 2 comments
Open

Concurrent build support #21

StarGardenGames opened this issue Apr 15, 2020 · 2 comments

Comments

@StarGardenGames
Copy link

Hi there

First off, I wanted to say that I LOVE this tool. It was the last missing piece to start adding cicd to my games and it's been super easy to use

We're planning to release our game to multiple platforms. I have every commit triggering the build server, and the server is building all platforms in parallel (for now I'm just testing for Windows + Linux, but there will be more later)

I get the following error when doing this

System.IO.IOException: The process cannot access the file 'C:\Users\Administrator\AppData\Local\Temp\2\gamemaker-rubber\107df35d-7b57-421b-a352-a1911c2eb0a4\GMCache\PlatformOptions.json' because it is being used by another process.

   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)

   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)

   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)

   at System.IO.StreamWriter.CreateFile(String path, Boolean append, Boolean checkHost)

   at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize, Boolean checkHost)

   at System.IO.File.InternalWriteAllText(String path, String contents, Encoding encoding, Boolean checkHost)

   at GMAssetCompiler.GMOptions.WriteToJson(String pathname, GMAssets _assets)

   at GMAssetCompiler.Program.�(String[] �)

So it looks like rubber only supports 1 build at a time? I was wondering how hard it would be to fix this? If you point me in the right direction I could also try making a pull request

@paperdave
Copy link
Contributor

paperdave commented Feb 20, 2021

sorry for the near year delay. i forgot about this project, and didnt have write permissions until today.

it seems gamemaker itself doesnt let you do concurrent builds on the same temp directory, which makes sense.

the folder rubber uses is based on the GUID. it currently is only hooked to the GUID, but there could be a custom option for adding a directory override. see rubber.ts:249

i may try to add this in, but on your end (if you still have this issue, im a bit late), you would still have to set a path per build you're going to. if we want to detect the directory being used and automatically set others, that may be a tough one.

@StarGardenGames
Copy link
Author

Sure, I may look into it, thanks for the response

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

No branches or pull requests

1 participant