Skip to content

Commit 094248b

Browse files
authored
Merge pull request #633 from reubenmiller/chore-update-dev-container-2026-03
dev: update dev container
2 parents 17bfd1e + 622b8b2 commit 094248b

3 files changed

Lines changed: 84 additions & 104 deletions

File tree

.devcontainer/Dockerfile

Lines changed: 21 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# Licensed under the MIT License. See https://go.microsoft.com/fwlink/?linkid=2090316 for license information.
44
#-------------------------------------------------------------------------------------------------------------
55

6-
FROM golang:1.22
6+
FROM golang:1.25
77

88
# Avoid warnings by switching to noninteractive
99
ENV DEBIAN_FRONTEND=noninteractive
@@ -20,7 +20,7 @@ COPY .devcontainer/install-powershell.sh /tmp/install/
2020

2121
# Configure apt, install packages and tools
2222
RUN /tmp/install/install-powershell.sh \
23-
&& curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
23+
&& curl -fsSL https://deb.nodesource.com/setup_24.x | bash - \
2424
#
2525
# Update and install packages
2626
#
@@ -41,23 +41,11 @@ RUN /tmp/install/install-powershell.sh \
4141
&& cd /tmp/gotools \
4242
&& GOPATH=/tmp/gotools go install -v golang.org/x/tools/gopls@latest 2>&1 \
4343
&& GOPATH=/tmp/gotools go install -v honnef.co/go/tools/cmd/staticcheck@latest \
44-
&& GOPATH=/tmp/gotools go install -v golang.org/x/tools/cmd/gorename@latest \
4544
&& GOPATH=/tmp/gotools go install -v golang.org/x/tools/cmd/goimports@latest \
46-
&& GOPATH=/tmp/gotools go install -v golang.org/x/tools/cmd/guru@latest \
47-
&& GOPATH=/tmp/gotools go install -v golang.org/x/lint/golint@latest \
48-
&& GOPATH=/tmp/gotools go install -v github.com/mdempsky/gocode@latest \
4945
&& GOPATH=/tmp/gotools go install -v github.com/haya14busa/goplay/cmd/goplay@latest \
50-
&& GOPATH=/tmp/gotools go install -v github.com/sqs/goreturns@latest \
5146
&& GOPATH=/tmp/gotools go install -v github.com/josharian/impl@latest \
52-
&& GOPATH=/tmp/gotools go install -v github.com/davidrjenni/reftools/cmd/fillstruct@latest \
53-
&& GOPATH=/tmp/gotools go install -v github.com/uudashr/gopkgs/v2/cmd/gopkgs@latest \
54-
&& GOPATH=/tmp/gotools go install -v github.com/ramya-rao-a/go-outline@latest \
55-
&& GOPATH=/tmp/gotools go install -v github.com/acroca/go-symbols@latest \
56-
&& GOPATH=/tmp/gotools go install -v github.com/godoctor/godoctor@latest \
57-
&& GOPATH=/tmp/gotools go install -v github.com/rogpeppe/godef@latest \
58-
&& GOPATH=/tmp/gotools go install -v github.com/zmb3/gogetdoc@latest \
59-
&& GOPATH=/tmp/gotools go install -v github.com/fatih/gomodifytags@latest \
60-
&& GOPATH=/tmp/gotools go install -v github.com/mgechev/revive@latest \
47+
&& GOPATH=/tmp/gotools go install -v github.com/fatih/gomodifytags@latest \
48+
&& GOPATH=/tmp/gotools go install -v github.com/mgechev/revive@latest \
6149
&& GOPATH=/tmp/gotools go install -v github.com/go-delve/delve/cmd/dlv@latest 2>&1 \
6250
#
6351
# Install Go tools
@@ -75,44 +63,36 @@ RUN /tmp/install/install-powershell.sh \
7563
&& chmod 0440 /etc/sudoers.d/$USERNAME \
7664
#
7765
# Install Docker CE cli
78-
&& apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common lsb-release \
79-
&& curl -fsSL https://download.docker.com/linux/$(lsb_release -is | tr '[:upper:]' '[:lower:]')/gpg | apt-key add - 2>/dev/null \
80-
&& add-apt-repository "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/$(lsb_release -is | tr '[:upper:]' '[:lower:]') $(lsb_release -cs) stable" \
66+
&& apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release \
67+
&& install -m 0755 -d /etc/apt/keyrings \
68+
&& curl -fsSL https://download.docker.com/linux/$(lsb_release -is | tr '[:upper:]' '[:lower:]')/gpg \
69+
| gpg --dearmor -o /etc/apt/keyrings/docker.gpg \
70+
&& chmod a+r /etc/apt/keyrings/docker.gpg \
71+
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/$(lsb_release -is | tr '[:upper:]' '[:lower:]') $(lsb_release -cs) stable" \
72+
> /etc/apt/sources.list.d/docker.list \
8173
&& apt-get update \
82-
&& apt-get install -y docker-ce-cli \
83-
#
84-
# Install Docker Compose
85-
&& curl -sSL "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose \
86-
&& chmod +x /usr/local/bin/docker-compose \
74+
&& apt-get install -y docker-ce-cli docker-compose-plugin \
8775
#
8876
# Install bash tools
8977
# https://github.com/bats-core/bats-core
90-
&& npm install -g bats \
78+
# password manager/s: bitwarden
79+
&& npm install -g bats @bitwarden/cli \
9180
&& apt-get install -y vim jq bash-completion asciinema \
9281
#
9382
# Fish shell
9483
&& apt-get install -y fish zsh \
9584
#
85+
# CI/CD tools
86+
&& curl -1sLf 'https://dl.cloudsmith.io/public/task/task/setup.deb.sh' | bash \
87+
&& echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' > /etc/apt/sources.list.d/goreleaser.list \
88+
&& apt-get update \
89+
&& apt-get install -y task goreleaser \
90+
#
9691
# Clean up
9792
&& apt-get autoremove -y \
9893
&& apt-get clean -y \
9994
&& rm -rf /var/lib/apt/lists/* /tmp/gotools
10095

101-
#
102-
# Install password manager/s
103-
#
104-
RUN curl -sSfL "https://vault.bitwarden.com/download/?app=cli&platform=linux" -o /tmp/bw.zip \
105-
&& unzip /tmp/bw.zip -d /usr/local/bin/ \
106-
&& chmod a+x /usr/local/bin/bw \
107-
&& rm -f /tmp/bw.zip
108-
109-
#
110-
# Shells
111-
#
112-
RUN echo "Installing shells" \
113-
# Fish shell
114-
&& apt-get install -y fish zsh
115-
11696

11797
# AsciiCinema configuration
11898
RUN chown -R $USER_UID:$USER_GID /home/$USERNAME \
@@ -137,18 +117,10 @@ RUN echo "autoload -U compinit; compinit -i" | sudo tee -a /home/$USERNAME/.zshr
137117
# fish config
138118
&& sudo mkdir -p /home/$USERNAME/.config/fish/
139119

140-
# CI/CD tools
141-
RUN cd /tmp \
142-
&& command -v task || sudo /usr/local/go/bin/go install github.com/go-task/task/v3/cmd/task@latest \
143-
&& sudo cp /root/go/bin/task /usr/local/bin/ \
144-
&& sudo /usr/local/go/bin/go install github.com/goreleaser/goreleaser@latest \
145-
&& sudo cp /root/go/bin/goreleaser /usr/local/bin/
146120

147121
# Fix gopath permissions for non-root user
148-
RUN sudo chown -R "$USERNAME:$USERNAME" /go
122+
RUN sudo chown -R "$USERNAME:$USERNAME" /go /home/$USERNAME/
149123

150-
# Update this to "on" or "off" as appropriate
151-
ENV GO111MODULE=auto
152124
ENV LANG=C.UTF-8
153125
ENV LC_ALL=C.UTF-8
154126

.devcontainer/devcontainer.json

Lines changed: 57 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,74 @@
11
{
22
"name": "go-c8y-cli",
3-
"dockerFile": "Dockerfile",
4-
"context": "..",
3+
"build": {
4+
"dockerfile": "Dockerfile",
5+
"context": ".."
6+
},
57
"runArgs": [ "--cap-add=SYS_PTRACE", "--security-opt", "seccomp=unconfined" ],
68

79
// Use 'forwardPorts' to make a list of ports inside the container available locally.
810
"forwardPorts": [9000],
911

10-
// Use 'settings' to set *default* container specific settings.json values on container create.
11-
// You can edit these settings after create using File > Preferences > Settings > Remote.
12-
"settings": {
13-
"terminal.integrated.profiles.linux": {
14-
"bash": {
15-
"path": "bash"
16-
},
17-
"zsh": {
18-
"path": "zsh"
19-
},
20-
"fish": {
21-
"path": "fish"
22-
},
23-
"tmux": {
24-
"path": "tmux",
25-
"icon": "terminal-tmux"
26-
},
27-
"pwsh": {
28-
"path": "pwsh",
29-
"icon": "terminal-powershell"
30-
}
31-
},
32-
"go.gopath": "/go",
33-
"go.goroot": "/usr/local/go",
34-
"go.lintTool": "golangci-lint",
35-
// "go.inferGopath": true,
36-
"go.useLanguageServer": true,
12+
"customizations": {
13+
"vscode": {
14+
"settings": {
15+
"terminal.integrated.defaultProfile.linux": "zsh",
16+
"terminal.integrated.profiles.linux": {
17+
"bash": {
18+
"path": "bash"
19+
},
20+
"zsh": {
21+
"path": "zsh"
22+
},
23+
"fish": {
24+
"path": "fish"
25+
},
26+
"tmux": {
27+
"path": "tmux",
28+
"icon": "terminal-tmux"
29+
},
30+
"pwsh": {
31+
"path": "pwsh",
32+
"icon": "terminal-powershell"
33+
}
34+
},
35+
"go.lintTool": "golangci-lint",
36+
"go.lintFlags": ["--fast"],
3737

38-
// Yaml code completion
39-
"yaml.completion": true,
40-
"yaml.schemas": {
41-
"./api/spec/schema.json": "api/spec/yaml/*.yaml",
42-
"./tools/schema/session.schema.json": ".cumulocity/*.y*ml"
43-
},
44-
"powershell.pester.useLegacyCodeLens": false,
45-
"extensions.ignoreRecommendations": true,
46-
"go.testEnvFile": "${workspaceFolder}/.env",
47-
"go.delveConfig": {
48-
"dlvLoadConfig": {
49-
"maxStringLen": 1024,
50-
"maxArrayValues": 1000,
38+
// Yaml code completion
39+
"yaml.completion": true,
40+
"yaml.schemas": {
41+
"./api/spec/schema.json": "api/spec/yaml/*.yaml",
42+
"./tools/schema/session.schema.json": ".cumulocity/*.y*ml"
43+
},
44+
"powershell.pester.useLegacyCodeLens": false,
45+
"extensions.ignoreRecommendations": true,
46+
"go.testEnvFile": "${workspaceFolder}/.env",
47+
"go.delveConfig": {
48+
"dlvLoadConfig": {
49+
"maxStringLen": 1024,
50+
"maxArrayValues": 1000
51+
},
52+
"apiVersion": 2
53+
}
5154
},
52-
"apiVersion": 2,
53-
},
54-
},
5555

56-
// Add the IDs of extensions you want installed when the container is created in the array below.
57-
"extensions": [
58-
"golang.go",
59-
"ms-vscode.powershell-preview",
60-
"redhat.vscode-yaml",
61-
"eamodio.gitlens"
62-
],
56+
// Add the IDs of extensions you want installed when the container is created.
57+
"extensions": [
58+
"golang.go",
59+
"ms-vscode.PowerShell",
60+
"redhat.vscode-yaml",
61+
"eamodio.gitlens",
62+
"task.vscode-task"
63+
]
64+
}
65+
},
6366

64-
// Uncomment to use the Docker CLI from inside the container. See https://aka.ms/vscode-remote/samples/docker-in-docker.
67+
// Bind-mount the host Docker socket so the CLI inside the container can talk to Docker.
6568
"mounts": [
6669
"source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind"
6770
],
68-
71+
6972
// Install powershell module dependencies for tests etc.
7073
"postCreateCommand": "task checkout-addons",
7174

.devcontainer/install-powershell.sh

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,13 @@ case $arch in
1515

1616
esac
1717

18+
PWSH_VERSION="7.4.6"
19+
20+
# pre-requisites
21+
apt-get update && apt-get install -y libicu-dev
22+
1823
# Download the powershell '.tar.gz' archive
19-
curl -L -o /tmp/powershell.tar.gz https://github.com/PowerShell/PowerShell/releases/download/v7.2.2/powershell-7.2.2-linux-$arch.tar.gz
24+
curl -L -o /tmp/powershell.tar.gz "https://github.com/PowerShell/PowerShell/releases/download/v${PWSH_VERSION}/powershell-${PWSH_VERSION}-linux-${arch}.tar.gz"
2025

2126
# Create the target folder where powershell will be placed
2227
mkdir -p /opt/microsoft/powershell/7

0 commit comments

Comments
 (0)