I have a number of personal projects with code scattered about, where if I want to include code from one project into another I generally either need to copy code or find more sophisticated ways to share.
After going through interviewing coop student candidates and seeing their projects and GitHub repositories (when provided) I realized that documenting the process and demonstrating the value you can get out of it would be substantial.
The motivation for me is to take my projects to a higher level of rigour and improve reuse. Furthermore, I want to automate builds, validation by content tests, notifications, etc.
I do use GitHub for storing my projects which are primarily in C# but I want to amp up my setup to another level. The feature I want are:
- Get my projects from GitHub
- Build them
- Run tests on them
- Post main branch builds to a NuGet repository
- Post main branch symbols to a symbol server
- Generate notifications to Slack (I have my own setup for the family) about build status.
I already have a machine I use locally for service-related work. Switching to Linux would be non-trivial due to some of the services being run.
So the following setup will be using Windows, but I don’t think it will be entirely dissimilar to Linux.
The software I’m looking at using for all of these are:
- Jenkins – this will run the CI/CD process. I already have familiarity with this from work: https://www.jenkins.io/
- Jenkins requires Java Development Kit 1.8 or 11: https://www.oracle.com/java/technologies/downloads/#java11
- Nexus Repository OSS – This will host NuGet packages: https://www.sonatype.com/products/repository-oss
- Symbolicator – I haven’t used this yet, so this may change when I get to it, but it does support multi-platform symbols (according to the documentation): https://getsentry.github.io/symbolicator/
Anything else that comes up during setup will be documented along the way.
Pingback: CI/CD Visual Studio Project Layout | Brent Scriver