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

Replace Travis with Github Actions & Plan new CI/CD pipelines #108

Open
2 of 4 tasks
mindsolve opened this issue Jul 10, 2022 · 3 comments
Open
2 of 4 tasks

Replace Travis with Github Actions & Plan new CI/CD pipelines #108

mindsolve opened this issue Jul 10, 2022 · 3 comments
Assignees
Labels
bug Something isn't working discussion Discussion related enhancement Enhance an existing feature lang: ALL Affects all versions of minestat new feature Request something new

Comments

@mindsolve
Copy link
Collaborator

mindsolve commented Jul 10, 2022

Situation

Due to this situation, and personal experience showing the maturity and widespread support for GH Actions, I would suggest moving from Travis CI to GH Actions.

While "simply" moving might be an option, this would also be the ideal point to retink our requirements and whishes for our CI/CD pipelines.

Based on analyis of the existing CI configuration, I have determined the current status to be as follows:

Current pipelines:

  • Travis CI:
    • Building of the C#, Go, Java and Ruby versions in all PRs
    • Successful build as requirement for PR merge
  • AppVeyor:
    • Building of the C# version in PRs
    • Successful build as requirement for PR merge
  • CodeFactor:
    • Static code analysis for many languages
    • Successful check as requirement for PR merge

Proposal:

  • CodeFactor (same as before)
  • GH Actions:
    • Pipeline for Commit/PR build
      • Successful build as requirement for PR merge
      • Should support all language "flavours" of minestat
    • Pipeline for End-to-End tests (long-term goal)
      • Check functionality of flavour against list of server versions
      • Successful checks as requirement for PR merge
    • Release pipeline (long-term, to be discussed)
      • Pipeline for automatically packaging a new release of a specific flavour and deployment to repositories (e.g. npm, pypi, nuget)
      • Triggered by specific commit message by authorized user

@ldilley: Did I correctly interpret the current configuration? What do you think about the proposal, and what would you want the ideal CI/CD pipeline to do?

Progress

  • Successful build required for PR merge
  • Covered for languages supported by CodeQL
  • Perform protocol tests against a server which must pass for PR merge
  • Handle the publishing of npm, NuGet, PyPI, etc. packages (partially validated)
@mindsolve mindsolve added bug Something isn't working new feature Request something new discussion Discussion related labels Jul 10, 2022
@ldilley ldilley added enhancement Enhance an existing feature lang: ALL Affects all versions of minestat labels Jul 10, 2022
@ldilley
Copy link
Member

ldilley commented Jul 10, 2022

This looks like a solid plan and does indeed capture the current configuration. I am most intrigued by the automated testing and packaging.

@ldilley
Copy link
Member

ldilley commented Aug 14, 2022

Updates:

  • Successful build as requirement for PR merge
    I've added the CodeQL analyses as status checks required for PR merges.

  • Should support all language "flavours" of minestat
    CodeQL supports C#, Go, Java, JavaScript, Python, and Ruby. Perl, PHP, and PowerShell are not currently covered.

  • Check functionality of flavour against list of server versions
    If this functionality is still desired, we'll have to write our own tests and determine a way to reliably query servers running each SLP version along with Bedrock/PE.

  • Pipeline for automatically packaging a new release of a specific flavour and deployment to repositories (e.g. npm, pypi, nuget)
    We have a decent start on this item thanks to @Ajoro, but there are likely some kinks to work out as we've observed with the NuGet publication.

@mindsolve
Copy link
Collaborator Author

We made very good progress here, thanks Ajoro!

Regarding "Check functionality of flavor against list of server versions":
This is already in development, though it's still going to take a while, as I am not as far with the project as I would like. I am going to report back when I've made significant progress 😅.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working discussion Discussion related enhancement Enhance an existing feature lang: ALL Affects all versions of minestat new feature Request something new
Projects
None yet
Development

No branches or pull requests

2 participants