This is an automated email from the ASF dual-hosted git repository.
epugh pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr-mcp.git
The following commit(s) were added to refs/heads/main by this push:
new 91d15e0 ci: remove nightly-build.yml (broken at startup, unwanted)
(#155)
91d15e0 is described below
commit 91d15e0c047b76f473b5baca17e6d3f9d027be3a
Author: Aditya Parikh <[email protected]>
AuthorDate: Fri Jun 19 12:16:09 2026 -0400
ci: remove nightly-build.yml (broken at startup, unwanted) (#155)
nightly-build.yml failed at startup on every scan (zero jobs) because of a
secrets-in-if expression: 'if: ${{ secrets.APACHE_NIGHTLIES_USER != '\'''\''
}}'. The secrets context is not available in if: conditions, so GitHub rejects
the workflow at parse time — a separate cause from the docker/login-action
allow-list issue fixed in #153/#154.
The nightlies.apache.org upload was only a placeholder and a daily nightly
pre-release isn't wanted, so remove the workflow entirely rather than fix the
parse error. dev-docs/WORKFLOWS.md and dev-docs/DOCKER_PUBLISHING.md are
updated to drop nightly references (dedicated section, comparison-matrix
column, scenario, registry list, tagging).
Note: the 'COMPARISON WITH OTHER WORKFLOWS' header comments in
build-and-publish.yml, release-publish.yml, and atr-release.yml still list
nightly-build; left as-is to avoid conflicts with #153/#154 which modify the
first two.
Signed-off-by: adityamparikh <[email protected]>
Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
---
.github/workflows/nightly-build.yml | 216 ------------------------------------
dev-docs/DOCKER_PUBLISHING.md | 21 +---
dev-docs/WORKFLOWS.md | 123 ++------------------
3 files changed, 15 insertions(+), 345 deletions(-)
diff --git a/.github/workflows/nightly-build.yml
b/.github/workflows/nightly-build.yml
deleted file mode 100644
index 5f70074..0000000
--- a/.github/workflows/nightly-build.yml
+++ /dev/null
@@ -1,216 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# ╔═══════════════════════════════════════════════════════════════════════════╗
-# ║ NIGHTLY BUILD WORKFLOW
║
-# ║ (Latest Unstable Builds)
║
-# ╚═══════════════════════════════════════════════════════════════════════════╝
-#
-# PURPOSE: Automated nightly builds for testing latest changes
-#
-# WHEN TO USE:
-# -----------
-# ✅ Automatic daily at 2 AM UTC
-# ✅ For testing latest main branch changes
-# ✅ Provides unstable/preview builds
-# ✅ Publishes to apache/solr-mcp-nightly
-# ❌ DO NOT use for production releases
-#
-# COMPARISON WITH OTHER WORKFLOWS:
-# --------------------------------
-# nightly-build.yml (THIS FILE):
-# - Purpose: Nightly builds
-# - Trigger: Scheduled (2 AM UTC)
-# - Docker Hub: apache/solr-mcp-nightly
-# - Stability: Unstable/preview
-# - Use for: Testing latest changes
-#
-# build-and-publish.yml:
-# - Purpose: Development CI/CD
-# - Trigger: Automatic (push/PR)
-# - Docker Hub: Personal namespace
-# - Use for: Daily development work
-#
-# release-publish.yml:
-# - Purpose: Official ASF releases
-# - Trigger: Manual (after vote)
-# - Docker Hub: apache/solr-mcp
-# - Stability: Stable/production
-# - Use for: Production releases
-#
-# atr-release.yml:
-# - Purpose: Future ATR automation
-# - Status: Blocked (needs automated signing)
-# - Use for: When ATR is ready
-#
-# ────────────────────────────────────────────────────────────────────────────
-#
-# Nightly Build Workflow for Apache Solr MCP
-# ===========================================
-#
-# This workflow creates nightly builds for the Solr MCP project and publishes
-# them to Apache's nightly infrastructure and Docker Hub preview registry.
-#
-# Schedule:
-# ---------
-# Runs daily at 2 AM UTC or on manual trigger
-#
-# Artifacts Published:
-# --------------------
-# 1. Source tarball to https://nightlies.apache.org/solr/mcp/
-# 2. Docker image to apache/solr-mcp-nightly on Docker Hub
-# 3. Build artifacts to GitHub releases (pre-release)
-
-name: Nightly Build
-
-# Triggers for the workflow
-# - schedule: runs automatically via cron at a fixed time (02:00 UTC daily)
-# - workflow_dispatch: allow maintainers to run the workflow manually and pass
inputs
-on:
- schedule:
- # Run at 2 AM UTC every day
- - cron: '0 2 * * *'
- workflow_dispatch: # Allow manual trigger
- inputs:
- # Optional input to skip Docker publishing if you only want to build
artifacts
- skip_docker:
- description: 'Skip Docker publishing'
- required: false
- type: boolean
- default: false
-
-jobs:
- nightly-build:
- name: Nightly Build and Publish
- runs-on: ubuntu-latest
-
- # Permissions required by this job:
- # - contents:write → needed to create GitHub pre-releases and upload
assets
- # - packages:write → needed when pushing container images to registries
- permissions:
- contents: write
- packages: write
-
- steps:
- - name: Checkout code
- uses: actions/checkout@v4
-
- # Set up Java environment using centralized configuration
- # See .github/actions/setup-java/action.yml to update Java version
- - name: Set up Java
- uses: ./.github/actions/setup-java
-
- - name: Generate nightly version
- id: version
- run: |
- # Generate version with date stamp
- DATE_STAMP=$(date +%Y%m%d)
- SHORT_SHA=$(echo ${{ github.sha }} | cut -c1-7)
- NIGHTLY_VERSION="nightly-${DATE_STAMP}-${SHORT_SHA}"
- echo "version=$NIGHTLY_VERSION" >> $GITHUB_OUTPUT
- echo "date=$DATE_STAMP" >> $GITHUB_OUTPUT
-
- - name: Build project
- run: ./gradlew build
-
- - name: Create source distribution
- run: |
- # Create source tarball
- mkdir -p build/distributions
- tar czf build/distributions/solr-mcp-${{
steps.version.outputs.version }}-src.tar.gz \
- --exclude='.git' \
- --exclude='build' \
- --exclude='.gradle' \
- --exclude='*.iml' \
- --exclude='.idea' \
- .
-
- # Generate SHA512 checksum
- cd build/distributions
- sha512sum solr-mcp-${{ steps.version.outputs.version }}-src.tar.gz >
\
- solr-mcp-${{ steps.version.outputs.version }}-src.tar.gz.sha512
-
- - name: Build and publish Docker image to apache/solr-mcp-nightly
- if: ${{ !inputs.skip_docker }}
- run: |
- # Build and push to apache/solr-mcp-nightly
- # Note: Requires DOCKERHUB_APACHE_USERNAME and
DOCKERHUB_APACHE_TOKEN secrets
- # These should be set up with Apache PMC credentials
- if [[ -n "${{ secrets.DOCKERHUB_APACHE_USERNAME }}" ]]; then
- ./gradlew jib \
- -Djib.to.image=apache/solr-mcp-nightly:${{
steps.version.outputs.version }} \
- -Djib.to.auth.username=${{ secrets.DOCKERHUB_APACHE_USERNAME }} \
- -Djib.to.auth.password=${{ secrets.DOCKERHUB_APACHE_TOKEN }} \
- -Djib.to.tags=${{ steps.version.outputs.version }},latest-nightly
- fi
-
- - name: Upload to Apache Nightlies
- if: ${{ secrets.APACHE_NIGHTLIES_USER != '' }}
- run: |
- # Upload to Apache nightlies infrastructure
- # Requires APACHE_NIGHTLIES_USER and APACHE_NIGHTLIES_KEY secrets
- # These are typically available to Apache committers
-
- # Create directory structure
- UPLOAD_DIR="solr/mcp/${{ steps.version.outputs.date }}"
-
- # Use rsync or scp to upload to nightlies.apache.org
- # This is a placeholder - actual implementation depends on Apache
infra access
- echo "Would upload to: https://nightlies.apache.org/${UPLOAD_DIR}/"
- echo "Files to upload:"
- ls -la build/distributions/
-
- - name: Create GitHub pre-release
- # ASF policy disallows non-allow-listed third-party actions; use the gh
- # CLI (already used below to prune old nightlies) instead of
- # softprops/action-gh-release.
- env:
- GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- NIGHTLY_DATE: ${{ steps.version.outputs.date }}
- run: |
- cat > "${RUNNER_TEMP}/nightly-notes.md" <<'NOTES'
- ## Nightly Build
-
- **Date**: ${{ steps.version.outputs.date }}
- **Commit**: ${{ github.sha }}
-
- ### Docker Image
- ```bash
- docker pull apache/solr-mcp-nightly:${{
steps.version.outputs.version }}
- ```
-
- ### Source Distribution
- - [solr-mcp-${{ steps.version.outputs.version
}}-src.tar.gz](https://github.com/${{ github.repository
}}/releases/download/nightly-${{ steps.version.outputs.date }}/solr-mcp-${{
steps.version.outputs.version }}-src.tar.gz)
-
- **Note**: This is a nightly build and not an official Apache release.
- NOTES
- gh release create "nightly-${NIGHTLY_DATE}" \
- --title "Nightly Build ${NIGHTLY_DATE}" \
- --prerelease \
- --notes-file "${RUNNER_TEMP}/nightly-notes.md" \
- build/distributions/solr-mcp-*.tar.gz \
- build/distributions/solr-mcp-*.sha512 \
- build/libs/solr-mcp-*.jar
-
- - name: Clean up old nightly releases
- run: |
- # Keep only the last 7 nightly builds
- # This helps manage storage and keeps releases clean
- gh release list --limit 100 | grep "^nightly-" | tail -n +8 | cut
-f1 | while read tag; do
- echo "Deleting old nightly release: $tag"
- gh release delete "$tag" --yes --cleanup-tag
- done
- env:
- GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
\ No newline at end of file
diff --git a/dev-docs/DOCKER_PUBLISHING.md b/dev-docs/DOCKER_PUBLISHING.md
index 56c354d..010a8fd 100644
--- a/dev-docs/DOCKER_PUBLISHING.md
+++ b/dev-docs/DOCKER_PUBLISHING.md
@@ -1,6 +1,6 @@
# Docker Publishing Guide for Apache Solr MCP
-This guide documents the Docker image publishing process for Apache Solr MCP,
including nightly builds, release candidates, and official releases.
+This guide documents the Docker image publishing process for Apache Solr MCP,
including release candidates and official releases.
## Overview
@@ -8,7 +8,6 @@ The Solr MCP project publishes Docker images to multiple
registries:
1. **GitHub Container Registry (GHCR)**: `ghcr.io/apache/solr-mcp`
2. **Docker Hub Official**: `apache/solr-mcp` (requires Apache PMC credentials)
-3. **Docker Hub Nightly**: `apache/solr-mcp-nightly` (for pre-release builds)
## Build System
@@ -29,20 +28,7 @@ Currently, this repository does not define an automated
workflow for per-merge d
- `ghcr.io/{owner}/solr-mcp:latest`
- No ASF vote required for dev images (they are not releases and must be
clearly marked as such).
-### 2. Nightly Builds
-
-**Workflow**: `.github/workflows/nightly-build.yml`
-
-- **Schedule**: Daily at 2 AM UTC
-- **Images Published**:
- - `apache/solr-mcp-nightly:nightly-YYYYMMDD-SHA`
- - `apache/solr-mcp-nightly:latest-nightly`
-- **Artifacts**:
- - Source tarball to `https://nightlies.apache.org/solr/mcp/`
- - GitHub pre-release with build artifacts
-- **No ASF vote required**
-
-### 3. Official Releases
+### 2. Official Releases
**Workflow**: `.github/workflows/release-publish.yml`
@@ -63,7 +49,7 @@ Currently, this repository does not define an automated
workflow for per-merge d
- The authoritative ASF release is the signed source distribution published to
the ASF distribution system (`dist.apache.org` / `downloads.apache.org`
mirrors). Docker images and other binaries are considered convenience binaries
and must be built from the voted source, but they are not the release of record.
- Releases require a minimum 72-hour vote with at least three +1 binding PMC
votes. Only after the vote passes may convenience binaries (e.g., Docker
images) be published.
- Release artifacts must be signed by the Release Manager using their PGP key
that is present in the project `KEYS` file. Automated signing via ASF Infra may
be possible but must be explicitly arranged with INFRA; manual RM signing
remains the baseline.
-- Nightly and per-merge builds are allowed as non-release artifacts. They must
be clearly marked as such and must not be uploaded to the ASF release
distribution system.
+- Per-merge and ad-hoc development builds are allowed as non-release
artifacts. They must be clearly marked as such and must not be uploaded to the
ASF release distribution system.
## ASF Release Process
@@ -220,7 +206,6 @@ If ARM64 builds fail:
## Versioning Strategy
- **Main branch**: `VERSION-SNAPSHOT-SHA` (e.g., `1.0.0-SNAPSHOT-a1b2c3d`)
-- **Nightly**: `nightly-YYYYMMDD-SHA` (e.g., `nightly-20240115-a1b2c3d`)
- **Release**: Semantic versioning `MAJOR.MINOR.PATCH` (e.g., `1.0.0`)
## Release Checklist
diff --git a/dev-docs/WORKFLOWS.md b/dev-docs/WORKFLOWS.md
index e988d3d..c11309b 100644
--- a/dev-docs/WORKFLOWS.md
+++ b/dev-docs/WORKFLOWS.md
@@ -8,7 +8,6 @@ This guide explains when and how to use each GitHub Actions
workflow in the proj
|------------------------------------------------|-----------------------|----------------------|------------|------------------------|
| [build-and-publish.yml](#build-and-publishyml) | Development CI/CD |
Automatic (push/PR) | ✅ Active | Daily development |
| [release-publish.yml](#release-publishyml) | Official ASF releases |
Manual (after vote) | ✅ Active | Production releases |
-| [nightly-build.yml](#nightly-buildyml) | Nightly builds |
Scheduled (2 AM UTC) | ✅ Active | Latest unstable builds |
| [atr-release-test.yml](#atr-release-testyml) | ATR testing |
Manual (safe mode) | ✅ Ready | Testing ATR workflow |
| [atr-release.yml](#atr-releaseyml) | ATR production |
Manual (blocked) | ⚠️ Blocked | Future ATR releases |
@@ -236,94 +235,6 @@ on:
---
-### nightly-build.yml
-
-**Purpose**: Automated nightly builds for testing latest changes
-
-#### When to Use
-
-- ✅ Automatic daily at 2 AM UTC
-- ✅ For testing bleeding-edge changes
-- ✅ When you want the absolute latest build
-
-#### When NOT to Use
-
-- ❌ For production use (unstable)
-- ❌ For official releases
-
-#### Triggers
-
-```yaml
-on:
- schedule:
- - cron: '0 2 * * *' # 2 AM UTC daily
- workflow_dispatch:
- inputs:
- skip_docker: # Skip Docker publishing
-```
-
-#### What It Does
-
-1. **Builds** the project from `main` branch
-2. **Creates source distribution** with date stamp
-3. **Publishes Docker image** to:
- - Docker Hub: `apache/solr-mcp-nightly:nightly-YYYYMMDD-SHA`
- - Tag: `latest-nightly`
-4. **Uploads to Apache Nightlies** (if configured)
-5. **Creates GitHub pre-release** with artifacts
-6. **Cleans up** old nightly builds (keeps last 7)
-
-#### Image Tagging Strategy
-
-- **Nightly tag**: `nightly-20250112-a1b2c3d`
-- **Latest nightly**: `latest-nightly`
-
-#### Required Secrets
-
-- `DOCKERHUB_APACHE_USERNAME` - Apache PMC Docker Hub credentials
-- `DOCKERHUB_APACHE_TOKEN` - Apache PMC Docker Hub token
-- `APACHE_NIGHTLIES_USER` (optional) - For nightlies.apache.org uploads
-- `APACHE_NIGHTLIES_KEY` (optional) - SSH key for nightlies
-
-#### How to Use
-
-**Automatic (Default)**:
-
-```bash
-# Runs automatically every night at 2 AM UTC
-# No action needed
-```
-
-**Manual Trigger**:
-
-```bash
-# Via GitHub UI: Actions → Nightly Build → Run workflow
-# Or via CLI:
-gh workflow run nightly-build.yml
-
-# Skip Docker publishing:
-gh workflow run nightly-build.yml -f skip_docker=true
-```
-
-**Using Nightly Images**:
-
-```bash
-# Pull today's nightly
-docker pull apache/solr-mcp-nightly:latest-nightly
-
-# Pull specific date
-docker pull apache/solr-mcp-nightly:nightly-20250112-a1b2c3d
-```
-
-#### Example Use Cases
-
-- Testing unreleased features
-- Catching bugs early in development
-- Integration testing with latest changes
-- Providing preview builds to early adopters
-
----
-
### atr-release-test.yml
**Purpose**: Test Apache Trusted Releases (ATR) workflow safely
@@ -493,16 +404,16 @@ gh workflow run atr-release.yml \
## Workflow Comparison Matrix
-| Feature | build-and-publish | release-publish | nightly-build
| atr-release-test | atr-release |
-|----------------------|-------------------|-----------------|--------------------|------------------|-------------|
-| **Status** | ✅ Active | ✅ Active | ✅ Active
| ✅ Ready | ⚠️ Blocked |
-| **Trigger** | Automatic | Manual | Scheduled
| Manual | Manual |
-| **Docker Namespace** | Personal/GHCR | `apache/*` |
`apache/*-nightly` | Test | `apache/*` |
-| **MCP Registry** | ❌ No | ✅ Yes | ❌ No
| ❌ No | ✅ Yes |
-| **ASF Vote** | ❌ Not required | ✅ Required | ❌ Not required
| ❌ Not required | ✅ Required |
-| **Signing** | ❌ No | ⚠️ Manual | ❌ No
| ⚠️ Simulated | ✅ Automated |
-| **Production Ready** | ❌ No | ✅ Yes | ❌ No
| ❌ No | ⚠️ Future |
-| **Can Test Now** | ✅ Yes | ✅ Yes | ✅ Yes
| ✅ Yes | ❌ No |
+| Feature | build-and-publish | release-publish |
atr-release-test | atr-release |
+|----------------------|-------------------|-----------------|------------------|-------------|
+| **Status** | ✅ Active | ✅ Active | ✅ Ready
| ⚠️ Blocked |
+| **Trigger** | Automatic | Manual | Manual
| Manual |
+| **Docker Namespace** | Personal/GHCR | `apache/*` | Test
| `apache/*` |
+| **MCP Registry** | ❌ No | ✅ Yes | ❌ No
| ✅ Yes |
+| **ASF Vote** | ❌ Not required | ✅ Required | ❌ Not required
| ✅ Required |
+| **Signing** | ❌ No | ⚠️ Manual | ⚠️ Simulated
| ✅ Automated |
+| **Production Ready** | ❌ No | ✅ Yes | ❌ No
| ⚠️ Future |
+| **Can Test Now** | ✅ Yes | ✅ Yes | ✅ Yes
| ❌ No |
---
@@ -535,16 +446,7 @@ gh workflow run release-publish.yml \
-f release_candidate=rc1
```
-### Scenario 3: I want to test the latest unreleased code
-
-**Use**: `nightly-build.yml` (automatic daily)
-
-```bash
-# Pull the latest nightly
-docker pull apache/solr-mcp-nightly:latest-nightly
-```
-
-### Scenario 4: I want to prepare for ATR
+### Scenario 3: I want to prepare for ATR
**Use**: `atr-release-test.yml` (manual testing)
@@ -554,7 +456,7 @@ gh workflow run atr-release-test.yml \
-f dry_run=true # Safe mode - no uploads
```
-### Scenario 5: I'm ready to use ATR for releases
+### Scenario 4: I'm ready to use ATR for releases
**Use**: `atr-release.yml` (blocked - see prerequisites)
@@ -639,7 +541,6 @@ gh secret set ASF_USERNAME --body "your-asf-id"
# Trigger workflows manually
gh workflow run build-and-publish.yml
gh workflow run release-publish.yml -f release_version=1.0.0 -f
release_candidate=rc1
-gh workflow run nightly-build.yml
gh workflow run atr-release-test.yml -f dry_run=true
# View workflow runs