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鈥檒l occasionally send you account related emails.
Already on GitHub? Sign in to your account
ci: migrate Azure Pipelines to GitHub Actions #523
ci: migrate Azure Pipelines to GitHub Actions #523
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Misc comments:
- deployment server - afaik it's the same place. We can verify with Josh but I'm almost positive it is.
- cobertura/codecov/sonarcloud - I don't have a whole lot of preference here. Looking at the output from cobertura just makes me feel bad, which I suppose might not be a bad things. But I don't think it should throw warnings about files that weren't touched in that PR. @oddstr13 might have more thoughts on these, he's worked more on testing than I have.
- release.yaml - I'm not sure what you mean here. Right now when we're doing a release, we update
release.yaml
in a PR and then push a tag to kick off the release. If the file were updated automatically, I'm not sure how that could work. Though there's a good chance this is just me misunderstanding the release drafter bits
.github/workflows/build-publish.yaml
Outdated
- name: Create release Zip | ||
run: zip -rq plugin.video.jellyfin-${{ matrix.py_version }}.zip plugin.video.jellyfin-${{ matrix.py_version }} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is actually something I've been thinking about changing for a while. I may have mentioned in in chat, but I don't remember. In JellyCon I made a build script that combines the zipping with the addon.xml
generation into one. If we're already changing the build system around, it might make sense to port that over here now. I'm open to suggestions about it.
Refs:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I will have a look!
(btw. woudn't #405 be a ref too?)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would, yes. It stalled out because we couldn't agree on the dependencies, and then I ended up writing my own for JellyCon that combined our approaches and #405 never got picked back up afterwards.
Regarding the I hope that is a bit clearer, but feel free to ping me here on Matrix regarding the idea if you still have questions. * Note: I would not setup a comment based merging though (as my example suggests) that was just from me experimenting |
Bot PRs updating release.yaml would be pretty great if that can be worked out. It'd be nice to be able to push a release without needing multiple members online. In that situation, what would trigger the bot to make the PR? |
In theory, anyone with the right permissions can trigger the workflow to create the PR. That PR then would just need to be merged and could trigger whatever is needed to actually trigger a release (i.e. create and push a tag with the right version?) By that all you need is hit the review count and you could release |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just one thing; How about also publishing the artifact to the GitHub release? (Or does this already do that, and I missed how it's done?)
For coverage, the diff is most important in PRs, and codecov calculates this |
That is what I thought and why I hoped we could use that one instead ;) I will finish up the build.py so that it includes zipping the files, see what is to do for Codecov. I will ping one of you on Matrix once done (some when during this week 馃 ) |
Okay I have everything in, however 1 concern that I would like to discuss: The Cause all that one would need to do if you want to release a new is trigger the If you have any questions feel free to comment here or fire them my way on matrix. |
After moving the
I think I prefer to have the build script in the root of the repo in general, so probably revert 326f009 instead of having to rewrite stuff to look in a parent directory. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reviewing again, if I'm following all the actions correctly:
- Create release PR - triggered manually and will update the version/changelog in
release.yaml
and create a PR for it - On PR merge - only applies if a PR has the
release-prep
label, but will automatically push a tag to the repo - Release drafter - Triggered by pushed tags, creates a draft release that we can then turn into a proper release
Correct?
In its current form, yes, besides the release drafter aspect. However, I have thought about the workflow a bit. Based on the fact that my initial testing, especially with the
If you are fine with this proposal then I shall update the respective workflows |
I think a manual run to do a release/publish makes sense. While everything being automagical is nice, needing to click a button to make it more reliable is 100% a trade off I'm willing to make. |
okay moved the
if you have any further questions feel free and I shall answer as soon as I can. |
Kudos, SonarCloud Quality Gate passed! 0 Bugs No Coverage information |
Description
As we discussed in Matrix the other day, here my proposal for a fully migrated CI from Azure Pipelines to GitHub Actions.
There are some requirements and discussions still required before we merge this, but this is a start.
Changes
pip
andgithub-actions
(let me know if the intervals seem alright to you)generate_xml.py
to not rely on sub-path (i.e. second checkout)Requirements
DEPLOY_HOST
- the host address of the deployment serverDEPLOY_USER
- the user for the deployment to the serverDEPLOY_KEY
- the ssh key of the user to auth against the serverNotes
cobertura-action
we could usecodecov.io
like we do in some other repos or just stick to whatSonarCloud
already prints outrelease.yaml
found within the repo (that too includes a changelog), I could add a basic manual workfow that 1. bumps the version number in that yaml and 2. updates the chancgelog based on the release draft created by Release Drafter. This would either auto commit to master or open a release-prep PR just before cutting a release. (Let me know what you thing/prefere 馃槈 )