name: Run Tests env: GIT_AUTHOR_EMAIL: "packages@datadoghq.com" GIT_AUTHOR_NAME: "ci.datadog-api-spec" on: pull_request: branches: - master schedule: - cron: "0 3 * * *" concurrency: group: unit-${{ github.head_ref }} cancel-in-progress: true jobs: pre-commit: runs-on: ubuntu-latest if: > (github.event.pull_request.draft == false && !contains(github.event.pull_request.labels.*.name, 'ci/skip') && !contains(github.event.pull_request.head.ref, 'datadog-api-spec/test/')) || github.event_name == 'schedule' steps: - name: Get GitHub App token id: get_token uses: tibdex/github-app-token@v1 with: app_id: ${{ secrets.PIPELINE_GITHUB_APP_ID }} private_key: ${{ secrets.PIPELINE_GITHUB_APP_PRIVATE_KEY }} - uses: actions/checkout@v3 with: fetch-depth: 0 ref: ${{ github.event.pull_request.head.sha }} token: ${{ steps.get_token.outputs.token }} - uses: actions/setup-python@v4 with: python-version: '3.11' - name: Install pre-commit run: python -m pip install pre-commit - name: set PY run: echo "PY=$(python -c 'import platform;print(platform.python_version())')" >> $GITHUB_ENV - uses: actions/cache@v3 with: path: ~/.cache/pre-commit key: pre-commit|${{ env.PY }}|${{ hashFiles('.pre-commit-config.yaml') }} - id: pre_commit name: Run pre-commit if: github.event.action != 'closed' && github.event.pull_request.merged != true run: | pre-commit run --from-ref "${FROM_REF}" --to-ref "${TO_REF}" --show-diff-on-failure --color=always env: FROM_REF: ${{ github.event.pull_request.base.sha }} TO_REF: ${{ github.event.pull_request.head.sha }} - name: Commit changes if: ${{ failure() }} run: |- git add -A git config user.name "${GIT_AUTHOR_NAME}" git config user.email "${GIT_AUTHOR_EMAIL}" git commit -m "pre-commit fixes" git push origin "HEAD:${HEAD_REF}" exit 1 env: HEAD_REF: ${{ github.event.pull_request.head.ref }} - id: pre_commit_schedule name: Run pre-commit in schedule if: github.event_name == 'schedule' run: | pre-commit run --all-files --show-diff-on-failure --color=always test: strategy: matrix: ruby-version: ["2.6", "3.1", "jruby"] platform: [ubuntu-latest] runs-on: ${{ matrix.platform }} if: (github.event.pull_request.draft == false && !contains(github.event.pull_request.labels.*.name, 'ci/skip') && !contains(github.event.pull_request.head.ref, 'datadog-api-spec/test/')) || github.event_name == 'schedule' env: BUNDLE_WITHOUT: docs DD_PROFILING_NO_EXTENSION: true steps: - uses: actions/checkout@v3 - name: Set up Ruby ${{ matrix.ruby-version }} uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby-version }} bundler-cache: true # modify repository secret when there are problems with installing gems cache-version: ${{ secrets.CACHE_VERSION }} - name: Test run: ./run-tests.sh shell: bash examples: runs-on: ubuntu-latest if: (github.event.pull_request.draft == false && !contains(github.event.pull_request.labels.*.name, 'ci/skip') && !contains(github.event.pull_request.head.ref, 'datadog-api-spec/test/')) || github.event_name == 'schedule' env: DD_PROFILING_NO_EXTENSION: true steps: - uses: actions/checkout@v3 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: ruby-version: "2.7" bundler-cache: true # modify repository secret when there are problems with installing gems cache-version: ${{ secrets.CACHE_VERSION }} - name: Check examples run: ./check-examples.sh shell: bash report: runs-on: ubuntu-latest if: always() && github.event_name == 'pull_request' && contains(github.event.pull_request.head.ref, 'datadog-api-spec/generated/') needs: - test - examples steps: - name: Get GitHub App token if: github.event_name == 'pull_request' id: get_token uses: tibdex/github-app-token@v1 with: app_id: ${{ secrets.PIPELINE_GITHUB_APP_ID }} private_key: ${{ secrets.PIPELINE_GITHUB_APP_PRIVATE_KEY }} repository: DataDog/datadog-api-spec - name: Post status 3heck uses: DataDog/github-actions/post-status-check@v2 with: github-token: ${{ steps.get_token.outputs.token }} repo: datadog-api-spec status: ${{ (needs.test.result == 'cancelled' || needs.examples.result == 'cancelled') && 'pending' || needs.test.result == 'success' && needs.examples.result == 'success' && 'success' || 'failure' }} context: unit