Skip to content

Document multiple case-management endpoints #257

Document multiple case-management endpoints

Document multiple case-management endpoints #257

name: Reusable Integration Test Workflow
permissions:
contents: read
on:
pull_request:
types:
- opened
- reopened
- ready_for_review
- synchronize
- labeled
- unlabeled
branches:
- master
schedule:
- cron: "0 4 * * *"
workflow_call:
inputs:
target-branch:
description: 'Branch to checkout and test (defaults to the calling branch)'
required: false
type: string
default: ''
enable-status-reporting:
description: 'Whether to post status checks to datadog-api-spec repo'
required: false
type: boolean
default: false
status-context:
description: 'Context for status checks'
required: false
type: string
default: 'integration'
target-repo:
description: 'Repository to post status to'
required: false
type: string
default: 'datadog-api-spec'
has-integration-label:
description: 'Whether the calling PR has ci/integrations label'
required: false
type: boolean
default: false
secrets:
PIPELINE_GITHUB_APP_ID:
required: false
PIPELINE_GITHUB_APP_PRIVATE_KEY:
required: false
DD_API_KEY:
required: true
DD_CLIENT_API_KEY:
required: true
DD_CLIENT_APP_KEY:
required: true
SLEEP_AFTER_REQUEST:
required: false
concurrency:
group: integration-typescript-${{ inputs.target-branch || github.head_ref }}
cancel-in-progress: true
jobs:
test_integration:
runs-on: ubuntu-latest
if: >
(github.event_name == 'pull_request' &&
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/') &&
contains(github.event.pull_request.labels.*.name, 'ci/integrations')) ||
github.event_name == 'schedule' ||
(github.event_name == 'workflow_call' && inputs.has-integration-label)
services:
datadog-agent:
image: gcr.io/datadoghq/agent:latest
ports:
- 8126:8126
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
DD_HOSTNAME: "none"
DD_INSIDE_CI: "true"
steps:
- name: Get GitHub App token
if: github.event_name == 'pull_request'
id: get_token
uses: actions/create-github-app-token@v1
with:
app-id: ${{ secrets.PIPELINE_GITHUB_APP_ID }}
private-key: ${{ secrets.PIPELINE_GITHUB_APP_PRIVATE_KEY }}
repositories: ${{ inputs.target-repo || 'datadog-api-spec' }}
- name: Checkout code
uses: actions/checkout@v3
with:
repository: DataDog/datadog-api-client-typescript
ref: ${{ inputs.target-branch || github.ref }}
- name: Post pending status check
if: github.event_name == 'pull_request' && contains(github.event.pull_request.head.ref, 'datadog-api-spec/generated/') && (inputs.enable-status-reporting || github.event_name != 'workflow_call')
uses: DataDog/github-actions/post-status-check@v2
with:
github-token: ${{ steps.get_token.outputs.token }}
repo: ${{ inputs.target-repo || 'datadog-api-spec' }}
status: pending
context: ${{ inputs.status-context || 'integration' }}
- name: Set up Node 16
uses: actions/setup-node@v3
with:
node-version: 16
cache: 'yarn'
- name: Run integration tests
run: ./run-tests.sh
shell: bash
env:
CI: "true"
DD_AGENT_HOST: localhost
DD_ENV: prod
DD_SERVICE: datadog-api-client-typescript
DD_TAGS: "team:integrations-tools-and-libraries"
DD_TRACE_PROPAGATION_STYLE_INJECT: "datadog"
DD_TEST_CLIENT_API_KEY: ${{ secrets.DD_CLIENT_API_KEY }}
DD_TEST_CLIENT_APP_KEY: ${{ secrets.DD_CLIENT_APP_KEY }}
RECORD: "none"
SLEEP_AFTER_REQUEST: ${{ secrets.SLEEP_AFTER_REQUEST || vars.SLEEP_AFTER_REQUEST }}
- name: Post failure status check
if: failure() && github.event_name == 'pull_request' && contains(github.event.pull_request.head.ref, 'datadog-api-spec/generated/') && (inputs.enable-status-reporting || github.event_name != 'workflow_call')
uses: DataDog/github-actions/post-status-check@v2
with:
github-token: ${{ steps.get_token.outputs.token }}
repo: ${{ inputs.target-repo || 'datadog-api-spec' }}
status: failure
context: ${{ inputs.status-context || 'integration' }}
- name: Post success status check
if: "!failure() && github.event_name == 'pull_request' && contains(github.event.pull_request.head.ref, 'datadog-api-spec/generated/') && (inputs.enable-status-reporting || github.event_name != 'workflow_call')"
uses: DataDog/github-actions/post-status-check@v2
with:
github-token: ${{ steps.get_token.outputs.token }}
repo: ${{ inputs.target-repo || 'datadog-api-spec' }}
status: success
context: ${{ inputs.status-context || 'integration' }}