--- name: Composite Example Action description: 'Test Composite Action for gh-action-readme dependency analysis' inputs: node-version: description: Node.js version to use required: false default: '20' working-directory: description: Working directory required: false default: '.' outputs: build-result: description: Build result status value: ${{ steps.build.outputs.result }} runs: using: composite steps: - name: Checkout repository uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: fetch-depth: 0 token: ${{ github.token }} - name: Setup Node.js uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version: ${{ inputs.node-version }} cache: 'npm' - name: Install dependencies shell: bash run: | cd ${{ inputs.working-directory }} npm ci - name: Run tests shell: bash run: | npm test echo "Tests completed successfully" env: NODE_ENV: test - name: Build project shell: bash id: build run: | set -u cd ${{ inputs.working-directory }} npm run build # Capture exit code immediately to avoid fragility with intervening commands build_exit_code=$? # Write result to GITHUB_OUTPUT based on captured exit code # Note: We do not use 'set -e' because we need to handle build failures # gracefully and report them via the output rather than failing the step if [ $build_exit_code -eq 0 ]; then echo "result=success" >> $GITHUB_OUTPUT else echo "result=failure" >> $GITHUB_OUTPUT fi branding: icon: package color: blue