ci/cd

19 posts tagged “ci/cd”.

  1. 2026
  2. I Built My Own CI/CD, and the Interesting Part Wasn't the CI

    On replacing GitHub Actions with something that owns almost nothing — and why that turned out to be the whole point.

    21 min read
  3. 2025
  4. Automatically maintaining Homebrew formulas using GitHub Actions

    I previously wrote about Packaging a Python CLI tool for Homebrew. I've now figured out a pattern for automatically updating those formulas over time, using GitHub Actions.

    3 min read
  5. actions/setup-python caching for setup.py projects

    I used to use a combination of and in all of my Python GitHub Actions projects in order to install Python dependencies via a cache, rather than hitting PyPI to download copies every time.

    1 min read
  6. Auto-formatting YAML files with yamlfmt

    I decided to see if there was an equivalent of Black or Prettier for YAML files. I found yamlfmt from Google. Update : It turns out Prettier can format YAML too.

    2 min read
  7. Bundling Python inside an Electron app

    I used python-build-standalone for this, which provides a version of Python that is designed for easy of bundling - it's also used by PyOxidize.

    1 min read
  8. Format code examples in documentation with blacken-docs

    I decided to enforce that all code examples in the Datasette documentation be formatted using Black. Here's issue 1718 where I researched the options for doing this. I found the blacken-docs tool.

    1 min read
  9. Ensure labels exist in a GitHub repository

    I wanted to ensure that when this template repository was used to create a new repo that repo would have a specific set of labels.

    1 min read
  10. 2024
  11. Adding Sphinx autodoc to a project, and configuring Read The Docs to build it

    I built a new API reference page today for , using the Sphinx autodoc extension to extract docstrings from the code and use them to build a full class reference.

    3 min read
  12. Attaching a generated file to a GitHub release using Actions

    For Datasette Desktop I wanted to run an action which, when I created a release, would build an asset for that release and then upload and attach it.

    1 min read
  13. Conditionally running a second job in a GitHub Actions workflow

    My simonwillisonblog-backup workflow periodically creates a JSON backup of my blog's PostgreSQL database, using db-to-sqlite and sqlite-diffable.

    1 min read
  14. Configuring Dependabot for a Python project

    GitHub's Dependabot can automatically file PRs with bumps to dependencies when new versions of them are available.

    1 min read
  15. 2023
  16. Commit a file if it changed

    This recipe runs a Python script to update a README, then commits it back to the parent repo but only if it has changed: My first attempt threw an error if I tried o run and the README had not…

    1 min read
  17. Check spelling using codespell

    Today I discovered codespell via this Rich commit. is a really simple spell checker that can be run locally or incorporated into a CI flow. codespell is designed to run against source code.

    1 min read
  18. Building and deploying a custom site using GitHub Actions and GitHub Pages

    I figured out a minimal pattern for building a completely custom website using GitHub Actions and deploying the result to GitHub Pages. First you need to enable GitHub Pages for the repository.

    1 min read
  19. Building Mastodon bots with GitHub Actions and toot

    Twitter announced today that they'll be ending free API access for bots. My @covidsewage Twitter bot posts a screenshot of the latest Covid sewage data for parts of the San Francisco Bay Area every…

    2 min read
  20. GitHub Actions job summaries

    New feature announced here. Here's the full documentation. These are incredibly easy to use. GitHub creates a file in your workspace and puts the filename in , so you can build the summary markdown…

    1 min read
  21. Creating GitHub repository labels with an Actions workflow

    Newly created GitHub repositories come with a default set of labels. I have several labels I like to add on top of these.

    2 min read
  22. Code coverage using pytest and codecov.io

    I got my asgi-csrf Python package up to 100% code coverage. Here's the pull request. I started by installing and using the pytest-cov pytest plugin.

    1 min read
  23. Dump out all GitHub Actions context

    Useful for seeing what's available for conditions (see context and expression syntax). I copied this example action from here and deployed it here. Here's an example run.

    1 min read