You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iggy.apache.org by pi...@apache.org on 2025/12/01 15:58:39 UTC
(iggy) branch release_script updated (185f90972 -> 7afb23046)
This is an automated email from the ASF dual-hosted git repository.
piotr pushed a change to branch release_script
in repository https://gitbox.apache.org/repos/asf/iggy.git
discard 185f90972 chore(repo): improve release script
new 7afb23046 chore(repo): improve release script
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (185f90972)
\
N -- N -- N refs/heads/release_script (7afb23046)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
scripts/prepare-release.sh | 192 ++++++++-------------------------------------
1 file changed, 31 insertions(+), 161 deletions(-)
(iggy) 01/01: chore(repo): improve release script
Posted by pi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
piotr pushed a commit to branch release_script
in repository https://gitbox.apache.org/repos/asf/iggy.git
commit 7afb230469bc55e778fb0d612cb648056aad8312
Author: spetz <pi...@gmail.com>
AuthorDate: Mon Dec 1 16:51:58 2025 +0100
chore(repo): improve release script
---
scripts/prepare-release.sh | 172 ++++++++-------------------------------------
1 file changed, 31 insertions(+), 141 deletions(-)
diff --git a/scripts/prepare-release.sh b/scripts/prepare-release.sh
index 83e6d46fb..a40991d85 100755
--- a/scripts/prepare-release.sh
+++ b/scripts/prepare-release.sh
@@ -1,5 +1,3 @@
-#!/bin/bash
-
#!/usr/bin/env bash
# Licensed to the Apache Software Foundation (ASF) under one
@@ -19,37 +17,34 @@
# specific language governing permissions and limitations
# under the License.
-# This script is used to prepare the release artifacts for the Apache Iggy project.
+# This script creates reproducible source release archives for Apache Iggy.
+# It uses git archive which produces identical output across all platforms.
set -euo pipefail
-# Determine tar command based on OS
-TAR_CMD="tar"
-OS_NAME=$(uname)
-
-if [[ "$OS_NAME" == "Darwin" ]]; then
- if command -v gtar >/dev/null 2>&1; then
- TAR_CMD="gtar"
- else
- echo "❌ GNU tar (gtar) is required on macOS. Install it with: brew install gnu-tar"
- exit 1
- fi
-fi
-
if [ "$(basename "$PWD")" == "scripts" ]; then
cd ..
fi
-SRC_DIR="./"
-RELEASE_DIR="iggy_release"
-TEMP_DIR="iggy_release_tmp"
+# Ensure we're in a git repository
+if ! git rev-parse --git-dir > /dev/null 2>&1; then
+ echo "Error: Must be run from within the git repository"
+ exit 1
+fi
-rm -rf "$TEMP_DIR"
+RELEASE_DIR="iggy_release"
rm -rf "$RELEASE_DIR"
-mkdir -p "$TEMP_DIR"
mkdir -p "$RELEASE_DIR"
-RELEASE_FILES=(
+# Get version from Cargo.toml
+VERSION=$(grep '^version' "core/server/Cargo.toml" | head -n 1 | cut -d '"' -f2)
+
+echo "Preparing release for version: $VERSION"
+
+ARCHIVE_NAME="iggy-${VERSION}-incubating-src.tar.gz"
+
+# Files/directories to include in the release
+RELEASE_PATHS=(
"Cargo.lock"
"Cargo.toml"
"DEPENDENCIES.md"
@@ -59,9 +54,6 @@ RELEASE_FILES=(
"NOTICE"
"docker-compose.yml"
"justfile"
-)
-
-RELEASE_DIRS=(
"bdd"
"core"
"examples"
@@ -72,125 +64,23 @@ RELEASE_DIRS=(
"web"
)
-IGNORED_FILES=(
- ".DS_Store"
- ".gitignore"
-)
-
-IGNORED_DIRS=(
- "assets"
- "target"
- "node_modules"
- "pkg"
- "build"
- "out"
- "dist"
- "bin"
- "obj"
- "__pycache__"
- ".elixir_ls"
- ".tox"
- ".eggs"
- ".venv"
- ".svelte-kit"
- ".config"
- ".github"
- ".idea"
- ".vscode"
- ".zed"
-)
-
-for file in "${RELEASE_FILES[@]}"; do
- cp "$SRC_DIR/$file" "$TEMP_DIR/"
-done
-
-shopt -s dotglob nullglob
-
-for dir in "${RELEASE_DIRS[@]}"; do
- src="$SRC_DIR/$dir"
- dest="$TEMP_DIR/$dir"
-
- [ -d "$src" ] || continue
- mkdir -p "$dest"
-
- for item in "$src"/*; do
- name=$(basename "$item")
-
- if [[ "$dir" == "web" ]]; then
- if [ -d "$item" ]; then
- for ignored in "${IGNORED_DIRS[@]}"; do
- if [[ "$name" == "$ignored" ]]; then
- continue 2
- fi
- done
- fi
-
- if [ -f "$item" ]; then
- for ignored_file in "${IGNORED_FILES[@]}"; do
- if [[ "$name" == "$ignored_file" ]]; then
- continue 2
- fi
- done
- fi
- fi
-
- if [[ "$dir" == "foreign" && -d "$item" ]]; then
- sdk=$(basename "$item")
- mkdir -p "$dest/$sdk"
-
- for sdk_item in "$item"/*; do
- sdk_name=$(basename "$sdk_item")
-
- if [ -d "$sdk_item" ]; then
- for ignored in "${IGNORED_DIRS[@]}"; do
- if [[ "$sdk_name" == "$ignored" ]]; then
- continue 2
- fi
- done
- fi
-
- if [ -f "$sdk_item" ]; then
- for ignored_file in "${IGNORED_FILES[@]}"; do
- if [[ "$sdk_name" == "$ignored_file" ]]; then
- continue 2
- fi
- done
- fi
-
- cp -r "$sdk_item" "$dest/$sdk/"
- done
-
- continue
- fi
-
- cp -r "$item" "$dest/"
- done
-done
-
-shopt -u dotglob nullglob
-
-
-VERSION=$(grep '^version' "$TEMP_DIR/core/server/Cargo.toml" | head -n 1 | cut -d '"' -f2)
-
-echo "Preparing release for version: $VERSION"
-
-ARCHIVE_NAME="iggy-${VERSION}-incubating-src.tar.gz"
-
-GZIP=-n "$TAR_CMD" --sort=name \
- --mtime='UTC 2020-01-01' \
- --owner=0 --group=0 --numeric-owner \
- -czf "$ARCHIVE_NAME" -C "$TEMP_DIR" .
-
+# Use git archive for reproducible output
+# --prefix adds a top-level directory to the archive
+# --worktree-attributes respects .gitattributes export-ignore
+git archive \
+ --format=tar.gz \
+ --prefix="iggy-${VERSION}-incubating-src/" \
+ -o "$RELEASE_DIR/$ARCHIVE_NAME" \
+ HEAD \
+ "${RELEASE_PATHS[@]}"
+
+# Generate checksum
+cd "$RELEASE_DIR"
CHECKSUM_FILE="${ARCHIVE_NAME}.sha512"
sha512sum "$ARCHIVE_NAME" > "$CHECKSUM_FILE"
-rm -rf "$TEMP_DIR"
-
echo "Release directory: $RELEASE_DIR"
echo "SHA-512 checksum:"
cat "$CHECKSUM_FILE"
-echo "✔ Archive created: $ARCHIVE_NAME"
-echo "✔ Checksum saved to: $CHECKSUM_FILE"
-
-mv "$ARCHIVE_NAME" "$RELEASE_DIR/"
-mv "$CHECKSUM_FILE" "$RELEASE_DIR/"
+echo "Archive created: $ARCHIVE_NAME"
+echo "Checksum saved to: $CHECKSUM_FILE"