From ab572844241873b467fa4c6943787a8fac3f6c77 Mon Sep 17 00:00:00 2001 From: konrad Date: Sun, 20 Jan 2019 21:32:26 +0100 Subject: [PATCH 1/8] Add everything needed to build a deb file for vikunja --- Makefile | 5 +++++ build/after-install.sh | 8 ++++++++ config.yml.sample | 4 ++-- 3 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 build/after-install.sh diff --git a/Makefile b/Makefile index 9c32aa522..2fd86b74e 100644 --- a/Makefile +++ b/Makefile @@ -146,6 +146,11 @@ release-os-package: release-zip: $(foreach file,$(wildcard $(DIST)/release/$(EXECUTABLE)-*),cd $(file); zip -r ../../zip/$(shell basename $(file)).zip *; cd ../../../; ) +# Builds a deb package using fpm from a previously created binary (using make build) +.PHONY: build-deb +build-deb: + fpm -s dir -t deb -n vikunja -v $(VERSION) --license GPLv3 --directories /opt/vikunja --after-install ./build/after-install.sh --description 'Vikunja is an open-source todo application, written in Go. It lets you create lists,tasks and share them via teams or directly between users.' -m maintainers@vikunja.io ./$(EXECUTABLE)=/opt/vikunja/vikunja ./templates=/opt/vikunja ./config.yml.sample=/etc/vikunja/config.yml + .PHONY: got-swag got-swag: do-the-swag @diff=$$(git diff docs/swagger/swagger.json); \ diff --git a/build/after-install.sh b/build/after-install.sh new file mode 100644 index 000000000..8e0097605 --- /dev/null +++ b/build/after-install.sh @@ -0,0 +1,8 @@ +#!/bin/bash +ln -s /opt/vikunja/vikunja /usr/bin/vikunja + +# Fix the config to contain proper values +NEW_SECRET=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1) +sed -i "s//$NEW_SECRET/g" /etc/vikunja/config.yml +sed -i "s//\/opt\/vikunja\//g" /etc/vikunja/config.yml +sed -i "s/Path: \"\.\/vikunja.db\"/Path: \"\\/opt\/vikunja\/vikunja.db\"/g" /etc/vikunja/config.yml diff --git a/config.yml.sample b/config.yml.sample index fd9071918..d2203d35c 100644 --- a/config.yml.sample +++ b/config.yml.sample @@ -2,7 +2,7 @@ service: # This token is used to verify issued JWT tokens. # Default is a random token which will be generated at each startup of vikunja. # (This means all already issued tokens will be invalid once you restart vikunja) - JWTSecret: "cei6gaezoosah2bao3ieZohkae5aicah" + JWTSecret: "" # The interface on which to run the webserver interface: ":3456" # The URL of the frontend, used to send password reset emails. @@ -10,7 +10,7 @@ service: # The base path on the file system where the binary and assets are. # Vikunja will also look in this path for a config file, so you could provide only this variable to point to a folder # with a config file which will then be used. - rootpath: + rootpath: # The number of items which gets returned per page pagecount: 50 # If set to true, enables a /metrics endpoint for prometheus to collect metrics about the system -- 2.40.1 From 82c79aaddd899008a748b48bb51b86b50f3d770e Mon Sep 17 00:00:00 2001 From: konrad Date: Mon, 21 Jan 2019 00:27:06 +0100 Subject: [PATCH 2/8] Started adding reprepro to drone to build debian repo --- .drone1.yml | 55 ++++++++++++++++++++++++++++++++++++++++ Makefile | 30 ++++++++++++++-------- build/reprepro-dist-conf | 8 ++++++ 3 files changed, 83 insertions(+), 10 deletions(-) create mode 100644 build/reprepro-dist-conf diff --git a/.drone1.yml b/.drone1.yml index c90dae108..14f81967e 100644 --- a/.drone1.yml +++ b/.drone1.yml @@ -180,6 +180,61 @@ steps: target: /master/ depends_on: [ sign-release ] + # Build a debian package and push it to our bucket + - name: build-deb + image: kolaente/fpm + pull: true + commands: + - make build-deb + depends_on: [ static-build-linux ] + + - name: deb-structure + image: kolaente/reprepro + pull: true + environment: + GPG_PASSWORD: ?[Rf'Iu9WU]6E> ~/.gnupg/gpg.conf + - gpgconf --kill gpg-agent + - echo "-----BEGIN PGP PRIVATE KEY BLOCK-----\n\n\n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\n=vY5V\n-----END PGP PRIVATE KEY BLOCK-----" > ~/frederik.gpg + - gpg --import ~/frederik.gpg + - mkdir debian/conf -p + - cp build/reprepro-dist-conf debian/conf/distributions + - make reprepro + + - name: sign-deb + image: plugins/gpgsign:1 + pull: true + depends_on: [ build-deb ] + settings: + key: + from_secret: gpg_privkey + passphrase: + from_secret: gpg_password + files: + - '*.deb' + detach_sign: true + + # Push the releases to our pseudo-s3-bucket + - name: release-deb-latest + image: plugins/s3:1 + pull: true + settings: + bucket: vikunja-deb + access_key: + from_secret: aws_access_key_id + secret_key: + from_secret: aws_secret_access_key + endpoint: https://storage.kolaente.de + path_style: true + source: '*.deb' + target: /master/ + depends_on: [ build-deb ] + # Build the docker image and push it to docker hub - name: docker image: plugins/docker diff --git a/Makefile b/Makefile index 2fd86b74e..108bf1a85 100644 --- a/Makefile +++ b/Makefile @@ -42,6 +42,12 @@ else endif endif +ifeq ($(DRONE_WORKSPACE),'') + BINLOCATION := $(EXECUTABLE) +else + BINLOCATION := $(DIST)/binaries/$(EXECUTABLE)-$(VERSION)-linux-amd64 +endif + VERSION := $(shell echo $(VERSION) | sed 's/\//\-/g') .PHONY: all @@ -104,9 +110,9 @@ release-windows: go install $(GOFLAGS) github.com/karalabe/xgo; \ fi xgo -dest $(DIST)/binaries -tags 'netgo $(TAGS)' -ldflags '-linkmode external -extldflags "-static" $(LDFLAGS)' -targets 'windows/*' -out vikunja-$(VERSION) . -ifneq ($(DRONE_WORKSPACE),'') - mv /build/* $(DIST)/binaries -endif +#ifneq ($(DRONE_WORKSPACE),'') +# mv /build/* $(DIST)/binaries +#endif .PHONY: release-linux release-linux: @@ -114,9 +120,9 @@ release-linux: go install $(GOFLAGS) github.com/karalabe/xgo; \ fi xgo -dest $(DIST)/binaries -tags 'netgo $(TAGS)' -ldflags '-linkmode external -extldflags "-static" $(LDFLAGS)' -targets 'linux/*' -out vikunja-$(VERSION) . -ifneq ($(DRONE_WORKSPACE),'') - mv /build/* $(DIST)/binaries -endif +#ifneq ($(DRONE_WORKSPACE),'') +# mv /build/* $(DIST)/binaries +#endif .PHONY: release-darwin release-darwin: @@ -124,9 +130,9 @@ release-darwin: go install $(GOFLAGS) github.com/karalabe/xgo; \ fi xgo -dest $(DIST)/binaries -tags 'netgo $(TAGS)' -ldflags '$(LDFLAGS)' -targets 'darwin/*' -out vikunja-$(VERSION) . -ifneq ($(DRONE_WORKSPACE),'') - mv /build/* $(DIST)/binaries -endif +#ifneq ($(DRONE_WORKSPACE),'') +# mv /build/* $(DIST)/binaries +#endif .PHONY: release-copy release-copy: @@ -149,7 +155,11 @@ release-zip: # Builds a deb package using fpm from a previously created binary (using make build) .PHONY: build-deb build-deb: - fpm -s dir -t deb -n vikunja -v $(VERSION) --license GPLv3 --directories /opt/vikunja --after-install ./build/after-install.sh --description 'Vikunja is an open-source todo application, written in Go. It lets you create lists,tasks and share them via teams or directly between users.' -m maintainers@vikunja.io ./$(EXECUTABLE)=/opt/vikunja/vikunja ./templates=/opt/vikunja ./config.yml.sample=/etc/vikunja/config.yml + fpm -s dir -t deb --url https://vikunja.io -n vikunja -v $(VERSION) --license GPLv3 --directories /opt/vikunja --after-install ./build/after-install.sh --description 'Vikunja is an open-source todo application, written in Go. It lets you create lists,tasks and share them via teams or directly between users.' -m maintainers@vikunja.io ./$(BINLOCATION)=/opt/vikunja/vikunja ./templates=/opt/vikunja ./config.yml.sample=/etc/vikunja/config.yml; + +.PHONY: reprepro +reprepro: + reprepro_expect debian includedeb strech ./$(EXECUTABLE)_$(VERSION)_amd64.deb .PHONY: got-swag got-swag: do-the-swag diff --git a/build/reprepro-dist-conf b/build/reprepro-dist-conf new file mode 100644 index 000000000..8ea7e4c7b --- /dev/null +++ b/build/reprepro-dist-conf @@ -0,0 +1,8 @@ +Origin: dl.vikunja.io +Label: Vikunja +Codename: strech +Architectures: amd64 +Components: main +Description: The debian repo for Vikunja builds. +SignWith: yes +Pull: strech -- 2.40.1 From 9a0b6786596cd73697f2400863f2b7b8c6e90118 Mon Sep 17 00:00:00 2001 From: konrad Date: Mon, 21 Jan 2019 00:27:33 +0100 Subject: [PATCH 3/8] Started adding reprepro to drone to build debian repo --- .drone1.yml | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/.drone1.yml b/.drone1.yml index 14f81967e..5b92448d0 100644 --- a/.drone1.yml +++ b/.drone1.yml @@ -193,8 +193,9 @@ steps: pull: true environment: GPG_PASSWORD: ?[Rf'Iu9WU]6E Date: Mon, 21 Jan 2019 00:28:28 +0100 Subject: [PATCH 4/8] add key from env --- .drone1.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.drone1.yml b/.drone1.yml index 5b92448d0..52d285e87 100644 --- a/.drone1.yml +++ b/.drone1.yml @@ -194,14 +194,14 @@ steps: environment: GPG_PASSWORD: ?[Rf'Iu9WU]6E> ~/.gnupg/gpg.conf - gpgconf --kill gpg-agent - - echo "-----BEGIN PGP PRIVATE KEY BLOCK-----\n\n\n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\n=vY5V\n-----END PGP PRIVATE KEY BLOCK-----" > ~/frederik.gpg + - echo $GPG_PRIVATE_KEY > ~/frederik.gpg - gpg --import ~/frederik.gpg - mkdir debian/conf -p - cp build/reprepro-dist-conf debian/conf/distributions -- 2.40.1 From e93904fa7f86f0d06b92630e07da4afb2daf9d61 Mon Sep 17 00:00:00 2001 From: kolaente Date: Mon, 21 Jan 2019 10:51:27 +0100 Subject: [PATCH 5/8] rebase --- .drone1.yml | 43 +++++++++++++++++++++++++++++++++++++++++++ .gitignore | 3 ++- Makefile | 33 ++++++++++++++++++++++++--------- config.yml.sample | 4 ++-- 4 files changed, 71 insertions(+), 12 deletions(-) diff --git a/.drone1.yml b/.drone1.yml index c90dae108..982c8b617 100644 --- a/.drone1.yml +++ b/.drone1.yml @@ -180,6 +180,49 @@ steps: target: /master/ depends_on: [ sign-release ] + # Build a debian package and push it to our bucket + - name: build-deb + image: kolaente/fpm + pull: true + commands: + - make build-deb + depends_on: [ static-build-linux ] + + - name: deb-structure + image: kolaente/reprepro + pull: true + environment: + GPG_PASSWORD: + from_secret: gpg_password + GPG_PRIVATE_KEY: + from_secret: gpg_privkey + commands: + - export GPG_TTY=$(tty) + - gpg -qk + - echo "use-agent" >> ~/.gnupg/gpg.conf + - gpgconf --kill gpg-agent + - echo $GPG_PRIVATE_KEY > ~/frederik.gpg + - gpg --import ~/frederik.gpg + - mkdir debian/conf -p + - cp build/reprepro-dist-conf debian/conf/distributions + - make reprepro + + # Push the releases to our pseudo-s3-bucket + - name: release-deb-latest + image: plugins/s3:1 + pull: true + settings: + bucket: vikunja-deb + access_key: + from_secret: aws_access_key_id + secret_key: + from_secret: aws_secret_access_key + endpoint: https://storage.kolaente.de + path_style: true + source: '*.deb' + target: /master/ + depends_on: [ build-deb ] + # Build the docker image and push it to docker hub - name: docker image: plugins/docker diff --git a/.gitignore b/.gitignore index 41d2d7339..ffffe576e 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,5 @@ dist/ cover.* /vikunja Test_* -bin/ \ No newline at end of file +bin/ +secrets \ No newline at end of file diff --git a/Makefile b/Makefile index 9c32aa522..108bf1a85 100644 --- a/Makefile +++ b/Makefile @@ -42,6 +42,12 @@ else endif endif +ifeq ($(DRONE_WORKSPACE),'') + BINLOCATION := $(EXECUTABLE) +else + BINLOCATION := $(DIST)/binaries/$(EXECUTABLE)-$(VERSION)-linux-amd64 +endif + VERSION := $(shell echo $(VERSION) | sed 's/\//\-/g') .PHONY: all @@ -104,9 +110,9 @@ release-windows: go install $(GOFLAGS) github.com/karalabe/xgo; \ fi xgo -dest $(DIST)/binaries -tags 'netgo $(TAGS)' -ldflags '-linkmode external -extldflags "-static" $(LDFLAGS)' -targets 'windows/*' -out vikunja-$(VERSION) . -ifneq ($(DRONE_WORKSPACE),'') - mv /build/* $(DIST)/binaries -endif +#ifneq ($(DRONE_WORKSPACE),'') +# mv /build/* $(DIST)/binaries +#endif .PHONY: release-linux release-linux: @@ -114,9 +120,9 @@ release-linux: go install $(GOFLAGS) github.com/karalabe/xgo; \ fi xgo -dest $(DIST)/binaries -tags 'netgo $(TAGS)' -ldflags '-linkmode external -extldflags "-static" $(LDFLAGS)' -targets 'linux/*' -out vikunja-$(VERSION) . -ifneq ($(DRONE_WORKSPACE),'') - mv /build/* $(DIST)/binaries -endif +#ifneq ($(DRONE_WORKSPACE),'') +# mv /build/* $(DIST)/binaries +#endif .PHONY: release-darwin release-darwin: @@ -124,9 +130,9 @@ release-darwin: go install $(GOFLAGS) github.com/karalabe/xgo; \ fi xgo -dest $(DIST)/binaries -tags 'netgo $(TAGS)' -ldflags '$(LDFLAGS)' -targets 'darwin/*' -out vikunja-$(VERSION) . -ifneq ($(DRONE_WORKSPACE),'') - mv /build/* $(DIST)/binaries -endif +#ifneq ($(DRONE_WORKSPACE),'') +# mv /build/* $(DIST)/binaries +#endif .PHONY: release-copy release-copy: @@ -146,6 +152,15 @@ release-os-package: release-zip: $(foreach file,$(wildcard $(DIST)/release/$(EXECUTABLE)-*),cd $(file); zip -r ../../zip/$(shell basename $(file)).zip *; cd ../../../; ) +# Builds a deb package using fpm from a previously created binary (using make build) +.PHONY: build-deb +build-deb: + fpm -s dir -t deb --url https://vikunja.io -n vikunja -v $(VERSION) --license GPLv3 --directories /opt/vikunja --after-install ./build/after-install.sh --description 'Vikunja is an open-source todo application, written in Go. It lets you create lists,tasks and share them via teams or directly between users.' -m maintainers@vikunja.io ./$(BINLOCATION)=/opt/vikunja/vikunja ./templates=/opt/vikunja ./config.yml.sample=/etc/vikunja/config.yml; + +.PHONY: reprepro +reprepro: + reprepro_expect debian includedeb strech ./$(EXECUTABLE)_$(VERSION)_amd64.deb + .PHONY: got-swag got-swag: do-the-swag @diff=$$(git diff docs/swagger/swagger.json); \ diff --git a/config.yml.sample b/config.yml.sample index fd9071918..d2203d35c 100644 --- a/config.yml.sample +++ b/config.yml.sample @@ -2,7 +2,7 @@ service: # This token is used to verify issued JWT tokens. # Default is a random token which will be generated at each startup of vikunja. # (This means all already issued tokens will be invalid once you restart vikunja) - JWTSecret: "cei6gaezoosah2bao3ieZohkae5aicah" + JWTSecret: "" # The interface on which to run the webserver interface: ":3456" # The URL of the frontend, used to send password reset emails. @@ -10,7 +10,7 @@ service: # The base path on the file system where the binary and assets are. # Vikunja will also look in this path for a config file, so you could provide only this variable to point to a folder # with a config file which will then be used. - rootpath: + rootpath: # The number of items which gets returned per page pagecount: 50 # If set to true, enables a /metrics endpoint for prometheus to collect metrics about the system -- 2.40.1 From 3f87c26cc1c9fd22e6e1e0b000aad44f13aa0b46 Mon Sep 17 00:00:00 2001 From: kolaente Date: Mon, 21 Jan 2019 10:58:26 +0100 Subject: [PATCH 6/8] add --- build/after-install.sh | 8 ++++++++ build/reprepro-dist-conf | 8 ++++++++ 2 files changed, 16 insertions(+) create mode 100644 build/after-install.sh create mode 100644 build/reprepro-dist-conf diff --git a/build/after-install.sh b/build/after-install.sh new file mode 100644 index 000000000..8e0097605 --- /dev/null +++ b/build/after-install.sh @@ -0,0 +1,8 @@ +#!/bin/bash +ln -s /opt/vikunja/vikunja /usr/bin/vikunja + +# Fix the config to contain proper values +NEW_SECRET=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1) +sed -i "s//$NEW_SECRET/g" /etc/vikunja/config.yml +sed -i "s//\/opt\/vikunja\//g" /etc/vikunja/config.yml +sed -i "s/Path: \"\.\/vikunja.db\"/Path: \"\\/opt\/vikunja\/vikunja.db\"/g" /etc/vikunja/config.yml diff --git a/build/reprepro-dist-conf b/build/reprepro-dist-conf new file mode 100644 index 000000000..8ea7e4c7b --- /dev/null +++ b/build/reprepro-dist-conf @@ -0,0 +1,8 @@ +Origin: dl.vikunja.io +Label: Vikunja +Codename: strech +Architectures: amd64 +Components: main +Description: The debian repo for Vikunja builds. +SignWith: yes +Pull: strech -- 2.40.1 From 0fe5ced456e464e03f1d45d03f7c28eebfe431e9 Mon Sep 17 00:00:00 2001 From: konrad Date: Mon, 21 Jan 2019 22:18:55 +0100 Subject: [PATCH 7/8] More gitignore --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index ffffe576e..55a93ed7e 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,6 @@ cover.* /vikunja Test_* bin/ -secrets \ No newline at end of file +secrets +*.deb +debian/ \ No newline at end of file -- 2.40.1 From 0dbc9db65a3b75450833e4b69cc1ca57b211d354 Mon Sep 17 00:00:00 2001 From: konrad Date: Mon, 21 Jan 2019 22:45:59 +0100 Subject: [PATCH 8/8] Cleanup drone steps --- .drone1.yml | 69 +++++++++++++++++++++++++++++++++++++++++++---------- Makefile | 19 +++++++-------- 2 files changed, 64 insertions(+), 24 deletions(-) diff --git a/.drone1.yml b/.drone1.yml index 982c8b617..82ade9693 100644 --- a/.drone1.yml +++ b/.drone1.yml @@ -111,30 +111,30 @@ steps: image: karalabe/xgo-latest:latest pull: true environment: - TAGS: bindata sqlite GOPATH: /srv/app commands: - make release-windows + - mv /build/* $(DIST)/binaries depends_on: [ before-static-build ] - name: static-build-linux image: karalabe/xgo-latest:latest pull: true environment: - TAGS: bindata sqlite GOPATH: /srv/app commands: - make release-linux + - mv /build/* $(DIST)/binaries depends_on: [ before-static-build ] - name: static-build-darwin image: karalabe/xgo-latest:latest pull: true environment: - TAGS: bindata sqlite GOPATH: /srv/app commands: - make release-darwin + - mv /build/* $(DIST)/binaries depends_on: [ before-static-build ] - name: after-build-static @@ -192,10 +192,8 @@ steps: image: kolaente/reprepro pull: true environment: - GPG_PASSWORD: - from_secret: gpg_password GPG_PRIVATE_KEY: - from_secret: gpg_privkey + from_secret: gpg_privatekey commands: - export GPG_TTY=$(tty) - gpg -qk @@ -206,9 +204,10 @@ steps: - mkdir debian/conf -p - cp build/reprepro-dist-conf debian/conf/distributions - make reprepro + depends_on: [ build-deb ] # Push the releases to our pseudo-s3-bucket - - name: release-deb-latest + - name: release-deb image: plugins/s3:1 pull: true settings: @@ -219,9 +218,10 @@ steps: from_secret: aws_secret_access_key endpoint: https://storage.kolaente.de path_style: true - source: '*.deb' - target: /master/ - depends_on: [ build-deb ] + strip_prefix: debian + source: debian/* + target: / + depends_on: [ deb-structure ] # Build the docker image and push it to docker hub - name: docker @@ -305,30 +305,30 @@ steps: image: karalabe/xgo-latest:latest pull: true environment: - TAGS: bindata sqlite GOPATH: /srv/app commands: - make release-windows + - mv /build/* $(DIST)/binaries depends_on: [ before-static-build ] - name: static-build-linux image: karalabe/xgo-latest:latest pull: true environment: - TAGS: bindata sqlite GOPATH: /srv/app commands: - make release-linux + - mv /build/* $(DIST)/binaries depends_on: [ before-static-build ] - name: static-build-darwin image: karalabe/xgo-latest:latest pull: true environment: - TAGS: bindata sqlite GOPATH: /srv/app commands: - make release-darwin + - mv /build/* $(DIST)/binaries depends_on: [ before-static-build ] - name: after-build-static @@ -374,6 +374,49 @@ steps: target: /${DRONE_TAG##v}/ depends_on: [ sign-release ] + # Build a debian package and push it to our bucket + - name: build-deb + image: kolaente/fpm + pull: true + commands: + - make build-deb + depends_on: [ static-build-linux ] + + - name: deb-structure + image: kolaente/reprepro + pull: true + environment: + GPG_PRIVATE_KEY: + from_secret: gpg_privatekey + commands: + - export GPG_TTY=$(tty) + - gpg -qk + - echo "use-agent" >> ~/.gnupg/gpg.conf + - gpgconf --kill gpg-agent + - echo $GPG_PRIVATE_KEY > ~/frederik.gpg + - gpg --import ~/frederik.gpg + - mkdir debian/conf -p + - cp build/reprepro-dist-conf debian/conf/distributions + - make reprepro + depends_on: [ build-deb ] + + # Push the releases to our pseudo-s3-bucket + - name: release-deb + image: plugins/s3:1 + pull: true + settings: + bucket: vikunja-deb + access_key: + from_secret: aws_access_key_id + secret_key: + from_secret: aws_secret_access_key + endpoint: https://storage.kolaente.de + path_style: true + strip_prefix: debian + source: debian/* + target: / + depends_on: [ deb-structure ] + # Build the docker image and push it to docker hub - name: docker image: plugins/docker diff --git a/Makefile b/Makefile index 108bf1a85..a974a5dce 100644 --- a/Makefile +++ b/Makefile @@ -48,6 +48,12 @@ else BINLOCATION := $(DIST)/binaries/$(EXECUTABLE)-$(VERSION)-linux-amd64 endif +ifeq ($(VERSION),master) + PKGVERSION := $(shell git describe --tags --always --abbrev=10 | sed 's/-/+/' | sed 's/^v//' | sed 's/-g/-/') +else + PKGVERSION := $(VERSION) +endif + VERSION := $(shell echo $(VERSION) | sed 's/\//\-/g') .PHONY: all @@ -110,9 +116,6 @@ release-windows: go install $(GOFLAGS) github.com/karalabe/xgo; \ fi xgo -dest $(DIST)/binaries -tags 'netgo $(TAGS)' -ldflags '-linkmode external -extldflags "-static" $(LDFLAGS)' -targets 'windows/*' -out vikunja-$(VERSION) . -#ifneq ($(DRONE_WORKSPACE),'') -# mv /build/* $(DIST)/binaries -#endif .PHONY: release-linux release-linux: @@ -120,9 +123,6 @@ release-linux: go install $(GOFLAGS) github.com/karalabe/xgo; \ fi xgo -dest $(DIST)/binaries -tags 'netgo $(TAGS)' -ldflags '-linkmode external -extldflags "-static" $(LDFLAGS)' -targets 'linux/*' -out vikunja-$(VERSION) . -#ifneq ($(DRONE_WORKSPACE),'') -# mv /build/* $(DIST)/binaries -#endif .PHONY: release-darwin release-darwin: @@ -130,9 +130,6 @@ release-darwin: go install $(GOFLAGS) github.com/karalabe/xgo; \ fi xgo -dest $(DIST)/binaries -tags 'netgo $(TAGS)' -ldflags '$(LDFLAGS)' -targets 'darwin/*' -out vikunja-$(VERSION) . -#ifneq ($(DRONE_WORKSPACE),'') -# mv /build/* $(DIST)/binaries -#endif .PHONY: release-copy release-copy: @@ -155,11 +152,11 @@ release-zip: # Builds a deb package using fpm from a previously created binary (using make build) .PHONY: build-deb build-deb: - fpm -s dir -t deb --url https://vikunja.io -n vikunja -v $(VERSION) --license GPLv3 --directories /opt/vikunja --after-install ./build/after-install.sh --description 'Vikunja is an open-source todo application, written in Go. It lets you create lists,tasks and share them via teams or directly between users.' -m maintainers@vikunja.io ./$(BINLOCATION)=/opt/vikunja/vikunja ./templates=/opt/vikunja ./config.yml.sample=/etc/vikunja/config.yml; + fpm -s dir -t deb --url https://vikunja.io -n vikunja -v $(PKGVERSION) --license GPLv3 --directories /opt/vikunja --after-install ./build/after-install.sh --description 'Vikunja is an open-source todo application, written in Go. It lets you create lists,tasks and share them via teams or directly between users.' -m maintainers@vikunja.io ./$(BINLOCATION)=/opt/vikunja/vikunja ./templates=/opt/vikunja ./config.yml.sample=/etc/vikunja/config.yml; .PHONY: reprepro reprepro: - reprepro_expect debian includedeb strech ./$(EXECUTABLE)_$(VERSION)_amd64.deb + reprepro_expect debian includedeb strech ./$(EXECUTABLE)_$(PKGVERSION)_amd64.deb .PHONY: got-swag got-swag: do-the-swag -- 2.40.1