Closed dennisameling closed 1 year ago
Woooooow! Nice work @dennisameling!
Unfortunately, I am a bit too frazzled today to have a closer look, as I have been struggling with the Git for Windows v2.39.0(2) release. But I hope to get to it tomorrow, otherwise in the New Year (I am planning on leaving the computer turned off for quite a bit over the next two weeks).
This will be super awesome!
But I hope to get to it tomorrow, otherwise in the New Year (I am planning on leaving the computer turned off for quite a bit over the next two weeks).
That makes a ton of sense - thanks once again for all your quick and incredibly accurate reviews and feedback. It's a pleasure working on things together this way. I'm very excited that we're finally getting close to a sustainable solution for arm64 support after 2+ years, while (potentially) also paving the way for clang64
support at some point in the future π
Shall we focus our efforts on the git-extra stuff for now? Looks like that'll unblock quite some other things. You mentioned that the old references will need to be updated in quite some places. I'm thinking to create a PR with many small, easy-to-review commits to update those across the board. It'd be great if we can get this PR merged soon so that I can test with the actual packages from the GfW Pacman repos. WDYT?
You mentioned that the old references will need to be updated in quite some places. I'm thinking to create a PR with many small, easy-to-review commits to update those across the board.
Yes, that would be good. I think the best starting point will be git grep -w git-extra
in build-extra
(ignoring the versions/
hits) and probably also the wiki:
Look at that!
Created by https://github.com/git-for-windows/git-for-windows-automation/actions/runs/3760042983... I'll push the changes I made on top of https://github.com/git-for-windows/git-for-windows-automation/pull/5/commits/6cfc1d0464eac917197d8f41ac4c91ec02097345 (and that I used to run this workflow) in a moment.
Created by https://github.com/git-for-windows/git-for-windows-automation/actions/runs/3760042983...
It looks as if the workflow basically sits on its hands for 7.5 minutes, waiting for Azure. I do not see anything in actions/arm-deploy
that would allow us to "fire and forget" about this. I guess we can wait for the VM to be created, but it looks like a bit of a waste of build minutes to me.
Together with the fact that deallocating the VM takes another ~1ΒΌ minutes, I wonder whether the strategy is worth the effort to always keep one runner pretty much ready to go at all times. We could simply spin up the runner on demand instead, after all, a ~8 minute queue time is not that terrible for jobs that will run only once in a while. But I guess it's nicer to wait only a minute for the VM to spin up and we're almost there...
@dennisameling what are your thoughts on this matter?
I guess we can wait for the VM to be created, but it looks like a bit of a waste of build minutes to me.
I agree it's a waste of build minutes, but we could leave it as-is for now and create an issue in https://github.com/Azure/arm-deploy/ for them to add a "fire and forget" feature. WDYT?
We could simply spin up the runner on demand instead, after all, a ~8 minute queue time is not that terrible for jobs that will run only once in a while
We could certainly start with that. Most builds/pipelines take 20-30+ mins anyway, so an additional 8 mins should be okay for now. We could then gradually improve speed/performance over time.
Overall, I don't really have a strong preference. Whatever works best for you in terms of speed/pricing.
we could leave it as-is for now and create an issue in https://github.com/Azure/arm-deploy/ for them to add a "fire and forget" feature. WDYT?
Let's leave it as-is for now and if it becomes a problem, think about using Azure CLI directly (no need to go through the arm-deploy
Action).
We could simply spin up the runner on demand instead, after all, a ~8 minute queue time is not that terrible for jobs that will run only once in a while
We could certainly start with that. Most builds/pipelines take 20-30+ mins anyway, so an additional 8 mins should be okay for now. We could then gradually improve speed/performance over time.
Overall, I don't really have a strong preference. Whatever works best for you in terms of speed/pricing.
Let's continue with the pre-spun-up strategy.
Even if the build failed that used the self-hosted runner, the workflow run that created that self-hosted runner worked, so I merged it.
This is a CI pipeline to create one or multiple Azure arm64 VMs with GfW and the GitHub Actions runner preinstalled and provisioned. The VMs are deallocated immediately after creation so they are prepared for later use.
Here's an example run: https://github.com/dennisameling/azure-arm64-gh-actions-runner/actions/runs/3740740959/jobs/6349467898
The runner is then added to the repo correctly π it's offline because we deallocate the VM immediately after setup in the CI pipeline.
After running a job on the runner, it's automatically removed thanks to the
--ephemeral
flag: