Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

We are showing here an example of how the Jira Snapshots API can be called from using Python codecodes that is triggered from a GitHub Action.
Similar implementations can be done in any language, so this example is given for the sake of demonstration.
Prerequisites:

  1. A Jira Snapshot exists, and it has each API enabled as explained on this page.

  2. The Api Key is known, and set by an environment variable (in the code snippet, “SNAPSHOT_APIKEY”)

  3. The web request endpoint is available through the environment variable (in the code snippet, “SNAPSHOTS_WEB_REQUEST_URL”)

A snippet of the GitHub Workflow file:

Code Block
languagebash
name: RadBee-Sandbox Test

on: 
  workflow_dispatch:
    inputs:
      snapshots_web_request_url:
        description: 'Snapshots web request url'
        required: true
        type: string
      snapshots_apikey:
        description: 'Snapshots api key'
        required: true
        type: string

permissions:
    contents: read

env:
  PYTHON_VERSION: '3.11'
  SNAPSHOTS_WEB_REQUEST_URL: ${{ inputs.snapshots_web_request_url }}
  SNAPSHOTS_APIKEY: ${{ inputs.snapshots_apikey }}

jobs:
  build:
      runs-on: macos-latest
      steps:
      - uses: actions/checkout@v3
      - name: Set up Python ${{ env.PYTHON_VERSION }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ env.PYTHON_VERSION }}
      - name: Install dependencies
        run: 
          pip install requests
          python -m pip install --upgrade pip
          python tests/take_snapshot.py

And this is the snippet of the Python program:

Code Block
languagepy
import requests
import os


def take_snapshot():
    print("Start taking snapshot...")
    url = os.environ["SNAPSHOTS_WEB_REQUEST_URL"]
    headers = {"jira-snapshots-api-key": os.environ["SNAPSHOTS_APIKEY"]}
    response = requests.post(url, headers=headers)
    if response.status_code == 200:
        print("Snapshot was triggered successfully!")
    else:
        print(f"Error on taking snapshot: {response.status_code}")


# run
if __name__ == "__main__":
    take_snapshot()