Skip to content

Instantly share code, notes, and snippets.

View magnetikonline's full-sized avatar
💡
I have an idea!

Peter Mescalchin magnetikonline

💡
I have an idea!
View GitHub Profile
@magnetikonline
magnetikonline / README.md
Last active April 20, 2024 04:18
npm wrapper script to ensure `npm publish` from a clean Git repository.

npm wrapper to ensure npm publish from clean Git repository

Tip

By default npm publish will publish all files within a working directory - excluding .gitignore / .npmignore / package-lock.json.

This is typically fine, but often I find myself leaving un-staged files (e.g. TODO.txt files) in a repository root and these of course get accidently taken along for the publish ride.

Helper script npm-publish-wrap.sh will catch calls to npm publish and:

  • Ensure I'm at the root of a repository (.git directory) found.
@magnetikonline
magnetikonline / README.md
Last active January 29, 2024 23:38
Datadog list all installed integrations.

Datadog list all installed integrations

From what I can see, there is no simple way to extract a list of installed Datadog integrations for documentation/etc. purposes.

Here is a lo-fi method of pulling it from the web UI DOM:

  • Visit the Integrations page for your Datadog account.
  • Open browser web developer tools.
  • Execute the following from the JavaScript console:
@magnetikonline
magnetikonline / README.md
Last active August 18, 2021 12:32
Rudimentary JavaScript object deep copy.

Rudimentary JavaScript object deep copy

Function to perform a deep copy of an object - rudimentary in that it will only handle the following types:

  • Primitives
  • Array
  • Object

Basically can perform the following, but also copy undefined:

@magnetikonline
magnetikonline / README.md
Last active March 18, 2024 01:27
Python threaded workers using ThreadPoolExecutor().

Python threaded workers using ThreadPoolExecutor()

A pattern for using concurrent.futures.ThreadPoolExecutor() to execute a series of "worker" functions in parallel, processing a queue of assigned "work".

How it works:

  • worker_init() creates:
    • Queues for "work" and "results".
    • A threading.Event() to denote "no more work in queue".
    • A futures.ThreadPoolExecutor().
@magnetikonline
magnetikonline / README.md
Last active January 1, 2024 11:17
Cleanup legacy GitHub Actions workflow runs.

Cleanup legacy GitHub Actions workflow runs

Python utility to bulk delete GitHub Actions runs for a given workflow, either current or legacy/since removed. The GitHub web UI currently allows removal of individual workflow runs - but this becomes tedious quickly when performed in bulk.

Usage

Create a Personal access token allowing the workflow scope:

image

@magnetikonline
magnetikonline / README.md
Last active December 10, 2023 10:53
Quick example for using the GitHub Container (Docker) registry.

Quick example for using the GitHub Container registry

Human user access

Create a new Personal access token with the following permissions:

delete:packages
read:packages
write:packages
@magnetikonline
magnetikonline / README.md
Last active March 13, 2024 21:30
Enable GitHub Dependabot for Golang based repositories.
@magnetikonline
magnetikonline / workflow.yaml
Last active April 27, 2021 23:50
Simple flow for passing artefacts between GitHub Actions workflow jobs.
name: Workflow
on:
push:
branches:
- main
jobs:
first:
runs-on: ubuntu-latest
@magnetikonline
magnetikonline / README.md
Last active March 18, 2024 03:08
Remove existing AWS CloudFormation stack, but retain all managed resources.

Delete CloudFormation stack - retaining resources

A guide for removing an existing CloudFormation stack - but retaining all managed resources.

First step - we need to get the CloudFormation stack into a state of DELETE_FAILED. This can be achieve by attempting stack delete with an IAM role that only has IAM action rights to cloudformation:DeleteStack and cloudformation:DescribeStackResources.

Create a new temporary IAM role with only the following allowed policy actions:

{
@magnetikonline
magnetikonline / README.md
Last active September 20, 2023 13:01
Remove AWS created network interfaces for VPC Lambda functions from given security group ID.

Remove AWS network interfaces from security group ID

Script has been handy to clean up security groups which have been used with VPC honed AWS Lambda functions and maintain an ENI association.

Why this is a problem:

  • Lambda function is created within the given VPC subnet(s) and assigned security group.
  • During deployment, AWS on your behalf creates ENIs assigned to the security group and placed into the instructed subnet(s).
  • Next, change is made to Lambda involving new security group association. AWS now creates new ENIs - as ENI reuse between Lambdas is only for the same security group/subnet combination.
  • Finally, user wishes to clean up legacy security group - but can't as existing ENIs still use security group.