Skip to content

Check for New Release in Another Repo #2462

Check for New Release in Another Repo

Check for New Release in Another Repo #2462

Workflow file for this run

name: Check for New Release in Another Repo
on:
schedule:
- cron: '0 * * * *' # Every hour
workflow_dispatch:
permissions:
contents: read
actions: write # Required to delete the cache
jobs:
check_release:
runs-on: ubuntu-latest
env:
cache-key: previous-release # Key for the cache
steps:
# Step 1: Set up GitHub CLI
- name: Set up GitHub CLI
run: |
sudo apt-get install -y gh
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Step 2: Restore Cache
- name: Restore Cache
id: cache-restore
uses: actions/cache/restore@v3
with:
path: .previous_release
key: ${{ env.cache-key }}
# Step 3: Fetch the latest release from the other repository
- name: Get latest release from other repository
id: get_release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
repo_owner="Byte-Nova"
repo_name="Rimworld-Together"
latest_release=$(gh api repos/${repo_owner}/${repo_name}/releases/latest --jq '.tag_name')
echo "LATEST_RELEASE=$latest_release" >> $GITHUB_ENV
# Step 4: Compare with the previous release (stored in cache)
- name: Check for new release
id: check_release
run: |
# Check if the previous release file exists; if not, initialize it
if [ -f .previous_release ]; then
previous_release=$(cat .previous_release)
else
echo "DEBUG: .previous_release file not found. Initializing..."
previous_release="none"
fi
# Get the latest release version
latest_release="${{ env.LATEST_RELEASE }}"
echo "Previous release: $previous_release"
echo "Latest release: $latest_release"
# Compare and decide whether to update .previous_release
if [ "$previous_release" != "$latest_release" ]; then
echo "New release detected!"
echo "$latest_release" > .previous_release # Update with new release
echo "NEW_RELEASE=true" >> $GITHUB_ENV
else
echo "No new release."
echo "NEW_RELEASE=false" >> $GITHUB_ENV
fi
# Step 5: Delete Previous Cache
- name: Checkout Repository
uses: actions/checkout@v3
- name: Debug Current Directory
run: |
echo "Current working directory: $(pwd)"
ls -la
- name: Delete Previous Cache
if: env.NEW_RELEASE == 'true' && steps.cache-restore.outputs.cache-hit == 'true'
continue-on-error: true
run: |
gh extension install actions/gh-actions-cache --force
echo "Deleting cache with key: ${{ env.cache-key }}"
gh actions-cache delete "${{ env.cache-key }}" --confirm
working-directory: ${{ github.workspace }}
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Step 6: Save New Cache
- name: Recreate Cache File
if: env.NEW_RELEASE == 'true'
run: |
echo "Recreating .previous_release..."
latest_release="${{ env.LATEST_RELEASE }}"
if [ ! -f .previous_release ]; then
echo "$latest_release" > .previous_release # Update with new release
fi
cat .previous_release
- name: Save Cache
if: env.NEW_RELEASE == 'true'
uses: actions/cache/save@v3
with:
path: .previous_release
key: ${{ env.cache-key }}
# Step 7: Trigger the docker-build.yml workflow if a new release is detected
- name: Trigger Docker build workflow
if: env.NEW_RELEASE == 'true'
run: |
curl -X POST \
-H "Accept: application/vnd.github.v3+json" \
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
https://api.github.com/repos/${{ github.repository }}/actions/workflows/docker-build.yml/dispatches \
-d '{"ref": "main"}'