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-pyAZURE_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-pyInstall the Azure Functions SDK and Azure CLI, then:
python3 -m venv .venvsource .venv/bin/activatepip3 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 startcurl -i -X POST -H "Content-Type:application/json" -d "{}" http://localhost:7071/admin/functions/getMailchimpStatspython3 -m pytestCoverage 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_CREDENTIALSdiscussed above.AZURE_FUNCTIONAPP_PUBLISH_PROFILEdiscussed above.CAMPFIRE_ROOMfrom the Campfire Bot Settings.MAILCHIMP_API_KEYfrom Mailchimp settings to be able to connect to the API.MAILCHIMP_LIST_IDfrom Audience settings.PRODUCTIONshould be set to any value.