Skip to content

Split & Release

Split & Release #5

Workflow file for this run

name: Split
on:
workflow_dispatch:
inputs:
version:
description: "New version"
required: true
packages:
description: "Packages to deploy (JSON object with package info)"
required: true
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Show input
run: |
echo "Deploying version: ${{ github.event.inputs.version }}"
echo "Packages received"
- name: Parse packages safely
id: parse_packages
run: |
# Create a temp file to avoid shell injection
cat > packages.json << 'EOF'
${{ github.event.inputs.packages }}
EOF
echo "Raw packages file:"
cat packages.json
echo "Parsed packages:"
jq -r 'to_entries[] | "\(.key): Messages=[\(.value["release-message"] | join(", "))] Stability=\(.value["minimum-stability"] // "unknown") Type=\(.value.type // "unknown")"' packages.json
# Create package list for later steps
jq -r 'keys[]' packages.json > package-list.txt
echo "Package names only:"
cat package-list.txt
- name: Process each package
run: |
while IFS= read -r package; do
echo "Processing package: $package"
# Get all info for this package
messages=$(jq -r --arg pkg "$package" '.[$pkg]["release-message"] | join("; ")' packages.json)
stability=$(jq -r --arg pkg "$package" '.[$pkg]["minimum-stability"] // "unknown"' packages.json)
pkg_type=$(jq -r --arg pkg "$package" '.[$pkg].type // "unknown"' packages.json)
visibility=$(jq -r --arg pkg "$package" '.[$pkg].visibility // "unknown"' packages.json)
echo " Messages: $messages"
echo " Stability: $stability"
echo " Type: $pkg_type"
echo " Visibility: $visibility"
# Your deployment logic here can now use all this information
# e.g., clone repo, create release with proper stability, etc.
done < package-list.txt