-
-
Notifications
You must be signed in to change notification settings - Fork 39
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
Create workflow for nightly builds #36
base: main
Are you sure you want to change the base?
Conversation
This uses a verry similar workflow to the release one, but it gets triggered on each push or new pull request to create nightly builds of the engine. All builds get built, packaged and uploaded to GH Artephacts for use with a service such as nightly.link or individual downloads.
it's actually the only reason I build from source, to get the latest stuff faster. |
Seems like this isn't quite as ready as I thought, I can't get the final package to get uploaded successfully. If someone could take a look at this and fix it that'd be great. |
Hi, |
foss projects don't have such limits because they can do it as much as they want I had read about it quite a lot on github's stuff. |
More specifically, I believe this is covered here:
|
and you always can auto remove old stuff, right? |
well, if all these limits only apply to private repositories, then indeed that is at least one problem solved. Now as for the other questions, say I modify just the packaging step of the workflow. Maybe I want to package the documentation in another format, include a changelog, anything. How do I do that without running the entire workflow instead of just the last job which I think would not have access to the artifacts from previous workflow builds? For example if I'm trying to update the final build package and it fails because I forgot an = character, now I must wait an extra 30 minutes just to test that one final packaging job again where I could easily find another mistake, where I'll then need to wait still another 30 minutes to see if I've fixed that one. Github's native workflow reruns feature is not an option because you to my knowledge cannot run one failed job of a workflow given a new commit. Maybe one can create a secondary workflow with a manual run trigger that accepts a run-id input that can be passed to download artifact? |
I just pushed a potential fix to the uploading stage, it should work fine now. Once everything builds we'll find out, I'll update this pull request if everything passes. |
Hello.
I'm not entirely sure I have understood the question. But generally, what you could do to isolate documentation, using it as an example in this case, is either building documentation in its own workflow, or additionally put every single step behind a flag. For example, you can skip a step if certain criteria are not met, e.g. the commit message does not contain or contains a particular word, by doing this you could skip or run certain jobs based on what you chose as a criteria. |
What is the status of this @Mudb0y @samtupy To grab the links automatically (or have statuc links to the latest nightly version), you could do something similar to what I do in my projects, which is to generate a "latest" release/tag and attach the artifacts to that. Look here for a reference (under the publisher-latest job): https://github.com/JessicaTegner/pypandoc/blob/master/.github/workflows/ci.yaml |
Hi, So basically we need to redo this such that the nightly build workflow calls the release workflow with a parameter. The way this pull request is currently set up would require modification to the nightly build workflow as well as the release workflow every time something about NVGT's build changes, when in reality the release workflow does everything required for nightly builds sans simply uploading them somewhere different with modified filenames. So we need to modify this workflow to call the release workflow with some sort of nightly argument that causes artifacts to be uploaded somewhere other than the official releases page, instead of having double the maintenance cost by trying to maintain multiple workflows that do 95% the same things. Practically this means copying the artifact usage from the workflow in this pr to release.yml as it's best to use artifacts in the build>packaging stages so that people can test most of the workflow on repo forks, and then adding an argument to release.yml that causes it to run a nightly_package step instead of the final_package step that is run for an official release. In short, we don't need 2 workflows for this, as it causes a very unnecessary amount of repeated instructions and increased maintenance. I'm planning to solve this once we start using the github releases page in general. At that time, the release.yml workflow will be updated to use artifacts to upload to the releases page anyway, so I can add that extra argument while I'm at it. Aside from this, the last comment from the author of this pr was that he'll update here if everything passes, which never happened, so I'm unsure as to the status on that front, which is fine since as I said I think we'll mostly use release.yml for this, and if we need a nightly.yml file, all it will do is call release.yml with a certain argument or environment variable or something set to make the release workflow function a bit differently. |
good to hear @samtupy as you'll probably figure out when you look into it (or if you look at the reference I linked above), basically what I do for release versus nightly builds is only have them publish on main (but have tests and building/generation done on forks and other branches), and if a tag is on the commit (like vx.y.z) do a release build, if not do a nightly build. |
This uses a verry similar workflow to the release one, but it gets triggered on each push or new pull request to create nightly builds of the engine. All builds get built, packaged and uploaded to GH Artephacts for use with a service such as nightly.link or individual downloads.