#!/bin/bash # Copyright (C) 2026 Ilker Manap # SPDX-License-Identifier: AGPL-3.0-or-later # # Creates a Gitea release and uploads the image, its checksum and the # corresponding-source offer. # # publish-release.sh # # Requires GITEA_API and GITEA_TOKEN in the environment. set -euo pipefail TAG="${1:?tag required}" VERSION="${2:?version required}" DIST="${3:?dist directory required}" # DIST cagiranin dizinine goreli olabilir; repo kokune gecmeden once mutlaklastir. DIST="$(cd "$DIST" && pwd)" # make degiskenlerini okuyabilmek icin depo koku gerekiyor. cd "$(dirname "$0")/../.." : "${GITEA_API:?GITEA_API required}" : "${GITEA_TOKEN:?GITEA_TOKEN required}" REPO_URL="${GITHUB_SERVER_URL:-}/${GITHUB_REPOSITORY:-}" RUN="${GITHUB_RUN_NUMBER:-manual}" SHA="${GITHUB_SHA:-}" IMAGE=$(basename "$(ls "$DIST"/maas-image-*.tar.gz)") MAAS_ARCH=$(make -s print-var VAR=MAAS_ARCH) IMAGE_NAME=$(make -s print-var VAR=IMAGE_NAME) BODY=$(cat </dev/null; then TAG="${TAG}-r${RUN}" echo "tag already exists; publishing as ${TAG} instead" fi PAYLOAD=$(TAG="$TAG" VERSION="$VERSION" BODY="$BODY" SHA="$SHA" python3 -c ' import json, os print(json.dumps({ "tag_name": os.environ["TAG"], "name": "Samba AD DC image (samba %s)" % os.environ["VERSION"], "body": os.environ["BODY"], "draft": False, "prerelease": False, "target_commitish": os.environ["SHA"], }))') ID=$(curl -fsS -X POST \ -H "Authorization: token ${GITEA_TOKEN}" \ -H 'Content-Type: application/json' \ -d "$PAYLOAD" "${GITEA_API}/releases" \ | python3 -c 'import json,sys; print(json.load(sys.stdin)["id"])') echo "release id: ${ID}" for f in "$DIST"/*; do [ -f "$f" ] || continue echo "uploading $(basename "$f") ($(du -h "$f" | cut -f1))" curl -fsS -X POST \ -H "Authorization: token ${GITEA_TOKEN}" \ -F "attachment=@${f}" \ "${GITEA_API}/releases/${ID}/assets?name=$(basename "$f")" >/dev/null done echo "published: ${REPO_URL}/releases/tag/${TAG}"