73 lines
1.8 KiB
Bash
73 lines
1.8 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
separator() {
|
|
printf '%s\n' "=================================================="
|
|
}
|
|
|
|
section() {
|
|
printf '\n%s\n' "$1"
|
|
printf '%s\n' "--------------------------------------------------"
|
|
}
|
|
|
|
require_var() {
|
|
local name="$1"
|
|
local value="${!name:-}"
|
|
|
|
printf '%s=%s\n' "$name" "$value"
|
|
if [ -z "$value" ] || [ "$value" = "null" ]; then
|
|
printf '錯誤: %s 不可為空或 null\n' "$name" >&2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
separator
|
|
section "參數檢查"
|
|
|
|
require_var GITEA_SERVER_URL
|
|
require_var GITEA_REPOSITORY
|
|
require_var CONFIGURATION
|
|
require_var RELEASE_PROJECT
|
|
require_var RELEASE_VERSION
|
|
require_var RELEASE_AUTHOR
|
|
require_var RELEASE_COMPANY
|
|
require_var RELEASE_DESCRIPTION
|
|
|
|
readonly RELEASE_COPYRIGHT="Copyright (c) $(date +%Y) ${RELEASE_COMPANY}"
|
|
readonly RELEASE_URL="${GITEA_SERVER_URL}/${GITEA_REPOSITORY}/src/branch/master"
|
|
readonly OUTPUT_DIR="${WORKSPACE}/output"
|
|
|
|
printf 'RELEASE_COPYRIGHT=%s\n' "$RELEASE_COPYRIGHT"
|
|
printf 'RELEASE_URL=%s\n' "$RELEASE_URL"
|
|
printf 'OUTPUT_DIR=%s\n' "$OUTPUT_DIR"
|
|
|
|
section "打包 NUGET 套件"
|
|
|
|
if [ ! -d "$RELEASE_PROJECT" ]; then
|
|
printf '錯誤: 找不到專案目錄 %s\n' "$RELEASE_PROJECT" >&2
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p "$OUTPUT_DIR"
|
|
|
|
printf '專案目錄=%s\n' "$RELEASE_PROJECT"
|
|
printf '組建配置=%s\n' "$CONFIGURATION"
|
|
printf '版本號=%s\n' "$RELEASE_VERSION"
|
|
|
|
cd "$RELEASE_PROJECT"
|
|
dotnet pack \
|
|
-c "$CONFIGURATION" \
|
|
-o "$OUTPUT_DIR" \
|
|
/p:PackageVersion="$RELEASE_VERSION" \
|
|
/p:RepositoryUrl="$RELEASE_URL" \
|
|
/p:RepositoryType=git \
|
|
/p:Authors="$RELEASE_AUTHOR" \
|
|
/p:Company="$RELEASE_COMPANY" \
|
|
/p:Copyright="$RELEASE_COPYRIGHT" \
|
|
/p:Description="$RELEASE_DESCRIPTION"
|
|
|
|
section "完成"
|
|
printf '輸出位置=%s\n' "$OUTPUT_DIR"
|
|
separator
|