diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4e267ae6..9ba5d64e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -87,3 +87,19 @@ jobs: name: component-coverage path: coverage/ retention-days: 7 + + ready-to-merge: + runs-on: ubuntu-latest + needs: [format, lint, build, test] + if: always() + steps: + - name: Check all jobs passed + run: | + if [[ "${{ needs.format.result }}" != "success" ]] || \ + [[ "${{ needs.lint.result }}" != "success" ]] || \ + [[ "${{ needs.build.result }}" != "success" ]] || \ + [[ "${{ needs.test.result }}" != "success" ]]; then + echo "One or more required jobs failed" + exit 1 + fi + echo "All required jobs passed!" diff --git a/.github/workflows/pr-title.yml b/.github/workflows/pr-title.yml new file mode 100644 index 00000000..cceffce8 --- /dev/null +++ b/.github/workflows/pr-title.yml @@ -0,0 +1,51 @@ +name: PR Title Check + +on: + pull_request: + types: [opened, edited, synchronize, reopened] + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: amannn/action-semantic-pull-request@v5 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + # Configure which types are allowed + types: | + feat + fix + docs + style + refactor + perf + test + build + ci + chore + revert + # Require scope to be provided + requireScope: false + # Configure which scopes are allowed (empty = any scope allowed) + scopes: | + cli + mcp + devbox + blueprint + snapshot + config + auth + ui + deps + # Ensure the subject starts with a lowercase letter + subjectPattern: ^(?![A-Z]).+$ + subjectPatternError: | + The subject "{subject}" found in the pull request title "{title}" + should start with a lowercase letter. + + Examples: + - feat: add new devbox command + - fix(cli): resolve argument parsing issue + - docs: update README with usage examples + diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..a6e92348 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,18 @@ +name: Release + +on: + push: + branches: [main] + +permissions: + contents: write + pull-requests: write + +jobs: + release: + runs-on: ubuntu-latest + steps: + - uses: googleapis/release-please-action@v4 + with: + release-type: node +