Skip to main content
Glama

MCP Memory Service

SECRET_CONDITIONAL_FIX.md4.06 kB
# GitHub Actions Secret Conditional Logic Fix ## Critical Issue Resolved **Date**: 2024-08-24 **Problem**: Workflows failing due to incorrect secret checking syntax in conditionals ### Root Cause GitHub Actions does not support checking if secrets are empty using `!= ''` or `== ''` in conditional expressions. ### Incorrect Syntax (BROKEN) ```yaml # ❌ This syntax doesn't work in GitHub Actions if: matrix.registry == 'docker.io' && secrets.DOCKER_USERNAME != '' && secrets.DOCKER_PASSWORD != '' # ❌ This also doesn't work if: matrix.registry == 'docker.io' && (secrets.DOCKER_USERNAME == '' || secrets.DOCKER_PASSWORD == '') ``` ### Correct Syntax (FIXED) ```yaml # ✅ Check if secrets exist (truthy check) if: matrix.registry == 'docker.io' && secrets.DOCKER_USERNAME && secrets.DOCKER_PASSWORD # ✅ Check if secrets don't exist (falsy check) if: matrix.registry == 'docker.io' && (!secrets.DOCKER_USERNAME || !secrets.DOCKER_PASSWORD) ``` ## Changes Applied ### 1. main-optimized.yml - Line 286 **Before:** ```yaml - name: Log in to Docker Hub if: matrix.registry == 'docker.io' && secrets.DOCKER_USERNAME != '' && secrets.DOCKER_PASSWORD != '' ``` **After:** ```yaml - name: Log in to Docker Hub if: matrix.registry == 'docker.io' && secrets.DOCKER_USERNAME && secrets.DOCKER_PASSWORD ``` ### 2. main-optimized.yml - Line 313 **Before:** ```yaml - name: Build and push Docker image if: matrix.registry == 'ghcr.io' || (matrix.registry == 'docker.io' && secrets.DOCKER_USERNAME != '' && secrets.DOCKER_PASSWORD != '') ``` **After:** ```yaml - name: Build and push Docker image if: matrix.registry == 'ghcr.io' || (matrix.registry == 'docker.io' && secrets.DOCKER_USERNAME && secrets.DOCKER_PASSWORD) ``` ### 3. main-optimized.yml - Line 332 **Before:** ```yaml - name: Docker Hub push skipped if: matrix.registry == 'docker.io' && (secrets.DOCKER_USERNAME == '' || secrets.DOCKER_PASSWORD == '') ``` **After:** ```yaml - name: Docker Hub push skipped if: matrix.registry == 'docker.io' && (!secrets.DOCKER_USERNAME || !secrets.DOCKER_PASSWORD) ``` ## How GitHub Actions Handles Secrets in Conditionals ### Secret Behavior - **Exists**: `secrets.SECRET_NAME` evaluates to truthy - **Missing/Empty**: `secrets.SECRET_NAME` evaluates to falsy - **Cannot compare**: Direct string comparison with `!= ''` fails ### Recommended Patterns ```yaml # Check if secret exists if: secrets.MY_SECRET # Check if secret doesn't exist if: !secrets.MY_SECRET # Check multiple secrets exist if: secrets.SECRET1 && secrets.SECRET2 # Check if any secret is missing if: !secrets.SECRET1 || !secrets.SECRET2 # Combine with other conditions if: github.event_name == 'push' && secrets.MY_SECRET ``` ## Impact ### Before Fix - ✗ Workflows failed immediately at conditional evaluation - ✗ Error: Invalid conditional syntax - ✗ No Docker Hub operations could run ### After Fix - ✅ Conditionals evaluate correctly - ✅ Docker Hub steps run when credentials exist - ✅ GHCR steps always run (no credentials needed) - ✅ Skip messages show when credentials missing ## Alternative Approaches ### Option 1: Environment Variable Check ```yaml env: HAS_DOCKER_CREDS: ${{ secrets.DOCKER_USERNAME != null && secrets.DOCKER_PASSWORD != null }} steps: - name: Login if: env.HAS_DOCKER_CREDS == 'true' ``` ### Option 2: Continue on Error ```yaml - name: Log in to Docker Hub continue-on-error: true uses: docker/login-action@v3 ``` ### Option 3: Job-Level Conditional ```yaml jobs: docker-hub-publish: if: secrets.DOCKER_USERNAME && secrets.DOCKER_PASSWORD ``` ## Testing All changes validated: - ✅ YAML syntax check passed - ✅ Conditional logic follows GitHub Actions standards - ✅ Both positive and negative conditionals fixed ## References - [GitHub Actions: Expressions](https://docs.github.com/en/actions/learn-github-actions/expressions) - [GitHub Actions: Contexts](https://docs.github.com/en/actions/learn-github-actions/contexts#secrets-context) Date: 2024-08-24 Status: Fixed and ready for deployment

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/doobidoo/mcp-memory-service'

If you have feedback or need assistance with the MCP directory API, please join our Discord server