From 2f4ad0283032093fab21f965b1b46d6c61a7f898 Mon Sep 17 00:00:00 2001 From: Jane Alesi Date: Sat, 21 Jun 2025 19:14:05 +0200 Subject: [PATCH] Fix GitLab CI script arrays - ensure proper YAML formatting - Convert all script sections to proper YAML arrays - Remove complex multi-line shell constructs - Simplify conditional logic for YAML compatibility - Fixed script nesting issues --- .gitlab-ci.yml | 176 +++++++++++++------------------------------------ 1 file changed, 46 insertions(+), 130 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e580d0a..966f805 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -7,15 +7,12 @@ stages: - cleanup variables: - # Python and dependency versions (matching GitHub Actions exactly) PYTHON_VERSION: "3.13" MKDOCS_MATERIAL_VERSION: "9.6.14" - - # Site configuration PRODUCTION_URL: "https://satware.ai" PREVIEW_BASE_URL: "https://satware.ai" -# ๐Ÿ”ง Build Job Template (shared between production and preview) +# Build Job Template .build_template: image: python:${PYTHON_VERSION}-slim cache: @@ -24,42 +21,13 @@ variables: - .cache/ - venv/ before_script: - # Install system dependencies for MkDocs Material - - apt-get update && apt-get install -y - build-essential - git - libcairo2-dev - libfreetype6-dev - libffi-dev - libjpeg-dev - libpng-dev - libz-dev - - # Setup Python virtual environment + - apt-get update && apt-get install -y build-essential git libcairo2-dev libfreetype6-dev libffi-dev libjpeg-dev libpng-dev libz-dev - python -m venv venv - source venv/bin/activate - pip install --upgrade pip - - # Install exact same dependencies as GitHub Actions - - pip install - cairosvg - libsass - mkdocs-exclude - mkdocs-git-revision-date-localized-plugin - mkdocs-glightbox - mkdocs-include-markdown-plugin - mkdocs-literate-nav - mkdocs-macros-plugin - mkdocs-material==${MKDOCS_MATERIAL_VERSION} - "mkdocs-material[imaging]" - mkdocs-minify-plugin - mkdocs-redirects - mkdocs-rss-plugin - mkdocs-snippets - mkdocs-video - watchdog + - pip install cairosvg libsass mkdocs-exclude mkdocs-git-revision-date-localized-plugin mkdocs-glightbox mkdocs-include-markdown-plugin mkdocs-literate-nav mkdocs-macros-plugin mkdocs-material==${MKDOCS_MATERIAL_VERSION} "mkdocs-material[imaging]" mkdocs-minify-plugin mkdocs-redirects mkdocs-rss-plugin mkdocs-snippets mkdocs-video watchdog -# ๐ŸŒ Production Deployment (main branch -> https://satware.ai) +# Production Deployment pages: extends: .build_template stage: deploy @@ -68,36 +36,23 @@ pages: - if: $CI_COMMIT_REF_NAME == "main" script: - source venv/bin/activate - - # Build custom CSS from SCSS (exactly like GitHub Actions) - mkdir -p docs/assets/css - pysassc overrides/assets/css/custom.scss docs/assets/css/custom.css - - # Production deployment - keep original site_url - echo "๐Ÿ“ Production deployment to ${PRODUCTION_URL}" - - echo "Site URL:" $(grep '^site_url:' mkdocs.yml) - - # Build the static site + - grep '^site_url:' mkdocs.yml || echo "No site_url found" - echo "๐Ÿ—๏ธ Building MkDocs site..." - mkdocs build --verbose - - # Prepare for GitLab Pages (requires 'public' directory) - echo "๐Ÿ“ฆ Preparing production deployment..." - mv site public - - # Generate deployment info - echo "DEPLOYMENT_URL=${PRODUCTION_URL}" > deploy.env - echo "DEPLOYMENT_TYPE=production" >> deploy.env - echo "BRANCH=${CI_COMMIT_REF_NAME}" >> deploy.env - echo "COMMIT=${CI_COMMIT_SHA}" >> deploy.env - - # Deployment summary - - echo "๐Ÿš€ Production deployment ready:" - - echo " ๐Ÿ“ URL:" ${PRODUCTION_URL} - - echo " ๐ŸŒฟ Branch:" ${CI_COMMIT_REF_NAME} - - echo " ๐Ÿ“ฆ Files:" $(find public -type f | wc -l) - - echo " ๐Ÿ’พ Size:" $(du -sh public | cut -f1) - + - echo "๐Ÿš€ Production deployment ready" + - echo " ๐Ÿ“ URL ${PRODUCTION_URL}" + - echo " ๐ŸŒฟ Branch ${CI_COMMIT_REF_NAME}" + - find public -type f | wc -l | xargs echo " ๐Ÿ“ฆ Files" + - du -sh public | cut -f1 | xargs echo " ๐Ÿ’พ Size" artifacts: paths: - public @@ -107,7 +62,7 @@ pages: name: production url: ${PRODUCTION_URL} -# ๐Ÿ” Preview Deployment (feature branches -> https://satware.ai/feature/xyz) +# Preview Deployment preview: extends: .build_template stage: deploy @@ -117,81 +72,44 @@ preview: - if: $CI_COMMIT_REF_NAME =~ /^(develop|staging)$/ script: - source venv/bin/activate - - # Build custom CSS from SCSS - mkdir -p docs/assets/css - pysassc overrides/assets/css/custom.scss docs/assets/css/custom.css - - # Configure site_url for preview deployment - - echo "๐Ÿ” Preview deployment for branch:" ${CI_COMMIT_REF_NAME} - # Extract clean branch name for URL path + - echo "๐Ÿ” Preview deployment for branch ${CI_COMMIT_REF_NAME}" - BRANCH_PATH=$(echo "${CI_COMMIT_REF_NAME}" | sed 's|feature/||g' | sed 's|fix/||g' | sed 's|blog/||g' | sed 's|[^a-zA-Z0-9-]|-|g' | tr '[:upper:]' '[:lower:]') - PREVIEW_URL="${PREVIEW_BASE_URL}/${BRANCH_PATH}/" - - - echo "๐Ÿ“ Updating site_url to:" ${PREVIEW_URL} - # Update site_url for preview deployment - - | - if grep -q "^site_url:" mkdocs.yml; then - sed -i "s|^site_url:.*|site_url: ${PREVIEW_URL}|" mkdocs.yml - else - echo "site_url: ${PREVIEW_URL}" >> mkdocs.yml - fi - - # Also update use_directory_urls for better preview navigation - - | - if grep -q "^use_directory_urls:" mkdocs.yml; then - sed -i "s|^use_directory_urls:.*|use_directory_urls: true|" mkdocs.yml - fi - - - echo "โœ… Updated mkdocs.yml for preview:" - - grep -E "^(site_url|use_directory_urls):" mkdocs.yml - - # Build the static site + - echo "๐Ÿ“ Updating site_url to ${PREVIEW_URL}" + - cp mkdocs.yml mkdocs.yml.backup + - sed -i "s|^site_url:.*|site_url: ${PREVIEW_URL}|" mkdocs.yml + - sed -i "s|^use_directory_urls:.*|use_directory_urls: true|" mkdocs.yml + - echo "โœ… Updated mkdocs.yml for preview" + - grep -E "^(site_url|use_directory_urls):" mkdocs.yml || echo "Config updated" - echo "๐Ÿ—๏ธ Building MkDocs site..." - mkdocs build --verbose - - # For preview, create a deployable artifact - mkdir -p preview-deploy/${BRANCH_PATH} - cp -r site/* preview-deploy/${BRANCH_PATH}/ - - # Generate deployment info - echo "DEPLOYMENT_URL=${PREVIEW_URL}" > deploy.env - echo "DEPLOYMENT_TYPE=preview" >> deploy.env - echo "BRANCH=${CI_COMMIT_REF_NAME}" >> deploy.env - echo "BRANCH_PATH=${BRANCH_PATH}" >> deploy.env - echo "COMMIT=${CI_COMMIT_SHA}" >> deploy.env - - # Create deployment instructions - - | - cat > DEPLOY_INSTRUCTIONS.md << EOF - # ๐Ÿ” Preview Deployment Instructions - - **Branch:** \`${CI_COMMIT_REF_NAME}\` - **Preview URL:** ${PREVIEW_URL} - **Commit:** \`${CI_COMMIT_SHA}\` - - ## Manual Deployment Steps: - - 1. Download the \`preview-deploy\` artifact from this pipeline - 2. Extract to your satware.ai server under path: \`/${BRANCH_PATH}/\` - 3. Ensure web server serves files from this location - 4. Access preview at: ${PREVIEW_URL} - - ## Automated Deployment (Future): - Configure rsync/ssh to automatically deploy to your server: - \`\`\`bash - rsync -avz --delete preview-deploy/${BRANCH_PATH}/ user@satware.ai:/var/www/satware.ai/${BRANCH_PATH}/ - \`\`\` - EOF - - # Preview summary - - echo "๐Ÿ” Preview deployment ready:" - - echo " ๐Ÿ“ URL:" ${PREVIEW_URL} - - echo " ๐ŸŒฟ Branch:" ${CI_COMMIT_REF_NAME} - - echo " ๐Ÿ“ Path: /${BRANCH_PATH}/" - - echo " ๐Ÿ“ฆ Files:" $(find preview-deploy -type f | wc -l) - - echo " ๐Ÿ’พ Size:" $(du -sh preview-deploy | cut -f1) - + - echo "# Preview Deployment Instructions" > DEPLOY_INSTRUCTIONS.md + - echo "" >> DEPLOY_INSTRUCTIONS.md + - echo "**Branch:** \`${CI_COMMIT_REF_NAME}\`" >> DEPLOY_INSTRUCTIONS.md + - echo "**Preview URL:** ${PREVIEW_URL}" >> DEPLOY_INSTRUCTIONS.md + - echo "**Commit:** \`${CI_COMMIT_SHA}\`" >> DEPLOY_INSTRUCTIONS.md + - echo "" >> DEPLOY_INSTRUCTIONS.md + - echo "## Manual Deployment Steps:" >> DEPLOY_INSTRUCTIONS.md + - echo "" >> DEPLOY_INSTRUCTIONS.md + - echo "1. Download the \`preview-deploy\` artifact from this pipeline" >> DEPLOY_INSTRUCTIONS.md + - echo "2. Extract to your satware.ai server under path: \`/${BRANCH_PATH}/\`" >> DEPLOY_INSTRUCTIONS.md + - echo "3. Ensure web server serves files from this location" >> DEPLOY_INSTRUCTIONS.md + - echo "4. Access preview at: ${PREVIEW_URL}" >> DEPLOY_INSTRUCTIONS.md + - echo "๐Ÿ” Preview deployment ready" + - echo " ๐Ÿ“ URL ${PREVIEW_URL}" + - echo " ๐ŸŒฟ Branch ${CI_COMMIT_REF_NAME}" + - echo " ๐Ÿ“ Path /${BRANCH_PATH}/" + - find preview-deploy -type f | wc -l | xargs echo " ๐Ÿ“ฆ Files" + - du -sh preview-deploy | cut -f1 | xargs echo " ๐Ÿ’พ Size" artifacts: paths: - preview-deploy/ @@ -204,7 +122,7 @@ preview: url: ${PREVIEW_BASE_URL}/${BRANCH_PATH}/ on_stop: cleanup_preview -# ๐Ÿงน Cleanup Preview Environments (when branch is deleted) +# Cleanup Preview cleanup_preview: stage: cleanup image: alpine:latest @@ -215,14 +133,12 @@ cleanup_preview: script: - BRANCH_PATH=$(echo "${CI_COMMIT_REF_NAME}" | sed 's|feature/||g' | sed 's|fix/||g' | sed 's|blog/||g' | sed 's|[^a-zA-Z0-9-]|-|g' | tr '[:upper:]' '[:lower:]') - echo "๐Ÿงน Cleanup preview environment for ${CI_COMMIT_REF_NAME}" - - echo "Manual cleanup required - remove files from server path: /${BRANCH_PATH}/" - # Add your cleanup commands here, e.g.: - # - ssh user@satware.ai "rm -rf /var/www/satware.ai/${BRANCH_PATH}/" + - echo "Manual cleanup required - remove files from server path /${BRANCH_PATH}/" environment: name: preview/${CI_COMMIT_REF_SLUG} action: stop -# ๐Ÿ“Š Build Information Job (runs on all branches for debugging) +# Build Information build_info: stage: build image: alpine:latest @@ -230,13 +146,13 @@ build_info: - if: $CI_PIPELINE_SOURCE == "merge_request_event" - if: $CI_COMMIT_REF_NAME =~ /.*/ script: - - echo "๐Ÿ” Build Information:" - - echo " ๐Ÿ“ Repository:" ${CI_PROJECT_PATH} - - echo " ๐ŸŒฟ Branch:" ${CI_COMMIT_REF_NAME} - - echo " ๐Ÿ“ Commit:" ${CI_COMMIT_SHA:0:8} - - echo " ๐Ÿ‘ค Author:" ${GITLAB_USER_NAME} - - echo " ๐Ÿ“… Pipeline:" ${CI_PIPELINE_ID} - - echo " ๐Ÿ”— URL:" ${CI_PIPELINE_URL} + - echo "๐Ÿ” Build Information" + - echo " ๐Ÿ“ Repository ${CI_PROJECT_PATH}" + - echo " ๐ŸŒฟ Branch ${CI_COMMIT_REF_NAME}" + - echo " ๐Ÿ“ Commit ${CI_COMMIT_SHA:0:8}" + - echo " ๐Ÿ‘ค Author ${GITLAB_USER_NAME}" + - echo " ๐Ÿ“… Pipeline ${CI_PIPELINE_ID}" + - echo " ๐Ÿ”— URL ${CI_PIPELINE_URL}" - | if [ "$CI_COMMIT_REF_NAME" = "main" ] || [ "$CI_COMMIT_REF_NAME" = "main-mkdocs" ]; then echo " ๐Ÿš€ Deployment: Production (${PRODUCTION_URL})"