diff --git a/.github/workflows/test-repositories.yml b/.github/workflows/test-repositories.yml new file mode 100644 index 0000000..2898c55 --- /dev/null +++ b/.github/workflows/test-repositories.yml @@ -0,0 +1,90 @@ +# This workflow is provided via the organization template repository +# +# https://github.com/nextcloud/.github +# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization + +name: Generate OpenAPI in Repositories + +on: + pull_request: + push: + branches: + - main + - master + - stable* + +permissions: + contents: read + +concurrency: + group: openapi-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + openapi-repositories: + runs-on: ubuntu-latest + strategy: + matrix: + php-versions: [ "8.1" ] + repositories: [ "nextcloud/server", "nextcloud/spreed" ] + + name: openapi-repositories + + steps: + - name: Checkout + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + + - name: Set up php ${{ matrix.php-versions }} + uses: shivammathur/setup-php@4bd44f22a98a19e0950cbad5f31095157cc9621b # v2 + with: + php-version: ${{ matrix.php-versions }} + coverage: none + ini-file: development + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Checkout repository for testing + uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 + with: + repository: ${{ matrix.repositories }} + path: temp-repository + + - name: Install dependencies + run: composer i + + - name: Generate OpenAPI + if: matrix.repositories != 'nextcloud/server' + working-directory: temp-repository/ + run: ../generate-spec + + - name: Generate OpenAPI - Core + if: matrix.repositories == 'nextcloud/server' + working-directory: temp-repository/ + run: ../generate-spec core + + - name: Generate OpenAPI - Server apps + if: matrix.repositories == 'nextcloud/server' + working-directory: temp-repository/ + run: | + for path in apps/*/openapi.json; do + ../generate-spec "$(dirname "$path")" "$path" || exit 1 + done + + - name: Show changes of the API for assistance + run: | + git status + git --no-pager diff + + summary: + permissions: + contents: none + runs-on: ubuntu-latest + needs: openapi-repositories + + if: always() + + name: openapi-repositories-summary + + steps: + - name: Summary status + run: if ${{ needs.openapi-repositories.result != 'success' && needs.openapi-repositories.result != 'skipped' }}; then exit 1; fi