Skip to main content

Expose Escrow AI workflows to CICD pipelines

Project description

Copyright 2024 BeeKeeperAI(R)

EscrowAI Github SDK

The github sdk is a cli tool that enables algorithm upload on escrow ai from github workflows

installation

The sdk is available as a Pypi package and can be installed using

pip install EscrowAICI

Prerequisites and dependencies

To use the sdk, generate a private public key pair using openssl

# generate a private key with the correct length
openssl genrsa -out private-key.pem 3072

# generate corresponding public key
openssl rsa -in private-key.pem -pubout -out public-key.pem

setup your github repository secrets settings using

  • BEEKEEPER_PROJECT_ID
  • BEEKEEPER_ORGANIZATION_ID
  • PROJECT_PRIVATE_KEY: Private key generated in earlier step
  • CONTENT_ENCRYPTION_KEY

Usage

Basic stucture

$ escrowai -h
usage: escrowai [-h] [--algorithm_type ALGORITHM_TYPE] [--key KEY] folder

Encrypt files and package them into a zip archive.

positional arguments:
  folder                The folder path containing the files to encrypt

optional arguments:
  -h, --help            show this help message and exit
  --algorithm_type ALGORITHM_TYPE
                        Algorithm type can be either validation or training
  --key KEY             The encryption key (base64 encoded)

arguments

Here is a sample github workflow showing how to use the sdk

name: Encrypt and Upload on Push

on:
  push:
    branches:
      - testing

jobs:
  encrypt_and_upload:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v3

      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: '3.x'

      - name: Install Dependencies
        run: |
          python -m pip install --upgrade pip
          pip install cryptography pyyaml azure-storage-blob auth0-python python-dateutil sseclient
          pip install EscrowAICI

      - name: Encrypt Files and Upload
        env:
          CONTENT_ENCRYPTION_KEY: ${{ secrets.SECRET_KEY_BASE64 }}
          AZURE_STORAGE_URL: ${{ secrets.AZURE_STORAGE_URL }}
          BEEKEEPER_PROJECT_ID: ${{ secrets.BEEKEEPER_PROJECT_ID }}
          BEEKEEPER_ORGANIZATION_ID: ${{ secrets.BEEKEEPER_ORGANIZATION_ID }}
          PROJECT_PRIVATE_KEY: ${{ secrets.PROJECT_PRIVATE_KEY }}
        run: |
          repo_name="${GITHUB_REPOSITORY##*/}"
          folder_path="files/$repo_name"
          zip_file="files/${repo_name}.zip"
          mkdir -p $folder_path
          # Assuming you need to copy or prepare files in this directory
          rsync -av --exclude='.git' --exclude='files' . ${folder_path}
          
          escrowai ${folder_path}

      - name: Clean up
        run: |
          rm -rf files/

There is also a helper script installed for interacting with report artifacts if your run produces those

Before use ensure to export the environment variables below

BEEKEEPER_PROJECT_ID
BEEKEEPER_ORGANIZATION_ID
BEEKEEOER_USER
CONTENT_ENCRYPTION_KEY # base64 encoded
PROJECT_PRIVATE_KEY # base64 encoded

The command below will get give you the basic usage

$ escrowai-reports --help
usage: escrowai-reports [-h] [--auth-key AUTH_KEY] [--project-id PROJECT_ID] [--organization-id ORGANIZATION_ID] [--environment ENVIRONMENT] [--user USER]
                        {find-run-config,list-run-configs,list-runs,list-artifacts,download-artifact,bulk-download} ...

Helper CLI for EscrowAI run configurations, runs, and report artifacts.

Basic usage is in the form escrowai-reports --env <targetenv> command args

positional arguments:
  {find-run-config,list-run-configs,list-runs,list-artifacts,download-artifact,bulk-download}
    find-run-config     Locate a run configuration id by algo/dataset version tags.
    list-run-configs    List run configurations for a project.
    list-runs           List runs tied to a run configuration.
    list-artifacts      List report artifacts for a run or report.
    download-artifact   Download a single report artifact via SAS token.
    bulk-download       Request zipped report artifacts and download them when ready.

options:
  -h, --help            show this help message and exit
  --auth-key AUTH_KEY   Base64-encoded private key (defaults to env PROJECT_PRIVATE_KEY).
  --project-id PROJECT_ID
                        EscrowAI project id (defaults to env BEEKEEPER_PROJECT_ID).
  --organization-id ORGANIZATION_ID
                        Organization id (defaults to env BEEKEEPER_ORGANIZATION_ID).
  --environment ENVIRONMENT
                        EscrowAI environment slug such as dev, tst, stg, or prod (default: prod).
  --user USER           Optional EscrowAI username (defaults to env BEEKEEPER_USER).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

escrowaici-0.1.9-py3-none-any.whl (18.5 kB view details)

Uploaded Python 3

File details

Details for the file escrowaici-0.1.9-py3-none-any.whl.

File metadata

  • Download URL: escrowaici-0.1.9-py3-none-any.whl
  • Upload date:
  • Size: 18.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for escrowaici-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 3c6770d887df62953b0f340f0db0ebb56e4e5df72ca5617b537f858346015e96
MD5 a887d79cba8cd5873453656d3526b028
BLAKE2b-256 5ae61438193ddbb2a2cdec6befae15d84614811eca96084360faa6790f8dda4f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page