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
No known key found for this signature in database
11 changed files with 22 additions and 504 deletions

Binary file not shown.

View File

@ -1,143 +0,0 @@
# Powered by Application Builder: https://github.com/golift/application-builder
jobs:
include:
- os: osx
osx_image: xcode12
language: go
go: 1.19.x
- os: linux
dist: focal
services: docker
language: go
go: 1.19.x
git:
depth: false
addons:
homebrew:
packages:
- upx
apt:
packages:
- ruby-dev
- rpm
- build-essential
- git
- libgnome-keyring-dev
- fakeroot
- zip
- debsigs
- gnupg
- upx
install:
- mkdir -p $(go env GOPATH)/bin
- curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $(go env GOPATH)/bin latest
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then rvm install 2.6.0; fi
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then rvm 2.6.0 do gem install --no-document fpm -v 1.11.0; fi
before_script:
# Create your own deploy key, tar it, and encrypt the file to make this work. Optionally add a bitly_token file to the archive.
- openssl aes-256-cbc -K $encrypted_772fc4772f04_key -iv $encrypted_772fc4772f04_iv -in .secret_files.tar.enc -out .secret_files.tar -d
- tar -xf .secret_files.tar
- gpg --import gpg.signing.key
- rm -f gpg.signing.key .secret_files.tar
- source settings.sh
script:
# Test Go.
- make test
# Test Docker.
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then make docker; fi
# Test built docker image.
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then docker run $BINARY -v 2>&1 | grep -Eq "^$BINARY,? v.*$VERSION"; fi
# Build everything
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then rvm 2.6.0 do make release; fi
# Build mac binary or image.
- if [ "$TRAVIS_OS_NAME" == "osx" ]; then make dmg; fi
# Test homebrew (with make install).
- if [ "$TRAVIS_OS_NAME" == "osx" ]; then make install VERSION=$VERSION ITERATION=$ITERATION PREFIX=/tmp/ab-$VERSION ETC=/tmp/ab-$VERSION/etc; fi
after_success:
# Display Release Folder
- ls -l release/
# Setup the ssh client so we can clone and push to the homebrew formula repo.
# You must put github_deploy_file into .secret_files.tar.enc
# This is an ssh key added to your homebrew forumla repo.
- |
mkdir -p $HOME/.ssh
declare -r SSH_FILE="$(mktemp -u $HOME/.ssh/XXXXX)"
echo -e "Host github.com\n\tStrictHostKeyChecking no\n" >> $HOME/.ssh/config
[ ! -f github_deploy_key ] || (mv github_deploy_key $SSH_FILE \
&& chmod 600 "$SSH_FILE" \
&& printf "%s\n" \
"Host github.com" \
" IdentityFile $SSH_FILE" \
" StrictHostKeyChecking no" \
" LogLevel ERROR" >> $HOME/.ssh/config)
deploy:
# Unstable (master pushes).
- provider: packagecloud
repository: unstable
username: golift
token:
secure: 1vzsIxgcDkMkkmxpvaw3vEMt4cbDNpk3UMeiv5qnHJ9/k0D6+VhNVS0I3QLgP5+WQgH11Y0YX00NvcY13M+hSj6vLhPCBroFisXJyDpg/f/bxyHxILFeO6AY/CSFbdLzyLcjJo5SC7JedEhqd4xeqjEo14FxGrzKB7guOBCdOQPtaFxfimm02vNt34LoLGYOfZMek2vt50qAR8ChvX2fG/gGxfAlQ4AYvppJLwfPs4jwMN1rrndDI1EUgy3ZMafM40KguXD2wGkctLmyoelTEX2TEDa8TBZKot3lRmK1vyI3wCzNY/Jb5chGq9J5zWFpPlSvn+NPeqj+8UGCZ+bCb0unFH5OdOEKTmQ46cYgL6d3RRbpwoxbG/twg/bAfJ0iiSNTJfXjXDLKT9j+YyeCerbnh7rT/qCuwO+W/HIsnu0waCXvXGAKXGAAE+xvnBygp/YS6I4Y26V2CBIF8KJEWIF/CuooHzraa5c1hg50h5YZnZ9EwVXxFRdsFSNxle9uNe2iJ08FEV6VyHPybYsOnA37yM7E8wCLbcKRKavAyVT7OykLU2GAAOCdcN8tpSDA/kwKx3imZhyjGGUrYQxVN/bCb4hhBX+OymcVIw2gQFkJ/sc09ck+Vo77FVR6JVi0tCjan7x4oCTQfbEa5lkioMjKgY6JDfRVZdX6HUjlJTw=
dist: ubuntu/focal
local-dir: release
package_glob: "*.deb"
skip_cleanup: true
cleanup: false
on:
branch: unstable
condition: "$TRAVIS_OS_NAME = linux"
- provider: packagecloud
repository: unstable
username: golift
token:
secure: 1vzsIxgcDkMkkmxpvaw3vEMt4cbDNpk3UMeiv5qnHJ9/k0D6+VhNVS0I3QLgP5+WQgH11Y0YX00NvcY13M+hSj6vLhPCBroFisXJyDpg/f/bxyHxILFeO6AY/CSFbdLzyLcjJo5SC7JedEhqd4xeqjEo14FxGrzKB7guOBCdOQPtaFxfimm02vNt34LoLGYOfZMek2vt50qAR8ChvX2fG/gGxfAlQ4AYvppJLwfPs4jwMN1rrndDI1EUgy3ZMafM40KguXD2wGkctLmyoelTEX2TEDa8TBZKot3lRmK1vyI3wCzNY/Jb5chGq9J5zWFpPlSvn+NPeqj+8UGCZ+bCb0unFH5OdOEKTmQ46cYgL6d3RRbpwoxbG/twg/bAfJ0iiSNTJfXjXDLKT9j+YyeCerbnh7rT/qCuwO+W/HIsnu0waCXvXGAKXGAAE+xvnBygp/YS6I4Y26V2CBIF8KJEWIF/CuooHzraa5c1hg50h5YZnZ9EwVXxFRdsFSNxle9uNe2iJ08FEV6VyHPybYsOnA37yM7E8wCLbcKRKavAyVT7OykLU2GAAOCdcN8tpSDA/kwKx3imZhyjGGUrYQxVN/bCb4hhBX+OymcVIw2gQFkJ/sc09ck+Vo77FVR6JVi0tCjan7x4oCTQfbEa5lkioMjKgY6JDfRVZdX6HUjlJTw=
dist: el/6
local-dir: release
package_glob: "*.rpm"
skip_cleanup: true
cleanup: false
on:
branch: unstable
condition: "$TRAVIS_OS_NAME = linux"
# Stable packages (releases).
- provider: packagecloud
repository: pkgs
username: golift
token:
secure: 1vzsIxgcDkMkkmxpvaw3vEMt4cbDNpk3UMeiv5qnHJ9/k0D6+VhNVS0I3QLgP5+WQgH11Y0YX00NvcY13M+hSj6vLhPCBroFisXJyDpg/f/bxyHxILFeO6AY/CSFbdLzyLcjJo5SC7JedEhqd4xeqjEo14FxGrzKB7guOBCdOQPtaFxfimm02vNt34LoLGYOfZMek2vt50qAR8ChvX2fG/gGxfAlQ4AYvppJLwfPs4jwMN1rrndDI1EUgy3ZMafM40KguXD2wGkctLmyoelTEX2TEDa8TBZKot3lRmK1vyI3wCzNY/Jb5chGq9J5zWFpPlSvn+NPeqj+8UGCZ+bCb0unFH5OdOEKTmQ46cYgL6d3RRbpwoxbG/twg/bAfJ0iiSNTJfXjXDLKT9j+YyeCerbnh7rT/qCuwO+W/HIsnu0waCXvXGAKXGAAE+xvnBygp/YS6I4Y26V2CBIF8KJEWIF/CuooHzraa5c1hg50h5YZnZ9EwVXxFRdsFSNxle9uNe2iJ08FEV6VyHPybYsOnA37yM7E8wCLbcKRKavAyVT7OykLU2GAAOCdcN8tpSDA/kwKx3imZhyjGGUrYQxVN/bCb4hhBX+OymcVIw2gQFkJ/sc09ck+Vo77FVR6JVi0tCjan7x4oCTQfbEa5lkioMjKgY6JDfRVZdX6HUjlJTw=
dist: ubuntu/focal
local-dir: release
package_glob: "*.deb"
skip_cleanup: true
cleanup: false
on:
tags: true
condition: "$TRAVIS_OS_NAME = linux"
- provider: packagecloud
repository: pkgs
username: golift
token:
secure: 1vzsIxgcDkMkkmxpvaw3vEMt4cbDNpk3UMeiv5qnHJ9/k0D6+VhNVS0I3QLgP5+WQgH11Y0YX00NvcY13M+hSj6vLhPCBroFisXJyDpg/f/bxyHxILFeO6AY/CSFbdLzyLcjJo5SC7JedEhqd4xeqjEo14FxGrzKB7guOBCdOQPtaFxfimm02vNt34LoLGYOfZMek2vt50qAR8ChvX2fG/gGxfAlQ4AYvppJLwfPs4jwMN1rrndDI1EUgy3ZMafM40KguXD2wGkctLmyoelTEX2TEDa8TBZKot3lRmK1vyI3wCzNY/Jb5chGq9J5zWFpPlSvn+NPeqj+8UGCZ+bCb0unFH5OdOEKTmQ46cYgL6d3RRbpwoxbG/twg/bAfJ0iiSNTJfXjXDLKT9j+YyeCerbnh7rT/qCuwO+W/HIsnu0waCXvXGAKXGAAE+xvnBygp/YS6I4Y26V2CBIF8KJEWIF/CuooHzraa5c1hg50h5YZnZ9EwVXxFRdsFSNxle9uNe2iJ08FEV6VyHPybYsOnA37yM7E8wCLbcKRKavAyVT7OykLU2GAAOCdcN8tpSDA/kwKx3imZhyjGGUrYQxVN/bCb4hhBX+OymcVIw2gQFkJ/sc09ck+Vo77FVR6JVi0tCjan7x4oCTQfbEa5lkioMjKgY6JDfRVZdX6HUjlJTw=
dist: el/6
local-dir: release
package_glob: "*.rpm"
skip_cleanup: true
cleanup: false
on:
tags: true
condition: "$TRAVIS_OS_NAME = linux"
# Upload built files to github too.
- provider: releases
api_key:
secure: GsvW0m+EnRELQMk8DjH63VXinqbwse4FJ4vNUslOE6CZ8PBXPrH0ZgaI7ic/uxRtm7CYj0sir4CZq62W5l6uhoXCCQfjOnmJspqnQcrFZ1xRdWktsNXaRwM6hlzaUThsJ/1PD9Psc66uKXBYTg0IlUz0yjZAZk7tCUE4libuj41z40ZKxUcbfcNvH4Njc9IpNB4QSA3ss+a9/6ZwBz4tHVamsGIrzaE0Zf99ItNBYvaOwhM2rC/NWIsFmwt8w4rIA2NIrkZgMDV+Z2Niqh4JRLAWCQNx/RjC5U52lG2yhqivUC3TromZ+q4O4alUltsyIzF2nVanLWgJmbeFo8uXT5A+gd3ovSkFLU9medXd9i4kap7kN/o5m9p5QZvrdEYHEmIU4ml5rjT2EQQVy5CtSmpiRAbhpEJIvA1wDtRq8rdz8IVfJXkHNjg2XdouNmMMWqa3OkEPw21+uxsqv4LscW/6ZjsavzL5SSdnBRU9n79EfGJE/tJLKiNumah/vLuJ5buNhgqmCdtX/Tg+DhQS1BOyYg4l4L8s9IIKZgFRwrOPsZnA/KsrWg4ZsjJ87cqKCaT/qs2EJx5odZcZWJYLBngeO8Tc6cQtLgJdieY2oEKo51Agq4rgikZDt21m6TY9/R5lPN0piwdpy3ZGKfv1ijXx74raMT03qskputzMCvc=
overwrite: true
skip_cleanup: true
cleanup: false
file_glob: true
file: release/*
on:
tags: true
# Upload homebrew formula file to a special repo.
- provider: script
script: scripts/formula-deploy.sh
on:
tags: true

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

156
Makefile
View File

@ -11,15 +11,7 @@ MD2ROFF_BIN=github.com/davidnewhall/md2roff@v0.0.1
# rsrc adds an ico file to a Windows exe file.
RSRC_BIN=github.com/akavel/rsrc
# If upx is available, use it to compress the binaries.
UPXPATH=$(shell which upx)
# Skip upx in Mac ARM environments: https://github.com/upx/upx/issues/446
ifeq ($(shell uname -ps),Darwin arm)
UPXPATH=
endif
# Travis CI passes the version in. Local builds get it from the current git tag.
# CI passes the version in. Local builds get it from the current git tag.
ifeq ($(VERSION),)
include .metadata.make
else
@ -31,73 +23,9 @@ else
ITERATION:=$(_ITERATION)
endif
# rpm is wierd and changes - to _ in versions.
RPMVERSION:=$(shell echo $(VERSION) | tr -- - _)
# used for freebsd packages.
BINARYU:=$(shell echo $(BINARY) | tr -- - _)
PACKAGE_SCRIPTS=
ifeq ($(FORMULA),service)
PACKAGE_SCRIPTS=--after-install after-install-rendered.sh --before-remove before-remove-rendered.sh
endif
define PACKAGE_ARGS
$(PACKAGE_SCRIPTS) \
--name $(BINARY) \
--deb-no-default-config-files \
--rpm-os linux \
--iteration $(ITERATION) \
--license $(LICENSE) \
--url $(SOURCE_URL) \
--maintainer "$(MAINT)" \
--vendor "$(VENDOR)" \
--description "$(DESC)" \
--config-files "/etc/$(BINARY)/$(CONFIG_FILE)" \
--freebsd-origin "$(SOURCE_URL)"
endef
PLUGINS:=$(patsubst plugins/%/main.go,%,$(wildcard plugins/*/main.go))
VERSION_LDFLAGS:= -X \"$(VERSION_PATH).Branch=$(BRANCH) ($(COMMIT))\" \
-X \"$(VERSION_PATH).BuildDate=$(DATE)\" \
-X \"$(VERSION_PATH).BuildUser=$(shell whoami)\" \
-X \"$(VERSION_PATH).Revision=$(ITERATION)\" \
-X \"$(VERSION_PATH).Version=$(VERSION)\"
# Makefile targets follow.
all: clean generate build
####################
##### Releases #####
####################
# Prepare a release. Called in Travis CI.
release: clean windows
# Prepareing a release!
mkdir -p $@
mv $(BINARY).*.linux $(BINARY).*.freebsd $@/
gzip -9r $@/
for i in $(BINARY)*.exe ; do zip -9qj $@/$$i.zip $$i examples/*.example *.html; rm -f $$i;done
mv *.rpm *.deb *.txz $@/
# Generating File Hashes
openssl dgst -r -sha256 $@/* | sed 's#release/##' | tee $@/checksums.sha256.txt
# DMG only makes a DMG file is MACAPP is set. Otherwise, it makes a gzipped binary for macOS.
dmg: clean macapp
mkdir -p release
[ "$(MACAPP)" = "" ] || hdiutil create release/$(MACAPP).dmg -srcfolder $(MACAPP).app -ov
[ "$(MACAPP)" != "" ] || mv $(BINARY).*.macos release/
[ "$(MACAPP)" != "" ] || gzip -9r release/
openssl dgst -r -sha256 release/* | sed 's#release/##' | tee release/macos_checksum.sha256.txt
# Delete all build assets.
clean:
rm -rf dist
rm -f $(BINARY) $(BINARY).*.{macos,freebsd,linux,exe,upx}{,.gz,.zip} $(BINARY).1{,.gz} $(BINARY).rb
rm -f $(BINARY){_,-}*.{deb,rpm,txz} v*.tar.gz.sha256 examples/MANUAL .metadata.make rsrc_*.syso
rm -f cmd/$(BINARY)/README{,.html} README{,.html} ./$(BINARY)_manual.html rsrc.syso $(MACAPP).app.zip
rm -rf package_build_* release after-install-rendered.sh before-remove-rendered.sh $(MACAPP).app
all: build
####################
##### Sidecars #####
@ -129,85 +57,9 @@ rsrc.syso: init/windows/application.ico init/windows/manifest.xml $(shell go env
$(shell go env GOPATH)/bin/rsrc:
cd /tmp ; go get $(RSRC_BIN) ; go install $(RSRC_BIN)@latest
####################
##### Binaries #####
####################
build: $(BINARY)
$(BINARY): main.go
go build -o $(BINARY) -ldflags "-w -s $(VERSION_LDFLAGS) $(EXTRA_LDFLAGS) "
[ -z "$(UPXPATH)" ] || $(UPXPATH) -q9 $@
macos: $(BINARY).amd64.macos
$(BINARY).amd64.macos: main.go
# Building darwin 64-bit x86 binary.
GOOS=darwin GOARCH=amd64 go build -o $@ -ldflags "-w -s $(VERSION_LDFLAGS) $(EXTRA_LDFLAGS) "
[ -z "$(UPXPATH)" ] || $(UPXPATH) -q9 $@
exe: $(BINARY).amd64.exe
windows: $(BINARY).amd64.exe
$(BINARY).amd64.exe: rsrc.syso main.go
# Building windows 64-bit x86 binary.
GOOS=windows GOARCH=amd64 go build -o $@ -ldflags "-w -s $(VERSION_LDFLAGS) $(EXTRA_LDFLAGS) $(WINDOWS_LDFLAGS)"
[ -z "$(UPXPATH)" ] || $(UPXPATH) -q9 $@
####################
##### Packages #####
####################
macapp: $(MACAPP).app
$(MACAPP).app: macos
[ -z "$(MACAPP)" ] || mkdir -p init/macos/$(MACAPP).app/Contents/MacOS
[ -z "$(MACAPP)" ] || cp $(BINARY).amd64.macos init/macos/$(MACAPP).app/Contents/MacOS/$(MACAPP)
[ -z "$(MACAPP)" ] || cp -rp init/macos/$(MACAPP).app $(MACAPP).app
####################
##### Homebrew #####
####################
# This builds a Homebrew formula file that can be used to install this app from source.
# The source used comes from the released version on GitHub. This will not work with local source.
# This target is used by Travis CI to update the released Forumla when a new tag is created.
formula: $(BINARY).rb
v$(VERSION).tar.gz.sha256:
# Calculate the SHA from the Github source file.
curl -sL $(SOURCE_URL)/archive/v$(VERSION).tar.gz | openssl dgst -r -sha256 | tee $@
$(BINARY).rb: v$(VERSION).tar.gz.sha256 init/homebrew/$(FORMULA).rb.tmpl
# Creating formula from template using sed.
sed -e "s/{{Version}}/$(VERSION)/g" \
-e "s/{{Iter}}/$(ITERATION)/g" \
-e "s/{{SHA256}}/$(shell head -c64 $<)/g" \
-e "s/{{Desc}}/$(DESC)/g" \
-e "s%{{SOURCE_URL}}%$(SOURCE_URL)%g" \
-e "s%{{SOURCE_PATH}}%$(SOURCE_PATH)%g" \
-e "s%{{CONFIG_FILE}}%$(CONFIG_FILE)%g" \
-e "s%{{Class}}%$(shell echo $(BINARY) | perl -pe 's/(?:\b|-)(\p{Ll})/\u$$1/g')%g" \
init/homebrew/$(FORMULA).rb.tmpl | tee $(BINARY).rb
# That perl line turns hello-world into HelloWorld, etc.
# Used for Homebrew only. Other distros can create packages.
install: man readme $(BINARY) plugins_darwin
@echo - Done Building -
@echo - Local installation with the Makefile is only supported on macOS.
@echo - Otherwise, build and install a package: make rpm -or- make deb
@[ "$(shell uname)" = "Darwin" ] || (echo "Unable to continue, not a Mac." && false)
@[ "$(PREFIX)" != "" ] || (echo "Unable to continue, PREFIX not set. Use: make install PREFIX=/usr/local ETC=/usr/local/etc" && false)
@[ "$(ETC)" != "" ] || (echo "Unable to continue, ETC not set. Use: make install PREFIX=/usr/local ETC=/usr/local/etc" && false)
# Copying the binary, config file, unit file, and man page into the env.
/usr/bin/install -m 0755 -d $(PREFIX)/bin $(PREFIX)/share/man/man1 $(ETC)/$(BINARY) $(PREFIX)/share/doc/$(BINARY) $(PREFIX)/lib/$(BINARY)
/usr/bin/install -m 0755 -cp $(BINARY) $(PREFIX)/bin/$(BINARY)
/usr/bin/install -m 0644 -cp $(BINARY).1.gz $(PREFIX)/share/man/man1
/usr/bin/install -m 0644 -cp examples/$(CONFIG_FILE).example $(ETC)/$(BINARY)/
/usr/bin/install -m 0755 -d $(PREFIX)/lib/$(BINARY)/web/static/{css,js,images}
/usr/bin/install -m 0644 -cp init/webserver/index.html $(PREFIX)/lib/$(BINARY)/web/index.html
/usr/bin/install -m 0644 -cp init/webserver/static/css/* $(PREFIX)/lib/$(BINARY)/web/static/css/
/usr/bin/install -m 0644 -cp init/webserver/static/js/* $(PREFIX)/lib/$(BINARY)/web/static/js/
/usr/bin/install -m 0644 -cp init/webserver/static/images/* $(PREFIX)/lib/$(BINARY)/web/static/images/
[ -f $(ETC)/$(BINARY)/$(CONFIG_FILE) ] || /usr/bin/install -m 0644 -cp examples/$(CONFIG_FILE).example $(ETC)/$(BINARY)/$(CONFIG_FILE)
/usr/bin/install -m 0644 -cp LICENSE *.html examples/* $(PREFIX)/share/doc/$(BINARY)/
goreleaser:
bulid-and-release:
goreleaser release --rm-dist
goreleaser-test:
build:
goreleaser release --rm-dist --skip-validate --skip-publish --skip-sign --debug

View File

@ -1,62 +0,0 @@
#
# This is part of Application Builder.
# https://github.com/golift/application-builder
#
ARG ARCH=amd64
ARG OS=linux
ARG BUILD_DATE=0
ARG COMMIT=0
ARG VERSION=unknown
ARG BINARY=application-builder
FROM golang:latest as builder
ARG ARCH
ARG OS
ARG BINARY
RUN mkdir -p $GOPATH/pkg/mod $GOPATH/bin $GOPATH/src /${BINARY}
COPY . /${BINARY}
WORKDIR /${BINARY}
RUN apt update && \
apt install -y upx && \
CGO_ENABLED=0 make ${BINARY}.${ARCH}.${OS}
FROM scratch
ARG ARCH
ARG OS
ARG BUILD_DATE
ARG COMMIT
ARG VERSION
ARG LICENSE=MIT
ARG BINARY
ARG SOURCE_URL=http://github.com/golift/application-builder
ARG DESC=application-builder
ARG VENDOR=golift
ARG AUTHOR=golift
ARG CONFIG_FILE=config.conf
# Build-time metadata as defined at https://github.com/opencontainers/image-spec/blob/master/annotations.md
LABEL org.opencontainers.image.created="${BUILD_DATE}" \
org.opencontainers.image.title="${BINARY}" \
org.opencontainers.image.documentation="${SOURCE_URL}/wiki/Docker" \
org.opencontainers.image.description="${DESC}" \
org.opencontainers.image.url="${SOURCE_URL}" \
org.opencontainers.image.revision="${COMMIT}" \
org.opencontainers.image.source="${SOURCE_URL}" \
org.opencontainers.image.vendor="${VENDOR}" \
org.opencontainers.image.authors="${AUTHOR}" \
org.opencontainers.image.architecture="${OS} ${ARCH}" \
org.opencontainers.image.licenses="${LICENSE}" \
org.opencontainers.image.version="${VERSION}"
COPY --from=builder /${BINARY}/${BINARY}.${ARCH}.${OS} /image
COPY --from=builder /${BINARY}/examples/${CONFIG_FILE}.example /etc/${BINARY}/${CONFIG_FILE}
COPY --from=builder /${BINARY}/init/webserver /usr/lib/unifi-poller/web
COPY --from=builder /etc/ssl /etc/ssl
COPY --from=builder /usr/share/zoneinfo /usr/share/zoneinfo
ENV TZ=UTC
ENTRYPOINT [ "/image" ]

View File

@ -1,12 +1,6 @@
## Docker Cloud Builds
This folder contains the files that build our Docker image. The image
is built by Docker Hub "automatically" using the [Dockerfile](Dockerfile)
and [hooks/](hooks/) in this folder.
## Docker Compose
The other files in this folder can be used locally to spin up
The files in this folder can be used locally to spin up
a full set of applications (minus the UniFi controller) to get
UniFi Poller up and running. Including InfluxDB, Grafana, and
Chronograph. This last app is useful to inspect the data stored
@ -14,4 +8,4 @@ in InfluxDB by UniFi Poller.
##### HOWTO
**Learn more about how and when to use these *Docker Compose* files in the
[Docker Wiki](https://github.com/unifi-poller/unifi-poller/wiki/Docker).**
[Docker Wiki](https://unpoller.com/docs/install/dockercompose).**

View File

@ -1,34 +0,0 @@
#!/bin/bash
# The Docker Cloud config must pass in the BUILDS env variable.
# See README.md (in this dir) and the screenshot for more info.
# This is part of Application Builder.
# https://github.com/golift/application-builder
# This always run local to the Dockerfile folder, so the path is ../..
pushd ../..
source settings.sh
# Build each configured image from Docker Cloud.
for build in $BUILDS; do
# os:name:arch
os=$(echo $build | cut -d: -f1)
name=$(echo $build | cut -d: -f2)
echo "Building Image ${IMAGE_NAME}_${os}_${name}"
docker build \
--build-arg "ARCH=${name}" \
--build-arg "BUILD_DATE=${DATE}" \
--build-arg "COMMIT=${COMMIT}" \
--build-arg "VERSION=${VERSION}-${ITERATION}" \
--build-arg "LICENSE=${LICENSE}" \
--build-arg "DESC=${DESC}" \
--build-arg "VENDOR=${VENDOR}" \
--build-arg "AUTHOR=${MAINT}" \
--build-arg "BINARY=${BINARY}" \
--build-arg "SOURCE_URL=${SOURCE_URL}" \
--build-arg "CONFIG_FILE=${CONFIG_FILE}" \
--tag "${IMAGE_NAME}_${os}_${name}" \
--file ${DOCKERFILE_PATH} .
done
popd

View File

@ -1,12 +0,0 @@
#!/bin/bash
# This is part of Application Builder.
# https://github.com/golift/application-builder
# https://www.smockle.com/blog/2019/04/22/migrating-from-travis-ci-to-docker-hub-automated-builds/
# This upgrades the docker client on the Docker Cloud server to a version
# that contains the `docker manifest` command. To use `docker manifest`
# set `DOCKER_CLI_EXPERIMENTAL=enabled` in your build environment.
# See README.md (in this dir) and the screenshot for more info.
docker run --rm --privileged multiarch/qemu-user-static:register --reset

View File

@ -1,53 +0,0 @@
#!/bin/bash
# This post build hook creates multi-architecture docker manifests.
# It's all a bit complicated for some reason.
# This is part of Application Builder.
# https://github.com/golift/application-builder
pushd ../..
source settings.sh
popd
if [ "$BUILDS" != "" ]; then
TAGS=$DOCKER_TAG
fi
export DOCKER_CLI_EXPERIMENTAL=enabled
# Push the extra custom images that were created.
for build in $BUILDS; do
os=$(echo $build | cut -d: -f1)
name=$(echo $build | cut -d: -f2)
echo "Pushing Image ${IMAGE_NAME}_${os}_${name}"
docker push ${IMAGE_NAME}_${os}_${name}
IMAGES="${IMAGES} ${IMAGE_NAME}_${os}_${name}"
done
echo "Annotating Images: ${IMAGES}"
# Build all the Docker tags if the source branch is a release and not a branch or pre-release.
if [ "v$VERSION" = "$SOURCE_BRANCH" ]; then
TAGS="$VERSION"
echo $SOURCE_BRANCH | grep -q -- -
if [ "$?" = "1" ]; then
# tag does not contain a dash, so assume it's a prod tag.
TAGS="$TAGS latest stable $(echo $VERSION | cut -d. -f1,2) $(echo $VERSION | cut -d. -f1)"
fi
fi
echo "Version: $VERSION, Source: $SOURCE_BRANCH, Building tags: ${TAGS}"
# Create multi-architecture manifests for each tag with all the built images.
for tag in $TAGS; do
docker manifest create --amend ${DOCKER_REPO}:${tag} $IMAGES
for build in $BUILDS; do
# os:name:arch, ie linux:amd64:amd64
os=$(echo $build | cut -d: -f1)
name=$(echo $build | cut -d: -f2)
arch=$(echo $build | cut -d: -f3)
# Annotating updates the manifest to describe each images' capabilities.
docker manifest annotate ${DOCKER_REPO}:${tag} ${IMAGE_NAME}_${os}_${name} --os ${os} --arch ${arch}
done
echo "Pushing Manifest ${DOCKER_REPO}:${tag}"
docker manifest push ${DOCKER_REPO}:${tag}
done

View File

@ -1,3 +0,0 @@
Copy your plugins into this folder and run `make plugins` to build them.
There is an example plugin available:
[https://github.com/unifi-poller/mysqlunifi](https://github.com/unifi-poller/mysqlunifi)

View File

@ -36,7 +36,3 @@ export LICENSE FORMULA SOURCE_URL VERSION_PATH SOURCE_PATH
# Import this signing key only if it's in the keyring.
gpg --list-keys 2>/dev/null | grep -q B93DD66EF98E54E2EAE025BA0166AD34ABC5A57C
[ "$?" != "0" ] || export SIGNING_KEY=B93DD66EF98E54E2EAE025BA0166AD34ABC5A57C
export WINDOWS_LDFLAGS=""
export MACAPP=""
export EXTRA_FPM_FLAGS=""