name: Create Release on: workflow_dispatch: inputs: version: description: 'Release version (e.g., v1.0.0)' required: true type: string profile: description: 'Module profile for this release' required: false type: string default: 'RealmMaster' prerelease: description: 'Mark as pre-release' required: false type: boolean default: false jobs: create-release: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Prepare release variables run: | VERSION="${{ github.event.inputs.version }}" PROFILE="${{ github.event.inputs.profile }}" PROFILE_TAG=$(echo "${PROFILE}" | tr '[:upper:]' '[:lower:]' | tr '_' '-') echo "VERSION=${VERSION}" >> $GITHUB_ENV echo "PROFILE=${PROFILE}" >> $GITHUB_ENV echo "PROFILE_TAG=${PROFILE_TAG}" >> $GITHUB_ENV # Get build date from Docker Hub image (or use current date) BUILD_DATE=$(date +%Y%m%d) echo "BUILD_DATE=${BUILD_DATE}" >> $GITHUB_ENV # Get AzerothCore commit from local-storage if available if [ -d "local-storage/source/azerothcore-playerbots" ]; then ACORE_COMMIT=$(cd local-storage/source/azerothcore-playerbots && git rev-parse --short HEAD) else ACORE_COMMIT="unknown" fi echo "ACORE_COMMIT=${ACORE_COMMIT}" >> $GITHUB_ENV - name: Read module list from profile run: | PROFILE_FILE="config/module-profiles/${PROFILE}.json" if [ ! -f "$PROFILE_FILE" ]; then echo "ERROR: Profile file not found: $PROFILE_FILE" exit 1 fi # Extract module count MODULE_COUNT=$(python3 -c "import json; data=json.load(open('$PROFILE_FILE')); print(len(data.get('modules', [])))") echo "MODULE_COUNT=${MODULE_COUNT}" >> $GITHUB_ENV # Extract modules for release notes python3 -c "import json; data=json.load(open('$PROFILE_FILE')); print('\n'.join(['- ' + m for m in data.get('modules', [])]))" > modules.txt - name: Create deployment package run: | PACKAGE_NAME="azerothcore-realmmaster-${VERSION}-${PROFILE_TAG}" mkdir -p "${PACKAGE_NAME}" # Copy essential deployment files cp .env.prebuilt "${PACKAGE_NAME}/.env.prebuilt" cp docker-compose.yml "${PACKAGE_NAME}/docker-compose.yml" cp deploy.sh "${PACKAGE_NAME}/deploy.sh" cp status.sh "${PACKAGE_NAME}/status.sh" cp cleanup.sh "${PACKAGE_NAME}/cleanup.sh" cp README.md "${PACKAGE_NAME}/README.md" # Copy scripts directory cp -r scripts "${PACKAGE_NAME}/scripts" # Copy config directory cp -r config "${PACKAGE_NAME}/config" # Copy docs directory cp -r docs "${PACKAGE_NAME}/docs" # Create a quick start guide specific to this release cat > "${PACKAGE_NAME}/QUICKSTART.md" <> $GITHUB_ENV - name: Generate release notes run: | cat > release_notes.md <> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "**Version**: ${{ env.VERSION }}" >> $GITHUB_STEP_SUMMARY echo "**Profile**: ${{ env.PROFILE }}" >> $GITHUB_STEP_SUMMARY echo "**Modules**: ${{ env.MODULE_COUNT }}" >> $GITHUB_STEP_SUMMARY echo "**Package**: ${{ env.PACKAGE_NAME }}.zip" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "📦 Release available at:" >> $GITHUB_STEP_SUMMARY echo "https://github.com/${{ github.repository }}/releases/tag/${{ env.VERSION }}" >> $GITHUB_STEP_SUMMARY