- IDE: Visual Studio Community 2013 (free for open-source projects)
winsw_key.snk
should be available in the project's root in order to build the executable- You can generate the certificate in "Project Settings/Signing"
- The certificate is in
.gitignore
list. Please do not add it to the repository
WinSW includes a set of tests powered by the NUnit test framework. In order to run tests you can install NUnit Console on the build machine.
Once you build the solution, you will be able to find the test DLL with dependencies in the src/Test/winswTests/bin
directory.
In NUnit Console you can just import projects from this directory and then run tests.
Project has a continuous integration flow being hosted by AppVeyor (project page). This CI instance automates building and testing of the Release configuration of WinSW. See the appveyor.yml file for more details.
Releases are being performed to 3 locations: GitHub, NuGet, and Jenkins Maven Repository. For all these releases we use binaries being created by the special AppVeyor Job (winsw-release).
Here are the release steps:
- Integrate all pull requests you want to release to the master branch.
- Update CHANGELOG and push changes to the master.
- Wait till the AppVeyor build finishes for the last commit.
- Go to the winsw-release job page.
- If you are doing a release with a new feature, bump the second digit in the Version setting (e.g. to
2.N.${build}
) and change the next build number to0
. In such case the version in assembly info will be2.N.0
- Run the winsw-release build. Once it completes, ensure the version is correct.
- Click on the Deploy button for the build. Then deploy changes to GitHub Releases and NuGet using the available publishers.
- Go to GitHub Releases, find the published Release, click on Edit release and then uncheck the This is a pre-release checkbox to make the release public.
Maven repository is no longer the main source of releases, but WinSW can be deployed there on-demand. Some projects (e.g. Jenkins) still depend on WinSW from the Maven repository.
- Make sure you have passed the Release steps above
- Modify the
winsw.version
property to the the release version (WINSW_VERSION
) - Modify version field to
${WINSW_VERSION}-SNAPSHOT
- Run
mvn release:prepare release:perform