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

Create CI/CD Pipeline #124

Open
6 of 11 tasks
milkshakeuk opened this issue Oct 30, 2020 · 10 comments
Open
6 of 11 tasks

Create CI/CD Pipeline #124

milkshakeuk opened this issue Oct 30, 2020 · 10 comments
Labels
CI/CD Continuous integration, continuous delivery, and continuous deployment help wanted

Comments

@milkshakeuk
Copy link
Member

milkshakeuk commented Oct 30, 2020

Below is a sample of the things we would like to automate

  • Build the base projects
  • Run the source code generator
  • Run the linter? (maybe use StyleCopAnalyzers along with .editorconfig to define style rules?
  • Build the complete source code including generated code
  • Execute the unit tests (for each target framework)
  • Run Coverage tests?
  • Publish results as comment to PR
  • Generate the NuGet package (auto increment the build NuGet package version (maybe based on branch name?)
  • Create a release (in GitHub - only when we choose to do so since there might be come ceremony as part of this i.e. release notes etc not sure yet.)
  • Upload to nuget.org (only when we choose to publish)
  • Auto publish preview NuGet packages? on successful merge?

If we can use GitHub Actions then great since it will be nicely self-contained within GitHub otherwise other free pipeline tools could work also as long as they integrate with GitHub PR for example Azure DevOps Pipelines?

@milkshakeuk
Copy link
Member Author

@jakubsuchybio I have created the GitHub Project board and created this ticket.
Happy to discuss if you need anything?

@milkshakeuk milkshakeuk modified the milestone: v3.0.0.0 Oct 30, 2020
@jakubsuchybio
Copy link
Contributor

jakubsuchybio commented Oct 30, 2020

Nice! Well, I already built few pipelines in Azure DevOps without .yaml (the old clicky one style). I think it would be much better to leverage GitHub Actions, so we don't need to manage two sets of users in Github and in Azure DevOps. I haven't done anything in Github Actions, but I'm eager to try it for a long time.

As I'm looking at the repo. There is a lot of going on. I think it would greatly helped me, if I knew the sequence of the existing tooling from getting from the clean repo to built nuget package. With that I could start automating it.

But first I would suggest restructuring the repo: (we can ofc create separate issues for that)

  1. Structure of the repo like this:
root
    build - for scripts for building if any will exist
    docs - maybe for generated docs or for some guidelines, etc
    src - source code
    tests - test projects
    .gitignore
    .editorconfig
    changelog.md
    main.sln
    readme.md
  1. Move from .nuspec to having nuget building params inside .csproj (and with that leverage building the nuget through dotnet cli)

Also I don't quite understand why there are 2 .sln files, can we do with only one which has all the projects included?

@milkshakeuk
Copy link
Member Author

milkshakeuk commented Oct 30, 2020

@jakubsuchybio I agree I did something very similar for NHapiTools see here. I added support for netstandard, restructured the project (almost identical to how u describe bit had a tools folder instead of a a build folder) and added some very basic GitHub actions.

If u want to create an issue for project structure please do so and I'll add it to the Kanban board (GitHub project).

Not sure about the nuspec suggestion but I'm happy to be convinced 😄.

I think it has 2 solutions because it needs to be able to build the code is which generates the code if that makes sense. I do want to move the source generating code out of NHapi.base though at some point, even the original java Hapi has the source generator outside of the main library.

@milkshakeuk
Copy link
Member Author

milkshakeuk commented Nov 2, 2020

@jakubsuchybio I have created an issue for project re-structure #126 this should probably wait until the netstandard PR has been merged.

@milkshakeuk
Copy link
Member Author

@jakubsuchybio I have created a pull request for the project restructure #129

@jakubsuchybio
Copy link
Contributor

That is great! Thanks for the info and sorry for what looks like ghosting from me. Lately my time for OSS and other stuff is really limited.

@milkshakeuk
Copy link
Member Author

@jakubsuchybio ok #129 has been merged, the project has been restructured. 👍

@milkshakeuk milkshakeuk added the CI/CD Continuous integration, continuous delivery, and continuous deployment label Dec 2, 2020
@AMCN41R
Copy link
Collaborator

AMCN41R commented Jan 30, 2021

@milkshakeuk do you want to/want me to spin off another issue to add StyleCopAnalysers to the main projects?

Happy to pick that up and start fixing the warnings - could use that ticket to discuss/agree basic styling rules? I'm happy with the StyleCop defaults, but don't have any strong opinions.

@milkshakeuk
Copy link
Member Author

@AMCN41R sounds good to me!

@jakubsuchybio
Copy link
Contributor

If anybody else wants this, I'll gladly give it up :) because I'm in process of moving to another flat and have basically 0 time for OSS :(

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CI/CD Continuous integration, continuous delivery, and continuous deployment help wanted
Projects
None yet
Development

No branches or pull requests

3 participants