diff --git a/ci/release/build.sh b/ci/release/build.sh index cbc63114b..82da752e3 100755 --- a/ci/release/build.sh +++ b/ci/release/build.sh @@ -144,7 +144,9 @@ main() { runjob windows/arm64 'OS=windows ARCH=arm64 build' & waitjobs - runjob linux/dockerimage 'build_docker_image' + runjob linux/dockerimage 'OS=linux build_docker_image' & + runjob windows/amd64/msi 'OS=windows ARCH=amd64 build_windows_msi' & + waitjobs } build() { @@ -249,4 +251,25 @@ build_docker_image() { sh_c docker buildx build $flags -t "$D2_DOCKER_IMAGE:$VERSION" -t "$D2_DOCKER_IMAGE:latest" --build-arg "VERSION=$VERSION" -f ./ci/release/Dockerfile "./ci/release/build/$VERSION" } +build_windows_msi() { + REMOTE_HOST=$CI_D2_WINDOWS_AMD64 + + ln -sf "../build/$VERSION/windows-amd64/d2-$VERSION/bin/d2.exe" ./ci/release/windows/d2.exe + sh_c rsync --archive --human-readable --copy-links --delete ./ci/release/windows/ "'$REMOTE_HOST:windows\'" + if ! echo "$VERSION" | grep '[0-9]\.[0-9].[0-9]'; then + WIX_VERSION=0.0.0 + else + WIX_VERSION=$VERSION + fi + sh_c ssh "$REMOTE_HOST" "'cd .\\windows && wix build -arch x64 -d D2Version=$WIX_VERSION .\d2.wxs'" + + # --files-from shouldn't be necessary but for some reason selecting d2.msi directly + # makes rsync error with: + # ERROR: rejecting unrequested file-list name: .\\windows\\d2.msi + # rsync error: requested action not supported (code 4) at flist.c(1027) [Receiver=3.2.7] + rsync_files=$(mktempd)/rsync-files + echo d2.msi >$rsync_files + sh_c rsync --archive --human-readable --files-from "$rsync_files" "'$REMOTE_HOST:windows\\'" "./ci/release/build/$VERSION/d2-$VERSION-$OS-$ARCH.msi" +} + main "$@" diff --git a/ci/release/windows/.gitignore b/ci/release/windows/.gitignore new file mode 100644 index 000000000..55ae023fc --- /dev/null +++ b/ci/release/windows/.gitignore @@ -0,0 +1 @@ +d2.exe diff --git a/ci/release/windows/d2.ico b/ci/release/windows/d2.ico new file mode 100644 index 000000000..bc8335225 Binary files /dev/null and b/ci/release/windows/d2.ico differ diff --git a/ci/release/windows/d2.png b/ci/release/windows/d2.png new file mode 100644 index 000000000..ba83fed7a Binary files /dev/null and b/ci/release/windows/d2.png differ diff --git a/ci/release/windows/d2.wxs b/ci/release/windows/d2.wxs new file mode 100644 index 000000000..3c49ba200 --- /dev/null +++ b/ci/release/windows/d2.wxs @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + +