fix: Build MSI in goreleaser build
This commit is contained in:
parent
abf4fc2cf0
commit
b749b797f8
|
|
@ -43,6 +43,8 @@ builds:
|
|||
|
||||
checksum:
|
||||
name_template: 'checksums.txt'
|
||||
extra_files:
|
||||
- glob: ./dist/OliveTin-windows-amd64.msi
|
||||
snapshot:
|
||||
version_template: "{{ .Branch }}-{{ .ShortCommit }}"
|
||||
changelog:
|
||||
|
|
@ -176,6 +178,8 @@ nfpms:
|
|||
dst: /usr/share/man/man1/OliveTin.1.gz
|
||||
|
||||
release:
|
||||
extra_files:
|
||||
- glob: ./dist/OliveTin-windows-amd64.msi
|
||||
footer: |
|
||||
## Container images (from GitHub)
|
||||
|
||||
|
|
|
|||
|
|
@ -9,8 +9,6 @@ plugins:
|
|||
- '@semantic-release/git'
|
||||
- - "@semantic-release/exec"
|
||||
- publishCmd: |
|
||||
goreleaser release --clean --timeout 60m
|
||||
VERSION=${nextRelease.version} ./var/windows/build-msi.sh
|
||||
./var/windows/upload-msi-release.sh ${nextRelease.gitTag}
|
||||
VERSION=${nextRelease.version} GORELEASER_TIMEOUT=60m ./var/windows/goreleaser-release-with-msi.sh
|
||||
|
||||
tagFormat: '${version}'
|
||||
|
|
|
|||
2
Makefile
2
Makefile
|
|
@ -72,4 +72,4 @@ clean:
|
|||
config-tool:
|
||||
cd service && go run cmd/config-tool/main.go
|
||||
|
||||
.PHONY: proto service
|
||||
.PHONY: proto service windows-resources windows-msi
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@
|
|||
</Directory>
|
||||
|
||||
<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
|
||||
Id="ConfigYaml"
|
||||
Source="$(var.ConfigSource)"
|
||||
|
|
|
|||
|
|
@ -20,11 +20,11 @@ if ! command -v wixl >/dev/null || ! command -v wixl-heat >/dev/null; then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
normalize_windows_version() {
|
||||
normalize_msi_version() {
|
||||
local raw="${1#v}"
|
||||
raw="${raw%%-*}"
|
||||
if [[ ! "${raw}" =~ ^[0-9]+(\.[0-9]+){0,3}$ ]]; then
|
||||
echo "0.0.0.0"
|
||||
echo "0.0.0"
|
||||
return
|
||||
fi
|
||||
local -a parts=()
|
||||
|
|
@ -32,8 +32,7 @@ normalize_windows_version() {
|
|||
local major="${parts[0]:-0}"
|
||||
local minor="${parts[1]:-0}"
|
||||
local patch="${parts[2]:-0}"
|
||||
local build="${parts[3]:-0}"
|
||||
printf '%s.%s.%s.%s' "${major}" "${minor}" "${patch}" "${build}"
|
||||
printf '%s.%s.%s' "${major}" "${minor}" "${patch}"
|
||||
}
|
||||
|
||||
VERSION="${VERSION:-}"
|
||||
|
|
@ -44,7 +43,7 @@ if [[ -z "${VERSION}" ]]; then
|
|||
echo "Could not determine release version; set VERSION explicitly" >&2
|
||||
exit 1
|
||||
fi
|
||||
WINDOWS_VERSION="$(normalize_windows_version "${VERSION}")"
|
||||
MSI_VERSION="$(normalize_msi_version "${VERSION}")"
|
||||
|
||||
STAGING="$(mktemp -d)"
|
||||
APP_STAGING="$(mktemp -d)"
|
||||
|
|
@ -82,7 +81,7 @@ cp -a "${SOURCE_ROOT}/webui/." "${APP_STAGING}/webui/"
|
|||
wixl \
|
||||
-v \
|
||||
-a x64 \
|
||||
-D "Version=${WINDOWS_VERSION}" \
|
||||
-D "Version=${MSI_VERSION}" \
|
||||
-D "Win64=yes" \
|
||||
-D "SourceDir=${APP_STAGING}" \
|
||||
-D "ConfigSource=${SOURCE_ROOT}/config.yaml" \
|
||||
|
|
|
|||
|
|
@ -70,14 +70,16 @@ fi
|
|||
WINDOWS_VERSION="$(normalize_windows_version "$(resolve_version "${1:-}")")"
|
||||
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}"
|
||||
|
||||
WORK_DIR="$(mktemp -d)"
|
||||
trap 'rm -rf "${WORK_DIR}"' EXIT
|
||||
trap 'rm -rf "${WORK_DIR}" "${TOOL_BIN%/*}"' EXIT
|
||||
|
||||
(
|
||||
cd "${WORK_DIR}"
|
||||
goversioninfo \
|
||||
"${TOOL_BIN}/goversioninfo" \
|
||||
-64 \
|
||||
-platform-specific \
|
||||
-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
|
||||
|
||||
checksums_path="${DIST_DIR}/checksums.txt"
|
||||
if [[ -f "${checksums_path}" ]] && ! grep -qF " ${MSI_NAME}" "${checksums_path}"; then
|
||||
(
|
||||
cd "${DIST_DIR}"
|
||||
sha256sum "${MSI_NAME}"
|
||||
) >> "${checksums_path}"
|
||||
new_checksum="$(cd "${DIST_DIR}" && sha256sum "${MSI_NAME}")"
|
||||
if [[ -f "${checksums_path}" ]] && grep -qF " ${MSI_NAME}" "${checksums_path}"; then
|
||||
tmp="$(mktemp)"
|
||||
grep -vF " ${MSI_NAME}" "${checksums_path}" > "${tmp}"
|
||||
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
|
||||
|
||||
gh release upload "${TAG}" "${MSI_PATH}" --clobber
|
||||
|
|
|
|||
Loading…
Reference in New Issue