Skip to content

Release New Versions #587

Release New Versions

Release New Versions #587

Workflow file for this run

name: Release New Versions
on:
push:
branches:
- main
paths:
- recipes/rubies.yml
- .github/workflows/release-new.yml
workflow_dispatch:
inputs:
replace_all:
description: 'Replace all existing releases'
required: false
type: boolean
default: false
schedule:
- cron: "30 */12 * * *"
concurrency:
group: release-new
cancel-in-progress: false
permissions:
contents: write
jobs:
check-and-release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: ruby/setup-ruby@v1
with:
ruby-version: .ruby-version
- name: Find versions to release
id: find-versions
env:
GITHUB_TOKEN: ${{ github.token }}
run: |
recipe_versions=$(ruby -ryaml -e 'puts YAML.load_file("recipes/rubies.yml").fetch("rubies").keys')
if [[ "${{ inputs.replace_all }}" == "true" ]]; then
versions_to_release="$recipe_versions"
echo "Replacing all releases"
else
existing_releases=$(gh release list --limit 100 --json tagName --jq '.[].tagName' || true)
versions_to_release=""
for version in $recipe_versions; do
if ! echo "$existing_releases" | grep -q "^${version}$"; then
versions_to_release="$versions_to_release $version"
fi
done
echo "Found versions without releases: $versions_to_release"
fi
versions_json=$(echo $versions_to_release | tr ' ' '\n' | grep -v '^$' | jq -R . | jq -s -c .)
echo "versions=$versions_json" >> "$GITHUB_OUTPUT"
latest_stable=$(ruby -ryaml -e 'puts YAML.load_file("recipes/rubies.yml").fetch("rubies").keys.grep(/\A\d+\.\d+\.\d+\z/).sort_by { |v| v.split(".").map(&:to_i) }.last')
echo "latest_stable=$latest_stable" >> "$GITHUB_OUTPUT"
echo "Latest stable version: $latest_stable"
- name: Trigger releases
if: steps.find-versions.outputs.versions != '[]'
env:
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
run: |
versions='${{ steps.find-versions.outputs.versions }}'
latest_stable='${{ steps.find-versions.outputs.latest_stable }}'
for version in $(echo "$versions" | jq -r '.[]'); do
if [[ "$version" == "$latest_stable" ]]; then
echo "Triggering release for $version (latest)"
gh workflow run release.yml -f version="$version" -f latest=true
else
echo "Triggering release for $version"
gh workflow run release.yml -f version="$version"
fi
sleep 5
done