Skip to content

Instantly share code, notes, and snippets.

tomlarkworthy / blogs.csv
Created December 7, 2021 08:40
Tables for Medium
View blogs.csv
notebook views likes
switch-dataflow 126 9
merge-dataflow 80 9
mip 62 27
sound-cloud-reactive-audio-visualizer 37 24
# Cloud Run Camunda service
resource "google_cloud_run_service" "camunda" {
name = "camunda"
location = local.config.region
template {
spec {
# Use locked down Service Account
service_account_name =
containers {
image = null_resource.camunda_cloudsql_image.triggers.image
# Policy to allow public access to Cloud Run endpoint
data "google_iam_policy" "noauth" {
binding {
role = "roles/run.invoker"
members = ["allUsers"]
# Bind public policy to our Camunda Cloud Run service
resource "google_cloud_run_service_iam_policy" "noauth" {
# Build a customized image of Camunda to include the cloud sql postgres socket factory library
# Required to connect to Cloud SQL
# Built using Cloud Build, image stored in GCR
resource "null_resource" "camunda_cloudsql_image" {
triggers = {
# Rebuild if we change the base image or the local docker
image = "${local.project}/camunda_cloudsql:${local.config.base_image_tag}_${sha1(local_file.dockerfile.content)}"
provisioner "local-exec" {
command = <<-EOT
View Dockerfile
USER root
RUN apk add --no-cache wget
USER camunda
RUN rm /camunda/lib/postgresql-9.3-1102-jdbc4.jar
RUN wget --directory-prefix=/camunda/lib
# Copy Camunda base image from Dockerhub image into Google Container Registry
module "docker-mirror-camunda-bpm-platform" {
source = ""
image_name = local.config.base_image_name
image_tag = local.config.base_image_tag
dest_prefix = "${local.project}"
# Hydrate docker template file into .build directory
resource "local_file" "dockerfile" {
resource "google_sql_database_instance" "camunda-db" {
name = "camunda-db-postgres"
database_version = "POSTGRES_11"
region = local.config.region
settings {
# Very small instance for testing.
tier = "db-f1-micro"
ip_configuration {
ipv4_enabled = true
tomlarkworthy / Echo.bpmn
Last active May 13, 2020 12:33
Camunda at-least-once delivery
View Echo.bpmn
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="" xmlns:bpmndi="" xmlns:dc="" xmlns:camunda="" xmlns:di="" id="Definitions_0cqopu9" targetNamespace="" exporter="Camunda Modeler" exporterVersion="3.7.0">
<bpmn:process id="Echo" name="Echo" isExecutable="true">
<bpmn:startEvent id="StartEvent_1">
<bpmn:sequenceFlow id="Flow_0fjxlkl" sourceRef="StartEvent_1" targetRef="Gateway_0mt3mgo" />
<bpmn:callActivity id="PushPubsub" name="Publish Echo" camunda:asyncBefore="true" camunda:asyncAfter="true" camunda:exclusive="false" camunda:jobPriority="1" calledElement="PubsubPublish">
<camunda:in businessKey="#{execution.processBusinessKey}" />
View index.ts
// Example in Typescript, nodejs reads a Google Doc if the service account is added as a viewer
// No manual OAUTH2 approval steps required. Just use the google share settings to share
// Use the client_email address found in the crendentials file as the
import fs = require('fs');
import {JWT, auth} from 'google-auth-library';
import {google} from 'googleapis';
const SCOPES = [
// Other options at
tomlarkworthy / Dockerfile
Last active January 21, 2021 13:17
View Dockerfile
USER root
RUN apk add --no-cache wget
USER camunda
RUN rm /camunda/lib/postgresql-9.3-1102-jdbc4.jar
RUN wget --directory-prefix=/camunda/lib