Skip to content

GitHub Actions Integration

Configure repository variables for the integration

The GitHub Actions integration works by running a Synthetics monitor of your choice against the desired URL. In order to specify which monitor this will be, as well as the API key required to run it, you need to configure some repository variables first.

Create API Key Secret

The first step is to create a secret from the repository's Settings page for the Sematext API Key, which is needed to authenticate the request to run your desired Synthetics monitor. Go to your repository's Settings, and then in the sidebar under Security click Secrets and variables and then Actions. Create a new repository secret and name it SEMATEXT_API_KEY, then paste in the API key for your account.

CI/CD GitHub Secret

Create Repository Variables for Synthetics Monitor information

Once you've set up the repository secret for the API key, you then need to configure some information regarding the monitor which will be used in the Action. This entails defining three repository variables:

  • SEMATEXT_MONITOR_ID - The ID of the monitor you plan on using with the Action
  • SEMATEXT_APP_ID - The ID of the Synthetics App associated with your monitor
  • SEMATEXT_REGION - The region in which your account is registered - US or EU

A quick guide on how to find this information can be found here. Make sure that these are configured as repository variables and not repository secrets.

CI/CD GitHub Variables

Add the Run Monitor Job to your GitHub Action Workflow

Create the .github/workflows/run-monitor.yml GitHub Actions file to run your monitors on various CI/CD events. For example, to run the monitor after a deployment event, use the deployment_status event as a trigger. The below action uses deployment_status.target_url to pass the custom URL to the run monitor API. Make sure to set the appropriate values for the APP_ID and MONITOR_ID variables.

name: 'Sematext Synthetics CI'

# Execute the run monitor job on deployment status event

    runs-on: ubuntu-latest
      output1: ${{ }}

      - uses: actions/checkout@v4

      - name: Run Sematext Monitor
          API_KEY: ${{ secrets.SEMATEXT_API_KEY }}
          APP_ID: ${{ vars.SEMATEXT_APP_ID }}
          MONITOR_ID: ${{ vars.SEMATEXT_MONITOR_ID }}
          REGION: ${{ vars.SEMATEXT_REGION }}
        id: run
        run: |
          echo "Running job with the following variables:"
          echo " - APP_ID: ${APP_ID}"
          echo " - MONITOR_ID: ${MONITOR_ID}"
          echo " - REGION: ${REGION}"
          target_url=`cat "$GITHUB_EVENT_PATH" | jq .deployment_status.target_url`
          echo "Running monitor for target URL: $target_url"
          echo " --------------------------------"

          if [ "${REGION}" = "EU" ]; then

          curl -s --request POST \
            --url $url \
              --header 'authorization: apiKey '${API_KEY} \
                --header 'accept: text/plain' \
                  --header 'content-type: application/json' \
                    --data '[{"monitorId": '${MONITOR_ID}', "url":'$target_url'}]' > results.txt

          cat results.txt
          if [ $(head -1 results.txt | grep -c 'passed') -ne 1 ]; then exit 1; fi

On every deployment event, the action will be invoked and the action logs will contain the results.

CI/CD GitHub Actions Logs