iocd-v10.4.0-nightly.260615T2239 #294
Workflow file for this run
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: Notify Release | |
| on: | |
| release: | |
| types: [published] | |
| # Manual trigger for testing | |
| workflow_dispatch: | |
| inputs: | |
| release_name: | |
| description: 'Release name to simulate (e.g., component-v1.0.0)' | |
| required: true | |
| default: 'iocd-v10.0.1-dev.260313T1423' | |
| is_prerelease: | |
| description: 'Is this a prerelease?' | |
| required: true | |
| type: boolean | |
| default: true | |
| is_dev: | |
| description: 'Is this a dev build?' | |
| required: true | |
| type: boolean | |
| default: true | |
| is_nightly: | |
| description: 'Is this a nightly build?' | |
| required: true | |
| type: boolean | |
| default: false | |
| jobs: | |
| notify-repositories: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Extract release information | |
| id: release-info | |
| run: | | |
| # Use workflow_dispatch inputs if available, otherwise use release event data | |
| if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then | |
| RELEASE_NAME="${{ inputs.release_name }}" | |
| IS_PRERELEASE="${{ inputs.is_prerelease }}" | |
| IS_DEV="${{ inputs.is_dev }}" | |
| IS_NIGHTLY="${{ inputs.is_nightly }}" | |
| else | |
| RELEASE_NAME="${{ github.event.release.tag_name }}" | |
| IS_PRERELEASE="${{ github.event.release.prerelease }}" | |
| # Detect dev/nightly from version pattern | |
| # -dev. = dev build, -nightly. = nightly build, -build. = pre-release or stable | |
| if [[ "$RELEASE_NAME" == *"-dev."* ]]; then | |
| IS_DEV="true" | |
| else | |
| IS_DEV="false" | |
| fi | |
| if [[ "$RELEASE_NAME" == *"-nightly."* ]]; then | |
| IS_NIGHTLY="true" | |
| else | |
| IS_NIGHTLY="false" | |
| fi | |
| fi | |
| # Extract component name (string before the first dash) | |
| COMPONENT_NAME=$(echo "$RELEASE_NAME" | cut -d'-' -f1) | |
| # Extract version (everything after -v) | |
| # Format: <component-name>-v<version> (e.g., iocd-v10.0.1-build.251127T2020 -> 10.0.1-build.251127T2020) | |
| VERSION=$(echo "$RELEASE_NAME" | sed 's/^[^-]*-v//') | |
| # Determine release type string | |
| if [ "$IS_NIGHTLY" == "true" ]; then | |
| RELEASE_TYPE="nightly" | |
| elif [ "$IS_DEV" == "true" ]; then | |
| RELEASE_TYPE="dev" | |
| elif [ "$IS_PRERELEASE" == "true" ]; then | |
| RELEASE_TYPE="pre-release" | |
| else | |
| RELEASE_TYPE="stable" | |
| fi | |
| echo "release_name=$RELEASE_NAME" >> $GITHUB_OUTPUT | |
| echo "component_name=$COMPONENT_NAME" >> $GITHUB_OUTPUT | |
| echo "version=$VERSION" >> $GITHUB_OUTPUT | |
| echo "is_prerelease=$IS_PRERELEASE" >> $GITHUB_OUTPUT | |
| echo "is_dev=$IS_DEV" >> $GITHUB_OUTPUT | |
| echo "is_nightly=$IS_NIGHTLY" >> $GITHUB_OUTPUT | |
| echo "release_type=$RELEASE_TYPE" >> $GITHUB_OUTPUT | |
| echo "📦 Release Name: $RELEASE_NAME" | |
| echo "🧩 Component Name: $COMPONENT_NAME" | |
| echo "🏷️ Version: $VERSION" | |
| echo "🎯 Release Type: $RELEASE_TYPE" | |
| echo " - Is Prerelease: $IS_PRERELEASE" | |
| echo " - Is Dev: $IS_DEV" | |
| echo " - Is Nightly: $IS_NIGHTLY" | |
| - name: Trigger workflows in other repositories | |
| uses: actions/github-script@v7 | |
| with: | |
| github-token: ${{ secrets.IOCD_SEED_COMPONENTS_WRITE }} | |
| script: | | |
| const releaseName = '${{ steps.release-info.outputs.release_name }}'; | |
| const componentName = '${{ steps.release-info.outputs.component_name }}'; | |
| const version = '${{ steps.release-info.outputs.version }}'; | |
| const releaseType = '${{ steps.release-info.outputs.release_type }}'; | |
| const isPrerelease = ${{ steps.release-info.outputs.is_prerelease }}; | |
| const isDev = ${{ steps.release-info.outputs.is_dev }}; | |
| const isNightly = ${{ steps.release-info.outputs.is_nightly }}; | |
| // List of repositories to notify (add your repository names here) | |
| const repositoriesToNotify = [ | |
| 'iocd-seed' | |
| ]; | |
| const owner = '${{ github.repository_owner }}'; | |
| for (const repo of repositoriesToNotify) { | |
| try { | |
| await github.rest.repos.createDispatchEvent({ | |
| owner: owner, | |
| repo: repo, | |
| event_type: 'component-release', | |
| client_payload: { | |
| release_name: releaseName, | |
| component_name: componentName, | |
| version: version, | |
| release_type: releaseType, | |
| is_prerelease: isPrerelease, | |
| is_dev: isDev, | |
| is_nightly: isNightly, | |
| source_repo: '${{ github.repository }}' | |
| } | |
| }); | |
| console.log(`✅ Successfully notified ${repo} (${releaseType})`); | |
| } catch (error) { | |
| console.error(`❌ Failed to notify ${repo}: ${error.message}`); | |
| } | |
| } |