image: node:22 default: interruptible: true timeout: 1 minute stages: - test - deploy test: stage: test script: - | # Check if this is a non-forked execution on soapbox-pub/mkstack if [ "$CI_PROJECT_NAMESPACE" = "soapbox-pub" ] && [ "$CI_PROJECT_NAME" = "mkstack" ] && [ "$CI_PROJECT_PATH" = "soapbox-pub/mkstack" ]; then echo "Running on soapbox-pub/mkstack - applying template-specific test logic" # Run npm test and capture output and exit code set +e test_output=$(npm run test 2>&1) test_exit_code=$? set -e echo "$test_output" # Check if the output contains exactly 6 linting problems if echo "$test_output" | grep -q "✖ 6 problems (6 errors, 0 warnings)"; then echo "✅ Expected 6 linting errors found - template is correctly configured" exit 0 elif [ $test_exit_code -eq 0 ]; then echo "✅ Tests passed with no linting errors" exit 0 else echo "❌ Unexpected test failure or wrong number of linting errors" exit 1 fi else echo "Running on fork or different project - using standard test behavior" npm run test fi pages: stage: deploy script: - | # Check if this is a non-forked execution on soapbox-pub/mkstack if [ "$CI_PROJECT_NAMESPACE" = "soapbox-pub" ] && [ "$CI_PROJECT_NAME" = "mkstack" ] && [ "$CI_PROJECT_PATH" = "soapbox-pub/mkstack" ]; then echo "Running on soapbox-pub/mkstack - proceeding with deployment" npm run build rm -rf public mv dist public else echo "Running on fork or different project - skipping deployment" echo "This is expected behavior for forks" # Create a minimal public directory to avoid job failure mkdir -p public echo "
This deployment is only active on soapbox-pub/mkstack
" > public/index.html fi artifacts: paths: - public only: variables: - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME