Update hdrhistogram #2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Update hdrhistogram | |
on: | |
schedule: | |
- cron: "0 4 * * 0" | |
workflow_dispatch: | |
jobs: | |
check-update: | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
pull-requests: write | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Check hdrhistogram version | |
id: check-version | |
run: | | |
set -euo pipefail | |
# Extract the commit hash from the line after COMMIT | |
CURRENT_VERSION=$(awk '/[[:space:]]*COMMIT[[:space:]]*$/{getline; gsub(/^[[:space:]]+|[[:space:]]+$/,"",$0); print}' cmake/targets/BuildHdrHistogram.cmake) | |
if [ -z "$CURRENT_VERSION" ]; then | |
echo "Error: Could not find COMMIT line in BuildHdrHistogram.cmake" | |
exit 1 | |
fi | |
# Validate that it looks like a git hash | |
if ! [[ $CURRENT_VERSION =~ ^[0-9a-f]{40}$ ]]; then | |
echo "Error: Invalid git hash format in BuildHdrHistogram.cmake" | |
echo "Found: $CURRENT_VERSION" | |
echo "Expected: 40 character hexadecimal string" | |
exit 1 | |
fi | |
echo "current=$CURRENT_VERSION" >> $GITHUB_OUTPUT | |
LATEST_RELEASE=$(curl -sL https://api.github.com/repos/HdrHistogram/HdrHistogram_c/releases/latest) | |
if [ -z "$LATEST_RELEASE" ]; then | |
echo "Error: Failed to fetch latest release from GitHub API" | |
exit 1 | |
fi | |
LATEST_TAG=$(echo "$LATEST_RELEASE" | jq -r '.tag_name') | |
if [ -z "$LATEST_TAG" ] || [ "$LATEST_TAG" = "null" ]; then | |
echo "Error: Could not extract tag name from GitHub API response" | |
exit 1 | |
fi | |
LATEST_TAG_SHA=$(curl -sL "https://api.github.com/repos/HdrHistogram/HdrHistogram_c/git/refs/tags/$LATEST_TAG" | jq -r '.object.sha') | |
if [ -z "$LATEST_TAG_SHA" ] || [ "$LATEST_TAG_SHA" = "null" ]; then | |
echo "Error: Could not fetch SHA for tag $LATEST_TAG" | |
exit 1 | |
fi | |
LATEST_SHA=$(curl -sL "https://api.github.com/repos/HdrHistogram/HdrHistogram_c/git/tags/$LATEST_TAG_SHA" | jq -r '.object.sha') | |
if [ -z "$LATEST_SHA" ] || [ "$LATEST_SHA" = "null" ]; then | |
echo "Error: Could not fetch SHA for tag $LATEST_TAG @ $LATEST_TAG_SHA" | |
exit 1 | |
fi | |
if ! [[ $LATEST_SHA =~ ^[0-9a-f]{40}$ ]]; then | |
echo "Error: Invalid SHA format received from GitHub" | |
echo "Found: $LATEST_SHA" | |
echo "Expected: 40 character hexadecimal string" | |
exit 1 | |
fi | |
echo "latest=$LATEST_SHA" >> $GITHUB_OUTPUT | |
echo "tag=$LATEST_TAG" >> $GITHUB_OUTPUT | |
- name: Update version if needed | |
if: success() && steps.check-version.outputs.current != steps.check-version.outputs.latest | |
run: | | |
set -euo pipefail | |
# Handle multi-line format where COMMIT and its value are on separate lines | |
sed -i -E '/[[:space:]]*COMMIT[[:space:]]*$/{n;s/[[:space:]]*([0-9a-f]+)[[:space:]]*$/ ${{ steps.check-version.outputs.latest }}/}' cmake/targets/BuildHdrHistogram.cmake | |
- name: Create Pull Request | |
if: success() && steps.check-version.outputs.current != steps.check-version.outputs.latest | |
uses: peter-evans/create-pull-request@v4 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
add-paths: | | |
cmake/targets/BuildHdrHistogram.cmake | |
commit-message: "deps: update hdrhistogram to ${{ steps.check-version.outputs.tag }} (${{ steps.check-version.outputs.latest }})" | |
title: "deps: update hdrhistogram to ${{ steps.check-version.outputs.tag }}" | |
delete-branch: true | |
branch: deps/update-cares-${{ github.run_number }} | |
body: | | |
## What does this PR do? | |
Updates hdrhistogram to version ${{ steps.check-version.outputs.tag }} | |
Compare: https://github.com/HdrHistogram/HdrHistogram_c/compare/${{ steps.check-version.outputs.current }}...${{ steps.check-version.outputs.latest }} | |
Auto-updated by [this workflow](https://github.com/oven-sh/bun/actions/workflows/update-cares.yml) |