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

After successful build, license is not returned anymore #89

Closed
ManuelRauber opened this issue Oct 28, 2023 · 10 comments
Closed

After successful build, license is not returned anymore #89

ManuelRauber opened this issue Oct 28, 2023 · 10 comments

Comments

@ManuelRauber
Copy link

Hi,

I noticed that my build starts to fail.

After some investigation it seems that the license is not returned anymore.

This is a build from August 30th:

image

And here is a recent build from October 28th:

image

I'm running on the TeamCity hosted agents and according to git (where I store all [teamcity settings[(https://github.com/BoundfoxStudios/fairy-tale-defender/tree/develop/.teamcity)), I did not do any change related to the Unity License things.

@lesley29
Copy link
Contributor

Hey @ManuelRauber

It seems that you have an older version (1.0.2) of the plugin installed on your TeamCity Cloud instance for some reason. This older version experienced intermittent issues with not returning a license after a build. We will update it shortly and I will let you know when that's done.

P.S.: You will probably need to return those acquired licenses manually via Unity site after that.

@ManuelRauber
Copy link
Author

Hi @lesley29

thanks for your information! I hope you'll update soon, because it prevents building :)

@lesley29
Copy link
Contributor

lesley29 commented Nov 1, 2023

@ManuelRauber We've just updated the plugin version for you. Please check how the builds are going now :)

@ManuelRauber
Copy link
Author

@lesley29 Looks good so far! i can at least see that the license has been returned and the next platform is building. Finger's crossed!

By any chance: Do you know when JetBrains will update which Unity Version is available on the Cloud Agents, also that Windows/Linux/Mac have the same versions available?
Windows does not have latest LTS and Mac is "far behind" :)

@lesley29
Copy link
Contributor

lesley29 commented Nov 2, 2023

Glad to hear that!

We're planning to update all the instances to the latest LTS approximately next week or so. Additionally, I'll look into why versions vary depending on the platform; they should be aligned. Usually, we try to catch up with the latest LTS ASAP. However, apparently, that hasn't been the case for some reason lately :)

If you'd like, you can share your vision/opinion on how you would like to see this process. Will the approach with an ASAP upgrade to the latest LTS work for you? Do you have any concerns?

@ManuelRauber
Copy link
Author

Glad to hear that!

We're planning to update all the instances to the latest LTS approximately next week or so. Additionally, I'll look into why versions vary depending on the platform; they should be aligned. Usually, we try to catch up with the latest LTS ASAP. However, apparently, that hasn't been the case for some reason lately :)

If you'd like, you can share your vision/opinion on how you would like to see this process. Will the approach with an ASAP upgrade to the latest LTS work for you? Do you have any concerns?

Hi @lesley29

Thanks for your information, sounds good regarding the update to LTS :-)

Regarding a vision for how it could work, it would be great, if it would work like Unity Cloud Build: You can select any Unity Version available to use for the build, possibly as soon as there is the download for it.

For the hosted runners that should be easy, because the one hosting the runner is responsible for installing that Unity version.

For JetBrains hosted cloud runners, I'm not sure how it could work. Installing the correct Unity Version per build will cost a lot of build minutes. Having a runner per Unity version also does not seem feasible, will require a lot of storage, possibly maintenance on your side.

Also in the long run, I don't know how many customers are using the JetBrains hosted agents for building Unity project, a lot of game studios do not switch their Unity version anymore after a certain point in development.
So, if you start with a certain version on a JetBrains agent, it would be nice, that this version will be available for years.

If JetBrains updates to LTS asap, that would be a biweekly update, according to the Download Archive. In my case, since I only built a small hobby project where JetBrains sponsors the hosted agents (❤️), I can upgrade the Unity version easily.

But for the bigger picture, it seems to be a challenge on its own (if you don't want to spend build minutes for installing the correct version).

@lesley29
Copy link
Contributor

lesley29 commented Nov 8, 2023

Hey @ManuelRauber,
Thanks for sharing this!

We've checked out Unity cloud build services, looks interesting. Unfortunately, with our current setup it seems complicated to provide anything close to it. Given that our agents have many different kinds of other software preinstalled. Probably, we will reconsider this approach in the future if see the urgent need in this or customers' pain :)

