fix: preserve Remotion help behavior (#30194) #10263
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Auto-Deploy Agents | |
| on: | |
| push: | |
| branches: [main] | |
| paths: | |
| - '.agents/scripts/**' | |
| - '.agents/**/*.md' | |
| - '.agents/**/*.sh' | |
| workflow_dispatch: | |
| inputs: | |
| deploy_target: | |
| description: 'Deploy target: scripts-only or full' | |
| required: true | |
| default: 'scripts-only' | |
| type: choice | |
| options: | |
| - scripts-only | |
| - full | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| detect-changes: | |
| name: Detect Changed Agent Files | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| permissions: | |
| contents: read | |
| outputs: | |
| scripts_changed: ${{ steps.changes.outputs.scripts_changed }} | |
| agents_changed: ${{ steps.changes.outputs.agents_changed }} | |
| changed_files: ${{ steps.changes.outputs.changed_files }} | |
| changed_count: ${{ steps.changes.outputs.changed_count }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 | |
| with: | |
| fetch-depth: 2 | |
| - name: Detect changed files | |
| id: changes | |
| run: | | |
| # Get changed files between HEAD~1 and HEAD | |
| CHANGED=$(git diff --name-only HEAD~1 HEAD -- '.agents/' 2>/dev/null || echo "") | |
| if [[ -z "$CHANGED" ]]; then | |
| echo "No agent files changed" | |
| echo "scripts_changed=false" >> "$GITHUB_OUTPUT" | |
| echo "agents_changed=false" >> "$GITHUB_OUTPUT" | |
| echo "changed_files=" >> "$GITHUB_OUTPUT" | |
| echo "changed_count=0" >> "$GITHUB_OUTPUT" | |
| exit 0 | |
| fi | |
| CHANGED_COUNT=$(echo "$CHANGED" | wc -l | tr -d ' ') | |
| echo "changed_count=$CHANGED_COUNT" >> "$GITHUB_OUTPUT" | |
| # Check if scripts specifically changed | |
| SCRIPTS_CHANGED=$(echo "$CHANGED" | grep -c '^\.agents/scripts/' || true) | |
| [[ "$SCRIPTS_CHANGED" =~ ^[0-9]+$ ]] || SCRIPTS_CHANGED=0 | |
| if [[ "$SCRIPTS_CHANGED" -gt 0 ]]; then | |
| echo "scripts_changed=true" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "scripts_changed=false" >> "$GITHUB_OUTPUT" | |
| fi | |
| # Check if any agent files changed | |
| AGENTS_CHANGED=$(echo "$CHANGED" | grep -c '^\.agents/' || true) | |
| [[ "$AGENTS_CHANGED" =~ ^[0-9]+$ ]] || AGENTS_CHANGED=0 | |
| if [[ "$AGENTS_CHANGED" -gt 0 ]]; then | |
| echo "agents_changed=true" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "agents_changed=false" >> "$GITHUB_OUTPUT" | |
| fi | |
| # Store changed files list (truncated for output) | |
| # Use unique delimiter to prevent collision if a file path contains "EOF" | |
| DELIM="EOF_$(date +%s)" | |
| echo "changed_files<<$DELIM" >> "$GITHUB_OUTPUT" | |
| echo "$CHANGED" | head -50 >> "$GITHUB_OUTPUT" | |
| echo "$DELIM" >> "$GITHUB_OUTPUT" | |
| echo "Detected $CHANGED_COUNT changed agent files ($SCRIPTS_CHANGED scripts)" | |
| notify-deploy: | |
| name: Create Deployment Record | |
| needs: detect-changes | |
| if: needs.detect-changes.outputs.agents_changed == 'true' | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| permissions: | |
| contents: read | |
| deployments: write | |
| steps: | |
| - name: Create deployment summary | |
| env: | |
| SCRIPTS_CHANGED: ${{ needs.detect-changes.outputs.scripts_changed }} | |
| CHANGED_COUNT: ${{ needs.detect-changes.outputs.changed_count }} | |
| CHANGED_FILES: ${{ needs.detect-changes.outputs.changed_files }} | |
| COMMIT_SHA: ${{ github.sha }} | |
| COMMIT_AUTHOR: ${{ github.event.head_commit.author.name }} | |
| COMMIT_MESSAGE: ${{ github.event.head_commit.message }} | |
| run: | | |
| echo "## Agent Auto-Deploy Triggered" >> "$GITHUB_STEP_SUMMARY" | |
| echo "" >> "$GITHUB_STEP_SUMMARY" | |
| echo "**Commit:** ${COMMIT_SHA}" >> "$GITHUB_STEP_SUMMARY" | |
| echo "**Author:** ${COMMIT_AUTHOR}" >> "$GITHUB_STEP_SUMMARY" | |
| echo "**Message:** ${COMMIT_MESSAGE}" >> "$GITHUB_STEP_SUMMARY" | |
| echo "" >> "$GITHUB_STEP_SUMMARY" | |
| echo "### Changed Files ($CHANGED_COUNT)" >> "$GITHUB_STEP_SUMMARY" | |
| echo "" >> "$GITHUB_STEP_SUMMARY" | |
| echo '```' >> "$GITHUB_STEP_SUMMARY" | |
| echo "$CHANGED_FILES" >> "$GITHUB_STEP_SUMMARY" | |
| echo '```' >> "$GITHUB_STEP_SUMMARY" | |
| echo "" >> "$GITHUB_STEP_SUMMARY" | |
| echo "### Deploy Instructions" >> "$GITHUB_STEP_SUMMARY" | |
| echo "" >> "$GITHUB_STEP_SUMMARY" | |
| if [[ "$SCRIPTS_CHANGED" == "true" ]]; then | |
| echo "Scripts were modified. Local machines with aidevops installed" >> "$GITHUB_STEP_SUMMARY" | |
| echo "will auto-deploy on next:" >> "$GITHUB_STEP_SUMMARY" | |
| echo "" >> "$GITHUB_STEP_SUMMARY" | |
| echo "- **Supervisor pulse** (cron, every 2 minutes)" >> "$GITHUB_STEP_SUMMARY" | |
| echo "- **\`aidevops update\`** (manual)" >> "$GITHUB_STEP_SUMMARY" | |
| echo "- **\`setup.sh --non-interactive\`** (manual)" >> "$GITHUB_STEP_SUMMARY" | |
| echo "" >> "$GITHUB_STEP_SUMMARY" | |
| echo "For immediate deployment:" >> "$GITHUB_STEP_SUMMARY" | |
| echo '```bash' >> "$GITHUB_STEP_SUMMARY" | |
| echo "~/.aidevops/agents/scripts/deploy-agents-on-merge.sh" >> "$GITHUB_STEP_SUMMARY" | |
| echo '```' >> "$GITHUB_STEP_SUMMARY" | |
| else | |
| echo "Agent documentation changed (no scripts). Deploy on next" >> "$GITHUB_STEP_SUMMARY" | |
| echo "\`aidevops update\` or \`setup.sh --non-interactive\`." >> "$GITHUB_STEP_SUMMARY" | |
| fi | |
| echo "" >> "$GITHUB_STEP_SUMMARY" | |
| echo "*Generated by Auto-Deploy Agents workflow*" >> "$GITHUB_STEP_SUMMARY" | |
| validate-scripts: | |
| name: Validate Changed Scripts | |
| needs: detect-changes | |
| if: needs.detect-changes.outputs.scripts_changed == 'true' | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| permissions: | |
| contents: read | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 | |
| - name: Install ShellCheck | |
| run: sudo apt-get install -y shellcheck | |
| - name: ShellCheck changed scripts | |
| env: | |
| CHANGED_FILES: ${{ needs.detect-changes.outputs.changed_files }} | |
| run: | | |
| echo "## ShellCheck Results" >> "$GITHUB_STEP_SUMMARY" | |
| echo "" >> "$GITHUB_STEP_SUMMARY" | |
| SCRIPTS=$(echo "$CHANGED_FILES" | grep '\.sh$' || echo "") | |
| if [[ -z "$SCRIPTS" ]]; then | |
| echo "No shell scripts in changed files" >> "$GITHUB_STEP_SUMMARY" | |
| exit 0 | |
| fi | |
| FAILED=0 | |
| PASSED=0 | |
| while IFS= read -r script; do | |
| [[ -z "$script" ]] && continue | |
| [[ ! -f "$script" ]] && continue | |
| if shellcheck -x "$script" 2>/dev/null; then | |
| PASSED=$((PASSED + 1)) | |
| else | |
| FAILED=$((FAILED + 1)) | |
| echo "::warning file=$script::ShellCheck found issues" | |
| fi | |
| done <<< "$SCRIPTS" | |
| echo "**Passed:** $PASSED | **Failed:** $FAILED" >> "$GITHUB_STEP_SUMMARY" | |
| if [[ "$FAILED" -gt 0 ]]; then | |
| echo "" >> "$GITHUB_STEP_SUMMARY" | |
| echo "::warning::$FAILED script(s) have ShellCheck issues" | |
| fi | |
| - name: Syntax check changed scripts | |
| env: | |
| CHANGED_FILES: ${{ needs.detect-changes.outputs.changed_files }} | |
| run: | | |
| SCRIPTS=$(echo "$CHANGED_FILES" | grep '\.sh$' || echo "") | |
| if [[ -z "$SCRIPTS" ]]; then | |
| exit 0 | |
| fi | |
| FAILED=0 | |
| while IFS= read -r script; do | |
| [[ -z "$script" ]] && continue | |
| [[ ! -f "$script" ]] && continue | |
| SYNTAX_ERR=$(bash -n "$script" 2>&1) || { | |
| echo "::error file=$script::Syntax error in $script: $SYNTAX_ERR" | |
| FAILED=$((FAILED + 1)) | |
| } | |
| done <<< "$SCRIPTS" | |
| if [[ "$FAILED" -gt 0 ]]; then | |
| echo "::error::$FAILED script(s) have syntax errors" | |
| exit 1 | |
| fi |