fix: Build MSI in goreleaser build
This commit is contained in:
parent
abf4fc2cf0
commit
b749b797f8
|
|
@ -43,6 +43,8 @@ builds:
|
||||||
|
|
||||||
checksum:
|
checksum:
|
||||||
name_template: 'checksums.txt'
|
name_template: 'checksums.txt'
|
||||||
|
extra_files:
|
||||||
|
- glob: ./dist/OliveTin-windows-amd64.msi
|
||||||
snapshot:
|
snapshot:
|
||||||
version_template: "{{ .Branch }}-{{ .ShortCommit }}"
|
version_template: "{{ .Branch }}-{{ .ShortCommit }}"
|
||||||
changelog:
|
changelog:
|
||||||
|
|
@ -176,6 +178,8 @@ nfpms:
|
||||||
dst: /usr/share/man/man1/OliveTin.1.gz
|
dst: /usr/share/man/man1/OliveTin.1.gz
|
||||||
|
|
||||||
release:
|
release:
|
||||||
|
extra_files:
|
||||||
|
- glob: ./dist/OliveTin-windows-amd64.msi
|
||||||
footer: |
|
footer: |
|
||||||
## Container images (from GitHub)
|
## Container images (from GitHub)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,6 @@ plugins:
|
||||||
- '@semantic-release/git'
|
- '@semantic-release/git'
|
||||||
- - "@semantic-release/exec"
|
- - "@semantic-release/exec"
|
||||||
- publishCmd: |
|
- publishCmd: |
|
||||||
goreleaser release --clean --timeout 60m
|
VERSION=${nextRelease.version} GORELEASER_TIMEOUT=60m ./var/windows/goreleaser-release-with-msi.sh
|
||||||
VERSION=${nextRelease.version} ./var/windows/build-msi.sh
|
|
||||||
./var/windows/upload-msi-release.sh ${nextRelease.gitTag}
|
|
||||||
|
|
||||||
tagFormat: '${version}'
|
tagFormat: '${version}'
|
||||||
|
|
|
||||||
2
Makefile
2
Makefile
|
|
@ -72,4 +72,4 @@ clean:
|
||||||
config-tool:
|
config-tool:
|
||||||
cd service && go run cmd/config-tool/main.go
|
cd service && go run cmd/config-tool/main.go
|
||||||
|
|
||||||
.PHONY: proto service
|
.PHONY: proto service windows-resources windows-msi
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@
|
||||||
</Directory>
|
</Directory>
|
||||||
|
|
||||||
<DirectoryRef Id="ConfigDir">
|
<DirectoryRef Id="ConfigDir">
|
||||||
<Component Id="ConfigFile" Guid="A1B2C3D4-E5F6-7890-ABCD-EF1234567890" Win64="yes">
|
<Component Id="ConfigFile" Guid="A1B2C3D4-E5F6-7890-ABCD-EF1234567890" Win64="yes" Permanent="yes" NeverOverwrite="yes">
|
||||||
<File
|
<File
|
||||||
Id="ConfigYaml"
|
Id="ConfigYaml"
|
||||||
Source="$(var.ConfigSource)"
|
Source="$(var.ConfigSource)"
|
||||||
|
|
|
||||||
|
|
@ -20,11 +20,11 @@ if ! command -v wixl >/dev/null || ! command -v wixl-heat >/dev/null; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
normalize_windows_version() {
|
normalize_msi_version() {
|
||||||
local raw="${1#v}"
|
local raw="${1#v}"
|
||||||
raw="${raw%%-*}"
|
raw="${raw%%-*}"
|
||||||
if [[ ! "${raw}" =~ ^[0-9]+(\.[0-9]+){0,3}$ ]]; then
|
if [[ ! "${raw}" =~ ^[0-9]+(\.[0-9]+){0,3}$ ]]; then
|
||||||
echo "0.0.0.0"
|
echo "0.0.0"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
local -a parts=()
|
local -a parts=()
|
||||||
|
|
@ -32,8 +32,7 @@ normalize_windows_version() {
|
||||||
local major="${parts[0]:-0}"
|
local major="${parts[0]:-0}"
|
||||||
local minor="${parts[1]:-0}"
|
local minor="${parts[1]:-0}"
|
||||||
local patch="${parts[2]:-0}"
|
local patch="${parts[2]:-0}"
|
||||||
local build="${parts[3]:-0}"
|
printf '%s.%s.%s' "${major}" "${minor}" "${patch}"
|
||||||
printf '%s.%s.%s.%s' "${major}" "${minor}" "${patch}" "${build}"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
VERSION="${VERSION:-}"
|
VERSION="${VERSION:-}"
|
||||||
|
|
@ -44,7 +43,7 @@ if [[ -z "${VERSION}" ]]; then
|
||||||
echo "Could not determine release version; set VERSION explicitly" >&2
|
echo "Could not determine release version; set VERSION explicitly" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
WINDOWS_VERSION="$(normalize_windows_version "${VERSION}")"
|
MSI_VERSION="$(normalize_msi_version "${VERSION}")"
|
||||||
|
|
||||||
STAGING="$(mktemp -d)"
|
STAGING="$(mktemp -d)"
|
||||||
APP_STAGING="$(mktemp -d)"
|
APP_STAGING="$(mktemp -d)"
|
||||||
|
|
@ -82,7 +81,7 @@ cp -a "${SOURCE_ROOT}/webui/." "${APP_STAGING}/webui/"
|
||||||
wixl \
|
wixl \
|
||||||
-v \
|
-v \
|
||||||
-a x64 \
|
-a x64 \
|
||||||
-D "Version=${WINDOWS_VERSION}" \
|
-D "Version=${MSI_VERSION}" \
|
||||||
-D "Win64=yes" \
|
-D "Win64=yes" \
|
||||||
-D "SourceDir=${APP_STAGING}" \
|
-D "SourceDir=${APP_STAGING}" \
|
||||||
-D "ConfigSource=${SOURCE_ROOT}/config.yaml" \
|
-D "ConfigSource=${SOURCE_ROOT}/config.yaml" \
|
||||||
|
|
|
||||||
|
|
@ -70,14 +70,16 @@ fi
|
||||||
WINDOWS_VERSION="$(normalize_windows_version "$(resolve_version "${1:-}")")"
|
WINDOWS_VERSION="$(normalize_windows_version "$(resolve_version "${1:-}")")"
|
||||||
echo "Generating Windows resources for version ${WINDOWS_VERSION}"
|
echo "Generating Windows resources for version ${WINDOWS_VERSION}"
|
||||||
|
|
||||||
|
TOOL_BIN="$(mktemp -d)/bin"
|
||||||
|
export GOBIN="${TOOL_BIN}"
|
||||||
go install "github.com/josephspurrier/goversioninfo/cmd/goversioninfo@${GOVERSIONINFO_VERSION}"
|
go install "github.com/josephspurrier/goversioninfo/cmd/goversioninfo@${GOVERSIONINFO_VERSION}"
|
||||||
|
|
||||||
WORK_DIR="$(mktemp -d)"
|
WORK_DIR="$(mktemp -d)"
|
||||||
trap 'rm -rf "${WORK_DIR}"' EXIT
|
trap 'rm -rf "${WORK_DIR}" "${TOOL_BIN%/*}"' EXIT
|
||||||
|
|
||||||
(
|
(
|
||||||
cd "${WORK_DIR}"
|
cd "${WORK_DIR}"
|
||||||
goversioninfo \
|
"${TOOL_BIN}/goversioninfo" \
|
||||||
-64 \
|
-64 \
|
||||||
-platform-specific \
|
-platform-specific \
|
||||||
-icon="${ICON_PATH}" \
|
-icon="${ICON_PATH}" \
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
TIMEOUT="${GORELEASER_TIMEOUT:-60m}"
|
||||||
|
|
||||||
|
if [[ -z "${VERSION:-}" ]]; then
|
||||||
|
echo "VERSION is required to build the Windows MSI" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
goreleaser release --clean --timeout "${TIMEOUT}" --skip=checksum,publish "$@"
|
||||||
|
|
||||||
|
"${SCRIPT_DIR}/build-msi.sh"
|
||||||
|
|
||||||
|
goreleaser release --timeout "${TIMEOUT}" \
|
||||||
|
--skip=validate,before,build,archive,nfpm,docker,sign,sbom,after,announce "$@"
|
||||||
|
|
@ -25,11 +25,16 @@ if ! command -v gh >/dev/null; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
checksums_path="${DIST_DIR}/checksums.txt"
|
checksums_path="${DIST_DIR}/checksums.txt"
|
||||||
if [[ -f "${checksums_path}" ]] && ! grep -qF " ${MSI_NAME}" "${checksums_path}"; then
|
new_checksum="$(cd "${DIST_DIR}" && sha256sum "${MSI_NAME}")"
|
||||||
(
|
if [[ -f "${checksums_path}" ]] && grep -qF " ${MSI_NAME}" "${checksums_path}"; then
|
||||||
cd "${DIST_DIR}"
|
tmp="$(mktemp)"
|
||||||
sha256sum "${MSI_NAME}"
|
grep -vF " ${MSI_NAME}" "${checksums_path}" > "${tmp}"
|
||||||
) >> "${checksums_path}"
|
printf '%s\n' "${new_checksum}" >> "${tmp}"
|
||||||
|
mv "${tmp}" "${checksums_path}"
|
||||||
|
elif [[ -f "${checksums_path}" ]]; then
|
||||||
|
printf '%s\n' "${new_checksum}" >> "${checksums_path}"
|
||||||
|
else
|
||||||
|
printf '%s\n' "${new_checksum}" > "${checksums_path}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
gh release upload "${TAG}" "${MSI_PATH}" --clobber
|
gh release upload "${TAG}" "${MSI_PATH}" --clobber
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue