Skip to content

Commit

Permalink
[devcontainer] Standalone build and update (project-chip#26511)
Browse files Browse the repository at this point in the history
* [vscode] Make the devcontainer image build a standalone script

This enable us to set --net=host for the image creation. This should avoid
dns restrictions one may have on one's local network by giving the image
the same network as the host. This is only for the image build, not for
running the container.

Signed-off-by: Yoan Picchi <[email protected]>

* [vscode] Update dev container configuration

- Move deprecated configuration into correct section
- Add mcu-debug.debug-tracker-vscode into extension list.
This extension is required for cortex debug.

Signed-off-by: Vincent Coubard <[email protected]>

---------

Signed-off-by: Yoan Picchi <[email protected]>
Signed-off-by: Vincent Coubard <[email protected]>
Co-authored-by: Vincent Coubard <[email protected]>
  • Loading branch information
2 people authored and tianfeng-yang committed May 17, 2023
1 parent b904ab7 commit ff3c302
Show file tree
Hide file tree
Showing 2 changed files with 121 additions and 31 deletions.
85 changes: 85 additions & 0 deletions .devcontainer/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
#!/bin/bash

#
# Copyright (c) 2023 Project CHIP Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

HERE="$(dirname "$0")"
CHIP_ROOT="$(realpath "$HERE"/..)"
BUILD_VERSION="latest"
IMAGE_TAG="matter-dev-environment:local"
USER_UID=$UID

function show_usage() {
cat <<EOF
Usage: $0
Build vscode dev environment docker image.
Options:
-h,--help Show this help
-t,--tag Image tag - default is matter-dev-environment:local
-u,--uid User UIDa - default is the current user ID
-v,--version Build version - default is the latest
EOF
}

SHORT=t:,u:,h:,v
LONG=tag:,uid:,help:,version:
OPTS=$(getopt -n build --options "$SHORT" --longoptions "$LONG" -- "$@")

eval set -- "$OPTS"

while :; do
case "$1" in
-h | --help)
show_usage
exit 0
;;
-t | --tag)
IMAGE_TAG=$2
shift 2
;;
-u | --uid)
USER_UID=$2
shift 2
;;
-v | --version)
BUILD_VERSION=$2
shift 2
;;
--)
shift
break
;;
*)
echo "Unexpected option: $1"
show_usage
exit 2
;;
esac
done

if [ "$USER_UID" = "0" ]; then
USER_UID=1000
fi

docker build \
-t "$IMAGE_TAG" \
--pull \
--build-arg USER_UID="$USER_UID" \
--build-arg BUILD_VERSION="$BUILD_VERSION" \
--network=host \
"$HERE"
67 changes: 36 additions & 31 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,38 +14,43 @@
"mounts": [
"source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind"
],
"build": {
"dockerfile": "Dockerfile",
"args": {
"BUILD_VERSION": "0.7.3"
}
},
"initializeCommand": ".devcontainer/build.sh --tag matter-dev-environment:local --version 0.7.3",
"image": "matter-dev-environment:local",
"remoteUser": "vscode",
// Add the IDs of extensions you want installed when the container is created in the array below.
"extensions": [
"aaron-bond.better-comments",
"augustocdias.tasks-shell-input",
"christian-kohler.path-intellisense",
"eamodio.gitlens",
"editorconfig.editorconfig",
"esbenp.prettier-vscode",
"foxundermoon.shell-format",
"github.vscode-pull-request-github",
"maelvalais.autoconf",
"marus25.cortex-debug",
"ms-azuretools.vscode-docker",
"ms-vscode.cpptools",
"msedge-dev.gnls",
"redhat.vscode-yaml",
"vadimcn.vscode-lldb",
"xaver.clang-format",
"yuichinukiyama.vscode-preview-server",
"yzhang.markdown-all-in-one"
],
// Use 'settings' to set *default* container specific settings.json values on container create.
// You can edit these settings after create using File > Preferences > Settings > Remote.
"settings": {
"terminal.integrated.shell.linux": "/bin/bash"
"customizations": {
"vscode": {
// Add the IDs of extensions you want installed when the container is created in the array below.
"extensions": [
"mcu-debug.debug-tracker-vscode",
"aaron-bond.better-comments",
"augustocdias.tasks-shell-input",
"christian-kohler.path-intellisense",
"eamodio.gitlens",
"editorconfig.editorconfig",
"esbenp.prettier-vscode",
"foxundermoon.shell-format",
"github.vscode-pull-request-github",
"maelvalais.autoconf",
"marus25.cortex-debug",
"ms-azuretools.vscode-docker",
"ms-vscode.cpptools",
"msedge-dev.gnls",
"redhat.vscode-yaml",
"vadimcn.vscode-lldb",
"xaver.clang-format",
"yuichinukiyama.vscode-preview-server",
"yzhang.markdown-all-in-one"
],
"settings": {
"terminal.integrated.defaultProfile.linux": "bash",
"terminal.integrated.profiles.linux": {
"bash": {
"path": "/bin/bash",
"args": ["-l"]
}
}
}
}
},
"remoteEnv": {
"GIT_PS1_SHOWDIRTYSTATE": "1",
Expand Down

0 comments on commit ff3c302

Please sign in to comment.