Files
EIS-dotnet/scripts/publish-platform-packages.sh
biss 3162a5d3a3
Build and publish packages and Docker images / Test, build and publish (push) Failing after 9m24s
修改自动构建
2026-07-24 08:51:24 +08:00

81 lines
2.4 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
version="${1:?Usage: publish-platform-packages.sh <version> [output-directory] [default|all]}"
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
repository_root="$(cd "${script_dir}/.." && pwd)"
output_directory="${2:-${repository_root}/artifacts/packages}"
platform_profile="${3:-default}"
web_project="${repository_root}/src/Eis.Web/Eis.Web.csproj"
tools_project="${repository_root}/src/Eis.Tools/Eis.Tools.csproj"
case "${platform_profile}" in
default)
runtime_identifiers=(win-x64 linux-x64 linux-arm64)
;;
all)
runtime_identifiers=(win-x64 win-arm64 linux-x64 linux-arm64 osx-x64 osx-arm64)
;;
*)
echo "Unknown platform profile: ${platform_profile}. Expected default or all." >&2
exit 2
;;
esac
if [[ "${output_directory}" != /* ]]; then
output_directory="${repository_root}/${output_directory}"
fi
mkdir -p "${output_directory}"
output_directory="$(cd "${output_directory}" && pwd)"
temporary_root="$(mktemp -d)"
trap 'rm -rf "${temporary_root}"' EXIT
for runtime_identifier in "${runtime_identifiers[@]}"; do
package_name="eis-${version}-${runtime_identifier}"
package_root="${temporary_root}/${package_name}"
application_root="${package_root}/app"
echo "Publishing ${package_name}..."
dotnet publish "${web_project}" \
--configuration Release \
--runtime "${runtime_identifier}" \
--self-contained true \
--output "${application_root}" \
-p:Version="${version}"
dotnet publish "${tools_project}" \
--configuration Release \
--runtime "${runtime_identifier}" \
--self-contained true \
--output "${application_root}" \
-p:Version="${version}"
cp "${repository_root}/README.md" "${package_root}/README.md"
cp "${repository_root}/LICENSE" "${package_root}/LICENSE"
cp "${repository_root}/.env.example" "${package_root}/.env.example"
if [[ "${runtime_identifier}" == win-* ]]; then
(
cd "${temporary_root}"
zip -q -r "${output_directory}/${package_name}.zip" "${package_name}"
)
else
tar -C "${temporary_root}" -czf "${output_directory}/${package_name}.tar.gz" "${package_name}"
fi
rm -rf "${package_root}"
done
(
cd "${output_directory}"
find . -maxdepth 1 -type f \
\( -name "eis-${version}-*.zip" -o -name "eis-${version}-*.tar.gz" \) \
-printf '%f\n' \
| sort \
| xargs sha256sum > SHA256SUMS
sha256sum --check SHA256SUMS
)
echo "Platform packages were written to ${output_directory}"