2018-11-29 16:00:00 +00:00
# WinSW Developer Information
2017-05-05 13:35:50 +00:00
### Build Environment
2018-12-06 16:00:00 +00:00
* *winsw_key.snk* should be available in the project's root in order to build the executable
* You can generate the certificate by running *generate-key.ps1*
* The certificate is in *.gitignore* list. Please do not add it to the repository
2018-11-29 16:00:00 +00:00
2017-05-05 13:35:50 +00:00
### Continuous Integration
2020-03-24 17:04:54 +00:00
Project has a continuous integration flow being hosted by AppVeyor ([project page](https://ci.appveyor.com/project/winsw/winsw)).
2017-05-05 13:35:50 +00:00
This CI instance automates building and testing of the Release configuration of WinSW.
See [the appveyor.yml file ](./appveyor.yml ) for more details.
2020-03-24 17:04:54 +00:00
Versions generated by the CI instances are **NOT** aligned with the release version, they use a rolling version ID instead.
2017-05-05 13:35:50 +00:00
### Releasing to GitHub and NuGet
Releases are being performed to 3 locations: GitHub, NuGet, and Jenkins Maven Repository.
2020-04-06 08:26:42 +00:00
For all these releases we use binaries being created by the special AppVeyor Job ([winsw-release]https://ci.appveyor.com/project/winsw/winsw-release/)).
2017-05-05 13:35:50 +00:00
Here are the release steps:
1. Integrate all pull requests you want to release to the master branch.
2018-11-29 16:00:00 +00:00
1. Update [CHANGELOG ](./CHANGELOG.md ) and push changes to the master.
1. Wait till the [AppVeyor build ](https://ci.appveyor.com/project/winsw/winsw ) finishes for the last commit.
2020-04-06 08:26:42 +00:00
1. Go to the [winsw-release job page ](https://ci.appveyor.com/project/winsw/winsw-release/ ).
2018-11-29 16:00:00 +00:00
1. 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 to `0` . In such case the version in assembly info will be `2.N.0`
2020-04-06 08:26:42 +00:00
1. Run the [winsw-release ](https://ci.appveyor.com/project/winsw/winsw-release/ ) build.
2017-05-05 13:35:50 +00:00
Once it completes, ensure the version is correct.
2018-11-29 16:00:00 +00:00
1. Click on the _Deploy_ button for the build.
2017-05-05 13:35:50 +00:00
Then deploy changes to _GitHub Releases_ and NuGet using the available publishers.
2018-11-29 16:00:00 +00:00
1. Go to [GitHub Releases ](https://github.com/winsw/winsw/releases ), find the published Release, click on *Edit release* and then uncheck the *This is a pre-release* checkbox to make the release public.
2017-05-05 13:35:50 +00:00
### Releasing to the Maven repository (legacy)
Maven repository is no longer the main source of releases,
2019-08-19 16:17:36 +00:00
but some projects still depend on WinSW from the Jenkins Maven repository.
Maven Packaging repository can be found [here ](https://github.com/jenkinsci/winsw-maven-packaging ).