Files
ma/nextflow/release.sh
2026-04-29 23:01:54 +02:00

95 lines
2.7 KiB
Bash
Executable File

#!/bin/bash
#
# Nextflow Release Script
#
# This script performs the complete Nextflow release process including:
# - Building and assembling artifacts
# - Uploading to S3 and Maven repositories
# - Releasing plugins to registry
# - Creating GitHub releases with signed artifacts
#
# REQUIRED SECRETS/ENVIRONMENT VARIABLES FOR GITHUB ACTIONS:
#
# AWS S3 Deployment:
# NXF_AWS_ACCESS - AWS Access Key for deploying to s3://www2.nextflow.io
# NXF_AWS_SECRET - AWS Secret Key for S3 deployment
#
# Maven Repository (Seqera S3-based):
# AWS_ACCESS_KEY_ID - AWS credentials for Maven repository access
# AWS_SECRET_ACCESS_KEY - AWS secret for Maven repository access
#
# GitHub Integration:
# GITHUB_TOKEN - For creating releases and uploading assets
#
# Plugin Registry:
# NPR_API_URL - Nextflow Plugin Registry API URL
# NPR_API_KEY - Nextflow Plugin Registry API key
#
# Container Registry Authentication:
# DOCKERHUB_USERNAME - Docker Hub username for container publishing
# DOCKERHUB_TOKEN - Docker Hub token/password for container publishing
# SEQERA_PUBLIC_CR_PASSWORD - Seqera public container registry password
#
# Usage: Only run when commit message contains '[release]'
#
set -e
echo "=== Starting Nextflow Release Process ==="
echo "Commit message: ${GITHUB_HEAD_COMMIT_MESSAGE:-$(git log -1 --pretty=format:'%s')}"
# Check required environment variables
echo "=== Checking required environment variables ==="
REQUIRED_VARS=(
"NXF_AWS_ACCESS"
"NXF_AWS_SECRET"
"AWS_ACCESS_KEY_ID"
"AWS_SECRET_ACCESS_KEY"
"GITHUB_TOKEN"
"GITHUB_RUN_NUMBER"
"GITHUB_SHA"
"NPR_API_URL"
"NPR_API_KEY"
)
MISSING_VARS=()
for var in "${REQUIRED_VARS[@]}"; do
if [ -z "${!var}" ]; then
MISSING_VARS+=("$var")
else
echo "$var is set"
fi
done
if [ ${#MISSING_VARS[@]} -ne 0 ]; then
echo "❌ ERROR: The following required environment variables are not set:"
for var in "${MISSING_VARS[@]}"; do
echo " - $var"
done
echo "Please ensure all required environment variables are configured before running the release."
exit 1
fi
echo "✅ All required environment variables are set"
echo "🔧 === Step 1: Assemble, upload, and deploy ==="
make assemble upload deploy
echo "✅ Step 1 completed successfully"
echo ""
echo "📦 === Step 2: Publish artifacts ==="
make publish-artifacts
echo "✅ Step 2 completed successfully"
echo ""
echo "🔌 === Step 3: Release plugins ==="
make release-plugins
echo "✅ Step 3 completed successfully"
echo ""
echo "🚀 === Step 4: Final release ==="
make release
echo "✅ Step 4 completed successfully"
echo ""
echo "🎉 === Release process completed successfully ==="