Azure functions to send various stats into Basecamp Campfire as Totorobot.
getMailchimpStats
: posts the latest stats from Mailchimp.- Type: Timer trigger function.
Uses main.bicep
to define the Azure resources.
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.
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
Install the Azure Functions SDK and Azure CLI, then:
python3 -m venv .venv
source .venv/bin/activate
pip3 install -r requirements.txt
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
curl -i -X POST -H "Content-Type:application/json" -d "{}" http://localhost:7071/admin/functions/getMailchimpStats
python3 -m pytest
Coverage reports:
python3 -m coverage run -m pytest
python3 -m coverage report --omit '.venv/*'
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.