Github Actions


Calibre’s CLI is optimised for use in CI/CD environments. You can use the CLI to automate performance testing of your sites in Calibre.

Prerequisites

  1. Create an API token for the Calibre API. Add the API Token to a GitHub Repository secret.
  2. Use CALIBRE_API_TOKEN environment variable to authenticate with Calibre CLI.
  3. Obtain a Site slug identifier from Calibre by visiting Site → Settings → General. Add the Site slug to a GitHub Repository secret named CALIBRE_SITE_SLUG.
  4. Create a .github/workflows/calibre.yml workflow file in your repository.

Check Command Line Interface documentation for more information about the available commands.

Example workflow: Compare performance of a Pull Request to a production environment

Detect Pull Request preview deployments from GitHub. Each time a Pull Request is deployed to a preview environment, Calibre will run a performance test and compare the results to the production environment.

1name: Calibre Pull Request Review
2on: [deployment_status]
3
4jobs:
5 # Start a new Pull Request Review.
6 # Output will be written to the GitHub Step Summary.
7 # See https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary for more info.
8
9 pr_review:
10 # Only run this job if the deployment status is successful
11 # Only complete this job if the deployment's branch corresponds to a Pull Request
12 # Optional: filter by environment name or URL - contains(github.event.deployment_status.environment_url, 'onrender.com')
13 if: github.event.deployment_status.state == 'success' && contains(github.event.deployment_status.environment_url, 'onrender.com')
14 name: Pull Request Review
15 runs-on: ubuntu-latest
16 steps:
17 - uses: actions/checkout@v4 # Required for `gh pr view`
18 - id: pr
19 env:
20 GH_TOKEN: ${{ github.token }}
21 run: |
22 echo "PR_TITLE=$(gh pr view "${{ github.ref_name }}" --json 'title' --jq '.title')" >> "$GITHUB_OUTPUT"
23 - name: Run Pull Request Review
24 id: pull_request_review
25 if: steps.pr.outputs.PR_TITLE != null
26 env:
27 CALIBRE_API_TOKEN: ${{ secrets.CALIBRE_API_TOKEN }}
28 run: |
29 echo "PULL_REQUEST_REVIEW_REPORT=$(npx calibre site create-pull-request-review \
30 --title="${{ steps.pr.outputs.PR_TITLE }}" \
31 --site="${{ secrets.CALIBRE_SITE_SLUG }}" \
32 --branch="${{ github.ref_name }}" \
33 --sha="${{ github.sha }}" \
34 --url="${{ github.event.deployment_status.environment_url }}" \
35 --waitForResult \
36 --markdown)" >> $GITHUB_OUTPUT
37 - name: Post PR comment
38 if: steps.pr.outputs.PR_TITLE != null
39 env:
40 GH_TOKEN: ${{ github.token }}
41 run: |
42 gh pr comment "${{ github.ref_name }}" --body "${{ steps.pull_request_review.outputs.PULL_REQUEST_REVIEW_REPORT }}"
43 - name: Post Job summary
44 if: steps.pr.outputs.PR_TITLE != null
45 env:
46 GH_TOKEN: ${{ github.token }}
47 run: |
48 echo "${{ steps.pull_request_review.outputs.PULL_REQUEST_REVIEW_REPORT }}" > $GITHUB_STEP_SUMMARY

Example workflow: Notify Calibre of a production deploy

Merges to the main branch will trigger the workflow and create a deploy marker in Calibre.

1name: Notify Calibre of production deploy
2on:
3 push:
4 branches:
5 - main
6
7jobs:
8 build:
9 name: Notify Calibre
10 runs-on: ubuntu-latest
11 steps:
12 - name: Create deploy
13 uses: actions/setup-node@v3
14 env:
15 CALIBRE_API_TOKEN: ${{ secrets.CALIBRE_API_TOKEN }}
16 run: |
17 npx calibre site create-deploy --site=${{ secrets.CALIBRE_SITE_SLUG }} --revision=${{ env.GITHUB_SHA }} --repository https://github.com/${{ env.GITHUB_REPOSITORY }}
18 - name: Get result
19 run: echo "${{steps.set-result.outputs.result}}"