Using your `postCreateCommand`to Reduce Complexity

01 Mar 2023 21:03 UTC-08:00

In prep for my talk at SCALE, I've been playing with making my development systems moare streamlined using Dev Containers.

Something that I recently did was use the PostStartCommand for my GH Action.

My original thought was to just use the dev container as my environment. Currently that doesn't seem possible.

That said, I can use the same file that I have for my dev container to prep my GH Actions.

Here is a cleaner version of my devcontainer.json

{
    "name": "Python",
    "build": {
        "dockerfile": "Dockerfile",
        "context": "..",
        "args": {"IMAGE": "python:3.11"}
    },
    "postCreateCommand": "bash .devcontainer/setup.sh",
    "customizations": {
        "vscode": {"extensions": ["microsoft.python"]}
    }

that postCreateCommand can be used in a GitHub Action. For my PyTest Action

name: PyTest
...
jobs:
  test-with-pytest:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
      - name: Install requirements
        run: |
          bash .devcontainer/setup.sh
      - name: Run tests
        run: python -m pytest

I could see a benefit of using everything in a container but at the moment it's easier to maintain each one separately.