From 4ab0df340b7b194597f9f6bfc8e5dcbbda2f1a5a Mon Sep 17 00:00:00 2001 From: librelois <elois@ifee.fr> Date: Sun, 15 Jul 2018 16:23:58 +0200 Subject: [PATCH] [ci] add automatic windows build --- .gitlab-ci.yml | 20 ++++++- release/arch/win64/build-win64.sh | 90 +++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+), 2 deletions(-) create mode 100644 release/arch/win64/build-win64.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 67ef629f..675b83f6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -117,7 +117,23 @@ pages: only: - dev -package:test:linux-x64: +package:test:win64: + tags: + - redshift-rust-win64 + before_script: + - rustc --version && cargo --version + stage: package + script: + - bash "release/arch/win64/build-win64.sh" "$(date +%Y%m%d).$(date +%H%M).$(date +%S)" + artifacts: + paths: + - work/bin/ + expire_in: 1 weeks + except: + - tags + when: manual + +package:test:linux64: <<: *rust_stable_env stage: package script: @@ -134,7 +150,7 @@ package:test:linux-x64: - tags when: manual -package:prod:linux-x64: +package:prod:linux64: <<: *rust_stable_env stage: package script: diff --git a/release/arch/win64/build-win64.sh b/release/arch/win64/build-win64.sh new file mode 100644 index 00000000..40577674 --- /dev/null +++ b/release/arch/win64/build-win64.sh @@ -0,0 +1,90 @@ +#!/bin/bash + +if [[ -z "${1}" ]]; then + echo "Fatal: no version given to build script" + exit 1 +fi + +# --------- +# Functions +# --------- + +# Create description. +# - +# Parameters: +# 1. Initial file name. +# 2. Building type (either “desktop” or “server”). +# 3. Category (OS, distribution). +create_desc() { + cat >"${1}".desc <<-EOF + { + "version": "${DURS_TAG}", + "job": "${CI_JOB_ID}", + "type": "${2^}", + "category": "${3}", + "arch": "x64" + } + EOF +} + +# ----------- +# Prepare +# ----------- + +DURS_TAG="v${1}" +DURS_VER=" ${1}" +TARGET="x86_64-pc-windows-gnu" + +#rustup add target ${TARGET} || exit 1 + +# ----------- +# Folders +# ----------- + +ROOT="${PWD}" +WORK_NAME=work +WORK="${ROOT}/${WORK_NAME}" +DOWNLOADS="${WORK}/downloads" +RELEASES="${WORK}/releases" +BIN="${WORK}/bin" + +mkdir -p "${DOWNLOADS}" "${RELEASES}" "${BIN}" || exit 1 +rm -rf "${BIN}/"*.{deb,tar.gz}{,.desc} # Clean up + +# ----------- +# Downloads +# ----------- + +cd "${DOWNLOADS}" + +# ----------- +# Releases +# ----------- + +# Prepare sources +mkdir -p "${RELEASES}/durs" || exit 1 +cp -r $(find "${ROOT}" -mindepth 1 -maxdepth 1 ! -name "${WORK_NAME}") "${RELEASES}/durs" || exit 1 +cd "${RELEASES}/durs" +rm -Rf .gitignore .git || exit 1 # Remove git files + +# Build binary +echo ">> Building binary..." +cd "${ROOT}" +cargo build --target=${TARGET} --release --no-default-features || exit 1 + +mkdir -p "${RELEASES}/server_" || exit 1 +cp "${ROOT}/target/${TARGET}/release/durs.exe" "${RELEASES}/server_/" || exit 1 +#cp "${ROOT}/target/${TARGET}/release/durs" "${RELEASES}/desktop_" || exit 1 + +# Copy logo +#cp "${ROOT}/images/duniter-rs.png" "${RELEASES}/server_/" || exit 1 +#cp "${ROOT}/images/duniter-rs.png" "${RELEASES}/desktop_" || exit 1 + + +# --------------- +# Build .zip +# --------------- + +cd "${RELEASES}/server_" +zip "${BIN}/duniter-rust-server-${DURS_TAG}-windows-x64.zip" * || exit 1 +create_desc "${BIN}/duniter-rust-server-${DURS_TAG}-windows-x64.zip" "Server" "Windows" -- GitLab