Files
dotnet-pack/entrypoint.sh
T

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