bitmask-vpn/docker/Makefile

98 lines
3.1 KiB
Makefile

#########################################################################
# Docker build environment for BitmaskVPN
# (c) LEAP Encryption Access Project, 2019-2020
#########################################################################
IMAGE=bitmask-vpn
REGISTRY=registry.0xacab.org/leap
PROVIDER=riseup
PRODUCT=$(shell echo $(PROVIDER) | sed -e "s/\b\(.\)/\u\1/g")VPN
UNINSTALLER_NSIS="../deploy/produce-bitmask-uninstaller.exe"
UNINSTALLER_WINE=".wine/drive_c/bitmask-uninstall.exe"
UNINSTALLER_STAGING="../build/windows/staging/uninstall.exe"
UNINSTALLER_SIGNED="../build/windows/staging/uninstall-signed.exe"
SIGNCODE=osslsigncode
SECRETS="leap/secrets/windoze"
build:
mkdir -p mods && cp ../go.mod ../go.sum mods/ && cp -r ../packages mods/
docker build -t $(REGISTRY)/$(IMAGE):latest .
deps:
sudo apt install osslsigncode
push:
docker push $(REGISTRY)/$(IMAGE):latest
prune:
docker system prune
login:
docker login $(REGISTRY)
package_snap:
docker run \
-e PROVIDER=$(PROVIDER) \
-e TYPE=snap \
-v `python3 -c 'import os; print(os.path.abspath(".."))'`:/bitmask-vpn.host \
--cpus="4" \
-it --rm \
$(REGISTRY)/$(IMAGE):latest \
/builder.sh
package_win: clean_win package_win_stage_1 sign_win_uninstaller_in_host package_win_stage_2 sign_win_installer_in_host
clean_win:
@rm -f ../deploy/*.exe
package_win_stage_1:
docker run \
-e PROVIDER=$(PROVIDER) \
-e XBUILD=win \
-e STAGE=1 \
-v `python3 -c 'import os; print(os.path.abspath(".."))'`:/bitmask-vpn.host \
--cpus="4" \
-it --rm \
$(REGISTRY)/$(IMAGE):latest \
/builder.sh
sign_win_uninstaller_in_host:
@rm -f $(UNINSTALLER_STAGING)
@rm -f $(UNINSTALLER_WINE)
@echo "[+] running nsis uninstaller under wine..."
@wine $(UNINSTALLER_NSIS) || echo "[+] wine finished (it exits badly)"
@cp ~/$(UNINSTALLER_WINE) $(UNINSTALLER_STAGING) && echo "[+] copied uninstaller to staging dir:" $(UNINSTALLER_STAGING)
@$(SIGNCODE) sign \
-certs ~/$(SECRETS)/win.crt \
-key ~/$(SECRETS)/key.pem \
-pass `gpg --decrypt ~/$(SECRETS)/../windoze.gpg` \
-n "$(PRODUCT) Uninstaller" -i "https://leap.se/" \
-in $(UNINSTALLER_STAGING) \
-out $(UNINSTALLER_SIGNED)
@echo "[+] signed uninstaller in:" $(UNINSTALLER_SIGNED)
package_win_stage_2:
docker run \
-e PROVIDER=$(PROVIDER) \
-e XBUILD=win \
-e STAGE=2 \
-v `python3 -c 'import os; print(os.path.abspath(".."))'`:/bitmask-vpn.host \
--cpus="4" \
-it --rm \
$(REGISTRY)/$(IMAGE):latest \
/builder.sh
sign_win_installer_in_host:
$(eval INSTALLER := $(shell ls -tr ../deploy/$(PRODUCT)*.exe | tail -n 1))
$(eval INSTALLER_SIGNED := $(shell echo $(INSTALLER) | sed 's/\.exe/-signed.exe/'))
@$(SIGNCODE) sign \
-certs ~/$(SECRETS)/win.crt \
-key ~/$(SECRETS)/key.pem \
-pass `gpg --decrypt ~/$(SECRETS)/../windoze.gpg` \
-n "$(PRODUCT) Installer" -i "https://leap.se/" \
-in $(INSTALLER) \
-out ../deploy/$(INSTALLER_SIGNED)
@echo "[+] signed installer in:" $(INSTALLER_SIGNED)
shell:
docker run -v `python3 -c 'import os; print(os.path.abspath(".."))'`:/bitmask-vpn.host -it --rm $(REGISTRY)/$(IMAGE):latest /bin/bash