Merge pull request #209 from idan/containerize-development
Add VSCode devcontainer configuration
This commit is contained in:
commit
0e6bea03f2
5 changed files with 102 additions and 0 deletions
6
.devcontainer/.bashrc
Normal file
6
.devcontainer/.bashrc
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
export LS_OPTIONS='-F --color=auto'
|
||||||
|
eval "`dircolors`"
|
||||||
|
alias ls='ls $LS_OPTIONS'
|
||||||
|
if [ -f "$WORKSPACE_DIR/zephyr/zephyr-env.sh" ]; then
|
||||||
|
source "$WORKSPACE_DIR/zephyr/zephyr-env.sh"
|
||||||
|
fi
|
11
.devcontainer/Dockerfile
Normal file
11
.devcontainer/Dockerfile
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
FROM zmkfirmware/zephyr-west-action-arm
|
||||||
|
|
||||||
|
RUN apt-get -y update && \
|
||||||
|
apt-get -y upgrade && \
|
||||||
|
apt-get install --no-install-recommends -y \
|
||||||
|
ssh \
|
||||||
|
gpg && \
|
||||||
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
COPY .bashrc tmp
|
||||||
|
RUN mv /tmp/.bashrc ~/.bashrc
|
8
.devcontainer/devcontainer.json
Normal file
8
.devcontainer/devcontainer.json
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"name": "ZMK Development",
|
||||||
|
"dockerFile": "Dockerfile",
|
||||||
|
"extensions": ["ms-vscode.cpptools"],
|
||||||
|
"runArgs": ["--security-opt", "label=disable"],
|
||||||
|
"containerEnv": {"WORKSPACE_DIR": "${containerWorkspaceFolder}"}
|
||||||
|
}
|
||||||
|
|
BIN
docs/docs/assets/dev-setup/vscode_devcontainer.png
Normal file
BIN
docs/docs/assets/dev-setup/vscode_devcontainer.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 20 KiB |
|
@ -16,6 +16,7 @@ values={[
|
||||||
{label: 'macOS', value: 'mac'},
|
{label: 'macOS', value: 'mac'},
|
||||||
{label: 'Raspberry OS', value: 'raspberryos'},
|
{label: 'Raspberry OS', value: 'raspberryos'},
|
||||||
{label: 'Fedora', value: 'fedora'},
|
{label: 'Fedora', value: 'fedora'},
|
||||||
|
{label: 'VS Code & Docker', value: 'docker'},
|
||||||
]
|
]
|
||||||
}>{props.children}</Tabs>);
|
}>{props.children}</Tabs>);
|
||||||
|
|
||||||
|
@ -178,6 +179,20 @@ Homebrew is required to install the system dependencies. If you haven't done so,
|
||||||
brew install cmake ninja python3 ccache dtc git wget
|
brew install cmake ninja python3 ccache dtc git wget
|
||||||
```
|
```
|
||||||
|
|
||||||
|
</TabItem>
|
||||||
|
<TabItem value="docker">
|
||||||
|
|
||||||
|
This setup leverages the same [image which is used by the GitHub action](https://github.com/zmkfirmware/zephyr-west-action) for local development. Beyond the benefits of [dev/prod parity](https://12factor.net/dev-prod-parity), this approach is also the easiest to set up. No toolchain or dependencies are necessary when using Docker; the container image you'll be using already has the toolchain installed and set up to use.
|
||||||
|
|
||||||
|
|
||||||
|
1. Install [Docker Desktop](https://www.docker.com/products/docker-desktop) for your operating system.
|
||||||
|
2. Install [VS Code](https://code.visualstudio.com/)
|
||||||
|
3. Install the [Remote - Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)
|
||||||
|
|
||||||
|
:::info
|
||||||
|
The docker container includes `west` and the compilation toolchain. If you're using docker and VS Code, you can skip right to [Source Code](#source-code).
|
||||||
|
:::
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
</OsTabs>
|
</OsTabs>
|
||||||
|
|
||||||
|
@ -349,12 +364,63 @@ Since ZMK is built as a Zephyr™ application, the next step is
|
||||||
to use `west` to initialize and update your workspace. The ZMK
|
to use `west` to initialize and update your workspace. The ZMK
|
||||||
Zephyr™ application is in the `app/` source directory:
|
Zephyr™ application is in the `app/` source directory:
|
||||||
|
|
||||||
|
|
||||||
#### Step into the repository
|
#### Step into the repository
|
||||||
|
|
||||||
|
<OsTabs>
|
||||||
|
<TabItem value="debian">
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd zmk
|
cd zmk
|
||||||
```
|
```
|
||||||
|
|
||||||
|
</TabItem>
|
||||||
|
<TabItem value="raspberryos">
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd zmk
|
||||||
|
```
|
||||||
|
|
||||||
|
</TabItem>
|
||||||
|
<TabItem value="fedora">
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd zmk
|
||||||
|
```
|
||||||
|
|
||||||
|
</TabItem>
|
||||||
|
<TabItem value="mac">
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd zmk
|
||||||
|
```
|
||||||
|
|
||||||
|
</TabItem>
|
||||||
|
<TabItem value="win">
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd zmk
|
||||||
|
```
|
||||||
|
|
||||||
|
</TabItem>
|
||||||
|
|
||||||
|
<TabItem value="docker">
|
||||||
|
|
||||||
|
Open the `zmk` checkout folder in VS Code. The repository includes a configuration for containerized development, so an alert will pop up:
|
||||||
|
|
||||||
|
![VS Code Dev Container Configuration Alert](assets/dev-setup/vscode_devcontainer.png)
|
||||||
|
|
||||||
|
Click `Reopen in Container` in order to reopen the VS Code with the running container.
|
||||||
|
|
||||||
|
The first time you do this on your machine, it will pull the docker image down from the registry and build the container. Subsequent launches are much faster!
|
||||||
|
|
||||||
|
:::caution
|
||||||
|
All subsequent steps must be performed from the VS Code terminal _inside_ the container.
|
||||||
|
:::
|
||||||
|
|
||||||
|
</TabItem>
|
||||||
|
</OsTabs>
|
||||||
|
|
||||||
#### Initialize West
|
#### Initialize West
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
|
@ -373,6 +439,17 @@ section again for links to how to do this
|
||||||
west update
|
west update
|
||||||
```
|
```
|
||||||
|
|
||||||
|
:::tip
|
||||||
|
This step pulls down quite a bit of tooling. Go grab a cup of coffee, it can take 10-15 minutes even on a good internet connection!
|
||||||
|
:::
|
||||||
|
|
||||||
|
:::info
|
||||||
|
If you're using Docker, you're done with setup! You must restart the container at this point. The easiest way to do so is to close the VS Code window, verify that the container has stopped in Docker Dashboard, and reopen the container with VS Code.
|
||||||
|
|
||||||
|
Once your container is restarted, proceed to [Building and Flashing](./dev-build.md).
|
||||||
|
:::
|
||||||
|
|
||||||
|
|
||||||
#### Export Zephyr™ Core
|
#### Export Zephyr™ Core
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
|
|
Loading…
Reference in a new issue