Skip to content
This repository has been archived by the owner on Oct 24, 2021. It is now read-only.

consoledotdev/bc-totorobot-py

Repository files navigation

Basecamp Totorobot (Python)

Azure functions to send various stats into Basecamp Campfire as Totorobot.

Methods

Deployment

Uses main.bicep to define the Azure resources.

Automatic

Uses Azure ARM and Login GitHub actions to deploy.

AZURE_CREDENTIALS created as per the service principal instructions:

az ad sp create-for-rbac --name "bc-totorobot-py - GitHub" --sdk-auth --role contributor \
    --scopes /subscriptions/244fa449-6833-417a-9b8e-be5a66bdf344/resourceGroups/bc-totorobot-py

AZURE_FUNCTIONAPP_PUBLISH_PROFILE set up according to the docs.

Manual

Install Bicep which is used to compile the ARM template that manages the Azure resources.

# Assumes bc-totorobot-py resource group exists
bicep build ./main.bicep # generates main.json
az login
az deployment group create -f ./main.json -g bc-totorobot-py
func azure functionapp publish bc-totorobot-py

Local development

Setup

Install the Azure Functions SDK and Azure CLI, then:

  1. python3 -m venv .venv
  2. source .venv/bin/activate
  3. pip3 install -r requirements.txt

Local dev server

Azurite (VS Code extension or NPM) is required for running the Azure Functions server locally.

# Set these values appropriately
export CAMPFIRE_ROOM=""
export MAILCHIMP_API_KEY=""
export MAILCHIMP_LIST_ID="" 
func host start

Trigger timer function

curl -i -X POST -H "Content-Type:application/json" -d "{}" http://localhost:7071/admin/functions/getMailchimpStats

Tests

python3 -m pytest

Coverage reports:

python3 -m coverage run -m pytest
python3 -m coverage report --omit '.venv/*'

Environment variables

These are substituted in as part of the deploy process and set in the GitHub repo secrets:

  • AZURE_CREDENTIALS discussed above.
  • AZURE_FUNCTIONAPP_PUBLISH_PROFILE discussed above.
  • CAMPFIRE_ROOM from the Campfire Bot Settings.
  • MAILCHIMP_API_KEY from Mailchimp settings to be able to connect to the API. MAILCHIMP_LIST_ID from Audience settings.
  • PRODUCTION should be set to any value.