After some discussion we decided to stick to the following policy with Unity on JetBrains hosted agents for now:

  1. Provide 3 latest major LTS versions of Unity (e.g. 2022.X.Y, 2021.X.Y, 2020.X.Y) on every OS with the appropriate SDK pre-installed. (We actually do that right now, but they aren't aligned and Unity is missing on Linux agents, but it will be fixed in the near future)
  2. Keep up with the Unity minor/patch version releases for those LTS. Though, not on a bi-weekly basis, maybe on a monthly or so.

It's kind of a compromise, which we believe should cover the majority of use cases. You can keep track of the progress here TCI-452, feel free to comment.

a lot of game studios do not switch their Unity version anymore after a certain point in development

That's interesting. Could you elaborate please? Is it getting too difficult to update?

I'll close the issue in the meantime, if you don't mind, as the original problem has been resolved.

@lesley29 lesley29 closed this as completed Nov 8, 2023
@ManuelRauber
Copy link
Author

Hi @lesley29,

thanks for your insights!

I have to answer your question here, because your linked issue, TCI-452 is not visible to the public. I get a 404 when I visit your link. :)

Yes, you're right, that UCB is kind of different because they have any version available, no idea how they manage it. :-)

At first sight, your policy looks fine to me.
At second sight, I have some concerns.

Let me give you a real-life example that I currently have:

I've shipped a little mobile game on Unity 2021.3.5f1. After shipping, I didn't plan to develop it further. Meanwhile, someone found a little bug and reported that to me. Fixing the bug is easy. If I used TeamCity Cloud to build the game, I would now be required not only to fix the bug but also to upgrade the game to the latest 2021, which is 2021.3.32f1. This makes me need to verify if the whole game works overall as expected because I cannot know if I worked around a Unity bug that was resolved from my initial version to the latest version. That leads to much more work to do for fixing a little bug.
Also, the game uses some third-party things for managing native mobile things. Sometimes they also work around a Unity bug and the engine update could lead to the fact, that I need to update the third-party asset as well.

You see, upgrading the engine version can easily lead to an unfortunate chain of things you need to consider.
And I only have a small game, for bigger games it could be another story.

That's interesting. Could you elaborate please? Is it getting too difficult to update?

A part of the answer is in the text above. Let's take some games that shipped some time ago and still get regular updates:

As you can see, published games are super slow in updating their engine version. If they would use TeamCity, you will force them to upgrade their version, and I guess, that will not work.

For a game that is in early-to-mid development, I could guess, that upgrading the engine version is easier possible than a game that is near to release/QA phase and/or launched.

I'm not sure if the following would be possible - I'm not a "cloud build engineer", so I have no idea how such things like TeamCity Cloud works behind the scenes to manage all the build machines:

  1. JetBrains has a mirror of all Unity versions.
  2. In the TeamCity Plugin you can select any version that is mirrored by JetBrains.
  3. Upon Agent start, the TeamCity plugin will install the selected Unity version.
  • If possible, free of charge for the user?
  • Otherwise you would need to manage an enormous amount of pre-stored images.

That way, the user can use any selectable version without the need to upgrade.
Sure, it won't be as easy as those three bullet points, because at some point some versions may not work on latest OS versions anymore etc. So I guess the real solution will be more complex. 🙈

If you take a look at GameCI they have tons of images for each unity version. Since TeamCity can run Docker things, maybe it's something you can consider as well.

Also please keep in mind, that I do not represent any big game development studio. :-) My daily work was development consultant from small to enterprise business companies, nowadays product development, and solo game dev on the side. I've used JetBrains tools for years now, so I'm highly interested in improving them.

JetBrains did outstanding work with Unity and Rider, providing the best development solution. I hope you can figure out a plan so TeamCity Cloud can follow. <3

@ManuelRauber
Copy link
Author

@lesley29 Sorry for the ping, just want to make sure, you've seen my post above. :)

@lesley29
Copy link
Contributor

lesley29 commented Dec 5, 2023

Hey @ManuelRauber!

Oh, I'm sorry, I lost the issue after closing it. Thanks for pinging.
And yeah, my bad YT issues of that type aren't meant to be public, as it turned out :)

A huge thank you for this clarification! It all makes perfect sense.

The approach you described is definitely the one we should eventually come to. As it provides the most flexibility. I'm not sure I can share how things are set up behind the scenes, but I can only say that this would require some changes from our side. I'll discuss it once again with the team (will keep you posted).

Yeah, we're aware of GameCI Docker images; we've actually used them in some of our demos. I would say, for the moment, it's kinda "okish" workaround if you need a specific version, the time of pulling the image is still billable though. Except that there is also an option to set up a custom cloud profile & image, but that's far from being user-friendly as well.

And again, thanks for your input on this! I mean, that was really precious. We understand that the current solution might not be usable for more or less serious projects and are currently looking at ways to improve the situation.

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

2 participants