Skip to content

iocd-v10.3.0-nightly.260602T2240 #280

iocd-v10.3.0-nightly.260602T2240

iocd-v10.3.0-nightly.260602T2240 #280

Workflow file for this run

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}`);
}
}