The elves did a little winter cleaning! They are making room for all the features and bug fixes coming soon, I can almost hear the jolly old ho ho ho!

This commit is contained in:
Cody Lee
2022-12-17 08:45:25 -06:00
parent eb3653a178
commit 9ffa6e3af9
11 changed files with 22 additions and 504 deletions

View File

@@ -6,50 +6,33 @@ Lets talk about how the software gets built for our users before we talk about
making changes to it.
## TravisCI
## Github Actions
This repo is tested, built and deployed by [Travis-CI](https://travis-ci.org/unifi-poller/unifi-poller).
This repo is tested, built and deployed by [Github Actions](https://github.com/unpoller/unpoller/actions).
The [.travis.yml](.travis.yml) file in this repo coordinates the entire process.
As long as this document is kept up to date, this is what the travis file does:
The [.github/](.github/) directory in this repo coordinates the entire process.
As long as this document is kept up to date, this is what github does:
- Creates a go-capable build environment on a Linux host, some debian variant.
- Install ruby-devel to get rubygems.
- Installs other build tools including rpm and fpm from rubygems.
- Starts docker, builds the docker container and runs it.
- Tests that the Docker container ran and produced expected output.
- Makes a release. `make release`: This does a lot of things, controlled by the [Makefile](Makefile).
- Runs go tests and go linters.
- Compiles the application binaries for Windows, Linux and macOS.
- Compiles a man page that goes into the packages.
- Creates rpm and deb packages using fpm.
- Puts the packages, gzipped binaries and files containing the SHA256s of each asset into a release folder.
- Builds and Tests code changes
- Lints code changes
- On Release (through git tags) it uses goreleaser-pro to build and release:
- Linux, Mac and Windows Binaries
- Provides a packaged source copy
- Builds Debian, RedHat packages
- Builds Mac universal binary
- Builds Windows executable
- Builds numerous platform docker images and uploads them
After the release is built and Docker image tested:
- Deploys the release assets to the tagged release on GitHub using an encrypted GitHub Token (api key).
- Runs [another script](scripts/formula-deploy.sh) to create and upload a Homebrew formula to [golift/homebrew-mugs](https://github.com/golift/homebrew-mugs).
- Uses an encrypted SSH key to upload the updated formula to the repo.
- Travis does nothing else with Docker; it just makes sure the thing compiles and runs.
- Deploys the release assets to the tagged release on [GitHub releases](https://github.com/unpoller/unpoller/releases)
### Homebrew
it's a mac thing.
[Homebrew](https://brew.sh) is all I use at home. Please don't break the homebrew
formula stuff; it took a lot of pain to get it just right. I am very interested
in how it works for you.
it's a mac thing. [Homebrew](https://brew.sh)
### Docker
Docker is built automatically by Docker Cloud using the Dockerfile in the path
[init/docker/Dockerfile](init/docker/Dockerfile). Some of the configuration is
done in the Cloud service under my personal account `golift`, but the majority
happens in the build files in the [init/docker/hooks/](init/docker/hooks/) directory.
If you have need to change the Dockerfile, please clearly explain what problem your
changes are solving, and how it has been tested and validated. As far as I'm
concerned this file should never need to change again, but I'm not a Docker expert;
you're welcome to prove me wrong.
Docker is built automatically and uploaded to ghcr.io by the release github action.
# Contributing