Compress binaries after building them (#81)
This commit is contained in:
parent
16825ba7c6
commit
9930f98f8e
3 changed files with 41 additions and 6 deletions
24
.drone1.yml
24
.drone1.yml
|
@ -186,13 +186,21 @@ steps:
|
||||||
- make release-darwin
|
- make release-darwin
|
||||||
depends_on: [ before-static-build ]
|
depends_on: [ before-static-build ]
|
||||||
|
|
||||||
- name: after-build-static
|
- name: after-build-compress
|
||||||
image: techknowlogick/xgo:latest
|
image: kolaente/upx
|
||||||
pull: true
|
pull: true
|
||||||
depends_on:
|
depends_on:
|
||||||
- static-build-windows
|
- static-build-windows
|
||||||
- static-build-linux
|
- static-build-linux
|
||||||
- static-build-darwin
|
- static-build-darwin
|
||||||
|
commands:
|
||||||
|
- make release-compress
|
||||||
|
|
||||||
|
- name: after-build-static
|
||||||
|
image: techknowlogick/xgo:latest
|
||||||
|
pull: true
|
||||||
|
depends_on:
|
||||||
|
- after-build-compress
|
||||||
commands:
|
commands:
|
||||||
- make release-copy
|
- make release-copy
|
||||||
- make release-check
|
- make release-check
|
||||||
|
@ -383,13 +391,21 @@ steps:
|
||||||
- make release-darwin
|
- make release-darwin
|
||||||
depends_on: [ before-static-build ]
|
depends_on: [ before-static-build ]
|
||||||
|
|
||||||
- name: after-build-static
|
- name: after-build-compress
|
||||||
image: techknowlogick/xgo:latest
|
image: kolaente/upx
|
||||||
pull: true
|
pull: true
|
||||||
depends_on:
|
depends_on:
|
||||||
- static-build-windows
|
- static-build-windows
|
||||||
- static-build-linux
|
- static-build-linux
|
||||||
- static-build-darwin
|
- static-build-darwin
|
||||||
|
commands:
|
||||||
|
- make release-compress
|
||||||
|
|
||||||
|
- name: after-build-static
|
||||||
|
image: techknowlogick/xgo:latest
|
||||||
|
pull: true
|
||||||
|
depends_on:
|
||||||
|
- after-build-compress
|
||||||
commands:
|
commands:
|
||||||
- make release-copy
|
- make release-copy
|
||||||
- make release-check
|
- make release-check
|
||||||
|
|
9
Makefile
9
Makefile
|
@ -98,6 +98,10 @@ build: $(EXECUTABLE)
|
||||||
$(EXECUTABLE): $(SOURCES)
|
$(EXECUTABLE): $(SOURCES)
|
||||||
go build $(GOFLAGS) $(EXTRA_GOFLAGS) -tags '$(TAGS)' -ldflags '-s -w $(LDFLAGS)' -o $@
|
go build $(GOFLAGS) $(EXTRA_GOFLAGS) -tags '$(TAGS)' -ldflags '-s -w $(LDFLAGS)' -o $@
|
||||||
|
|
||||||
|
.PHONY: compress-build
|
||||||
|
compress-build:
|
||||||
|
upx -9 $(EXECUTABLE)
|
||||||
|
|
||||||
.PHONY: release
|
.PHONY: release
|
||||||
release: release-dirs release-windows release-linux release-darwin release-copy release-check release-os-package release-zip
|
release: release-dirs release-windows release-linux release-darwin release-copy release-check release-os-package release-zip
|
||||||
|
|
||||||
|
@ -135,6 +139,11 @@ ifneq ($(DRONE_WORKSPACE),'')
|
||||||
mv /build/* $(DIST)/binaries
|
mv /build/* $(DIST)/binaries
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Compresses all releases made by make release-* but not mips* releases since upx can't handle these.
|
||||||
|
.PHONY: release-compress
|
||||||
|
release-compress:
|
||||||
|
$(foreach file,$(filter-out $(wildcard $(wildcard $(DIST)/binaries/$(EXECUTABLE)-*mips*)),$(wildcard $(DIST)/binaries/$(EXECUTABLE)-*)), upx -9 $(file);)
|
||||||
|
|
||||||
.PHONY: release-copy
|
.PHONY: release-copy
|
||||||
release-copy:
|
release-copy:
|
||||||
$(foreach file,$(wildcard $(DIST)/binaries/$(EXECUTABLE)-*),cp $(file) $(DIST)/release/$(notdir $(file));)
|
$(foreach file,$(wildcard $(DIST)/binaries/$(EXECUTABLE)-*),cp $(file) $(DIST)/release/$(notdir $(file));)
|
||||||
|
|
|
@ -64,10 +64,19 @@ make build
|
||||||
|
|
||||||
Builds a `vikunja`-binary in the root directory of the repo for the platform it is run on.
|
Builds a `vikunja`-binary in the root directory of the repo for the platform it is run on.
|
||||||
|
|
||||||
|
### Compress the built binary
|
||||||
|
|
||||||
|
{{< highlight bash >}}
|
||||||
|
make compress-build
|
||||||
|
{{< /highlight >}}
|
||||||
|
|
||||||
|
Go binaries are very big.
|
||||||
|
To make the vikunja binary smaller, we can compress it using [upx](https://upx.github.io/).
|
||||||
|
|
||||||
### Build Releases
|
### Build Releases
|
||||||
|
|
||||||
{{< highlight bash >}}
|
{{< highlight bash >}}
|
||||||
make build
|
make release
|
||||||
{{< /highlight >}}
|
{{< /highlight >}}
|
||||||
|
|
||||||
Builds binaries for all platforms and zips them with a copy of the `templates/` folder.
|
Builds binaries for all platforms and zips them with a copy of the `templates/` folder.
|
||||||
|
@ -75,7 +84,7 @@ All built zip files are stored into `dist/zips/`. Binaries are stored in `dist/b
|
||||||
binaries bundled with `templates` are stored in `dist/releases/`.
|
binaries bundled with `templates` are stored in `dist/releases/`.
|
||||||
|
|
||||||
All cross-platform binaries built using this series of commands are built with the help of
|
All cross-platform binaries built using this series of commands are built with the help of
|
||||||
[xgo](https://github.com/karalabe/xgo). The make command will automatically install the
|
[xgo](https://github.com/techknowlogick/xgo). The make command will automatically install the
|
||||||
binary to be able to use it.
|
binary to be able to use it.
|
||||||
|
|
||||||
`make release` is actually just a shortcut to execute `make release-dirs release-windows release-linux release-darwin release-copy release-check release-os-package release-zip`.
|
`make release` is actually just a shortcut to execute `make release-dirs release-windows release-linux release-darwin release-copy release-check release-os-package release-zip`.
|
||||||
|
@ -85,6 +94,7 @@ binary to be able to use it.
|
||||||
* `release-copy` bundles binaries with a copy of `templates/` to then be zipped
|
* `release-copy` bundles binaries with a copy of `templates/` to then be zipped
|
||||||
* `release-check` creates sha256 checksums for each binary which will be included in the zip file
|
* `release-check` creates sha256 checksums for each binary which will be included in the zip file
|
||||||
* `release-os-package` bundles a binary with a copy of the `templates/` folder, the `sha256` checksum file, a sample `config.yml` and a copy of the license in a folder for each architecture
|
* `release-os-package` bundles a binary with a copy of the `templates/` folder, the `sha256` checksum file, a sample `config.yml` and a copy of the license in a folder for each architecture
|
||||||
|
* `release-compress` compresses all build binaries, see `compress-build`
|
||||||
* `release-zip` makes a zip file for the files created by `release-os-package`
|
* `release-zip` makes a zip file for the files created by `release-os-package`
|
||||||
|
|
||||||
### Build debian packages
|
### Build debian packages
|
||||||
|
|
Loading…
Reference in a new issue