Skip to content

Commit 1b043ae

Browse files
dmitriplotnikovcopybara-github
authored andcommitted
Rename Linux release script to release_linux.sh and align with macOS
Rename build_release_linux.sh to release_linux.sh. Align its structure and capabilities with release_macos.sh, adding support for dry runs, robust temp directory cleanup, and customizable CIBWHEEL_BIN. PiperOrigin-RevId: 922429425
1 parent 78b2d31 commit 1b043ae

2 files changed

Lines changed: 81 additions & 0 deletions

File tree

release/kokoro/release_linux.cfg

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# proto-file: //devtools/kokoro/config/proto/build.proto
2+
# proto-message: BuildConfig
3+
4+
build_file: "cel-python/release/kokoro/release_linux.sh"
5+
timeout_mins: 120

release/kokoro/release_linux.sh

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
#!/bin/bash
2+
set -e
3+
4+
# If running locally (not on Kokoro), authenticate with gcloud.
5+
if [ -z "${KOKORO_BUILD_ID}" ]; then
6+
if ! gcloud auth application-default print-access-token --quiet > /dev/null; then
7+
gcloud auth application-default login
8+
fi
9+
fi
10+
11+
pip install -U keyring keyrings.google-artifactregistry-auth twine cibuildwheel
12+
13+
REPO_DIR=$(mktemp -d)
14+
echo "Created temporary directory: ${REPO_DIR}"
15+
16+
# Ensure the temporary directory is removed on script exit
17+
trap 'echo "Cleaning up temporary directory: ${REPO_DIR}"; rm -rf "${REPO_DIR}"' EXIT
18+
19+
if [ "${DRY_RUN}" = "true" ]; then
20+
echo "[DRY RUN] Using local Kokoro clone instead of cloning main."
21+
SRC_DIR="$(cd "$(dirname "$0")/../.." && pwd)"
22+
pushd "${SRC_DIR}"
23+
# Get the latest tag or fallback
24+
VERSION=$(git tag --sort=-v:refname 2>/dev/null | head -n 1 || true)
25+
if [ -z "${VERSION}" ]; then
26+
VERSION="0.1.2"
27+
fi
28+
popd
29+
else
30+
pushd "${REPO_DIR}"
31+
git clone https://github.com/cel-expr/cel-python.git
32+
cd cel-python
33+
# Get the latest version tag
34+
VERSION=$(git tag --sort=-v:refname | head -n 1)
35+
SRC_DIR="${REPO_DIR}/cel-python"
36+
popd
37+
fi
38+
39+
# Strip initial "v" if present
40+
VERSION=${VERSION#v}
41+
echo "Building release for version: ${VERSION}"
42+
43+
TMP_DIR=$(mktemp -d)
44+
echo "Build directory: ${TMP_DIR}"
45+
46+
# Add trap cleanup for TMP_DIR as well
47+
trap 'echo "Cleaning up temporary directories: ${REPO_DIR} ${TMP_DIR}"; rm -rf "${REPO_DIR}" "${TMP_DIR}"' EXIT
48+
49+
pushd "${TMP_DIR}"
50+
51+
cp -r "${SRC_DIR}"/{*,.*} . 2>/dev/null || true
52+
cp "${SRC_DIR}"/release/* . 2>/dev/null || true
53+
rm -rf cel_expr_python/*_test.py
54+
55+
# Check if pyproject.toml exists before running sed
56+
if [ -f pyproject.toml ]; then
57+
sed -i "" "s/\$VERSION/${VERSION}/g" pyproject.toml || sed -i "s/\$VERSION/${VERSION}/g" pyproject.toml
58+
fi
59+
60+
echo "Running cibuildwheel: ${CIBWHEEL_BIN}"
61+
# Default CIBWHEEL_BIN if not set
62+
if [ -z "${CIBWHEEL_BIN}" ]; then
63+
CIBWHEEL_BIN="python3 -m cibuildwheel"
64+
fi
65+
${CIBWHEEL_BIN} --platform linux --output-dir dist
66+
67+
if [ "${DRY_RUN}" = "true" ]; then
68+
echo "[DRY RUN] Skipping upload to PyPI exit gate."
69+
else
70+
echo "Uploading to OSS Exit Gate for autopush to PyPI..."
71+
python3 -m twine upload --repository-url https://us-python.pkg.dev/oss-exit-gate-prod/cel-expr-python--pypi dist/*
72+
fi
73+
74+
popd
75+
76+
echo "cel-expr-python ${VERSION} built and uploaded for release by OSS Exit Gate."

0 commit comments

Comments
 (0)