Split & Release #5
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: 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 |