Skip to content

Check Upstream Releases #3

Check Upstream Releases

Check Upstream Releases #3

name: Check Upstream Releases
on:
schedule:
# Every Monday at 9am UTC
- cron: "0 9 * * 1"
workflow_dispatch:
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check Tor releases
run: |
CURRENT_TOR="0.4.9.5"
LATEST_TOR=$(curl -s https://api.github.com/repos/torproject/tor/tags | jq -r '.[0].name' | sed 's/^tor-//')
echo "Current Tor: $CURRENT_TOR"
echo "Latest Tor: $LATEST_TOR"
if [ "$CURRENT_TOR" != "$LATEST_TOR" ]; then
echo "::warning::Tor update available: $CURRENT_TOR → $LATEST_TOR"
echo "TOR_UPDATE=$LATEST_TOR" >> $GITHUB_ENV
fi
- name: Check OpenSSL releases
run: |
CURRENT_OPENSSL="3.6.1"
LATEST_OPENSSL=$(curl -s https://api.github.com/repos/openssl/openssl/tags | jq -r '[.[] | select(.name | test("^openssl-3")) | .name][0]' | sed 's/^openssl-//')
echo "Current OpenSSL: $CURRENT_OPENSSL"
echo "Latest OpenSSL: $LATEST_OPENSSL"
if [ "$CURRENT_OPENSSL" != "$LATEST_OPENSSL" ]; then
echo "::warning::OpenSSL update available: $CURRENT_OPENSSL → $LATEST_OPENSSL"
echo "OPENSSL_UPDATE=$LATEST_OPENSSL" >> $GITHUB_ENV
fi
- name: Check libevent releases
run: |
CURRENT_LIBEVENT="2.1.12"
LATEST_LIBEVENT=$(curl -s https://api.github.com/repos/libevent/libevent/releases/latest | jq -r '.tag_name' | sed 's/^release-//' | sed 's/-stable//')
echo "Current libevent: $CURRENT_LIBEVENT"
echo "Latest libevent: $LATEST_LIBEVENT"
if [ "$CURRENT_LIBEVENT" != "$LATEST_LIBEVENT" ]; then
echo "::warning::libevent update available: $CURRENT_LIBEVENT → $LATEST_LIBEVENT"
echo "LIBEVENT_UPDATE=$LATEST_LIBEVENT" >> $GITHUB_ENV
fi
- name: Create issue if updates available
if: env.TOR_UPDATE || env.OPENSSL_UPDATE || env.LIBEVENT_UPDATE
uses: actions/github-script@v7
with:
script: |
const updates = [];
if (process.env.TOR_UPDATE) updates.push(`- **Tor**: → ${process.env.TOR_UPDATE}`);
if (process.env.OPENSSL_UPDATE) updates.push(`- **OpenSSL**: → ${process.env.OPENSSL_UPDATE}`);
if (process.env.LIBEVENT_UPDATE) updates.push(`- **libevent**: → ${process.env.LIBEVENT_UPDATE}`);
const title = `Upstream dependency updates available`;
const body = `The following upstream dependencies have new releases:\n\n${updates.join('\n')}\n\nPlease rebuild the XCFramework with the updated versions.`;
// Check if an open issue already exists
const issues = await github.rest.issues.listForRepo({
owner: context.repo.owner,
repo: context.repo.repo,
state: 'open',
labels: 'upstream-update'
});
if (issues.data.length === 0) {
await github.rest.issues.create({
owner: context.repo.owner,
repo: context.repo.repo,
title,
body,
labels: ['upstream-update']
});
}