Skip to content

Commit e79297a

Browse files
committed
Fix Dockerfile and update workflow to read the rust version
Signed-off-by: Doru Blânzeanu <[email protected]>
1 parent 97fc75c commit e79297a

File tree

3 files changed

+33
-13
lines changed

3 files changed

+33
-13
lines changed

.devcontainer/Dockerfile

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ FROM mcr.microsoft.com/devcontainers/base:debian AS base
44

55
ARG USER=vscode
66
ARG GROUP=vscode
7-
ARG RUST_TOOLCHAIN=1.81.0
87

98
ENV HOME="/home/${USER}"
109
ENV PATH="$HOME/.cargo/bin:$PATH"
@@ -23,16 +22,18 @@ RUN apt-get update \
2322
sudo \
2423
wget
2524

25+
ARG LLVM_VERSION=17
26+
2627
# Install llvm
2728
RUN wget https://apt.llvm.org/llvm.sh \
2829
&& chmod +x ./llvm.sh \
29-
&& sudo ./llvm.sh 17 all \
30-
&& sudo ln -s /usr/lib/llvm-17/bin/clang-cl /usr/bin/clang-cl \
31-
&& sudo ln -s /usr/lib/llvm-17/bin/llvm-lib /usr/bin/llvm-lib \
32-
&& sudo ln -s /usr/lib/llvm-17/bin/lld-link /usr/bin/lld-link \
33-
&& sudo ln -s /usr/lib/llvm-17/bin/llvm-ml /usr/bin/llvm-ml \
34-
&& sudo ln -s /usr/lib/llvm-17/bin/ld.lld /usr/bin/ld.lld \
35-
&& sudo ln -s /usr/lib/llvm-17/bin/clang /usr/bin/clang
30+
&& sudo ./llvm.sh ${LLVM_VERSION} all \
31+
&& sudo ln -s /usr/lib/llvm-${LLVM_VERSION}/bin/clang-cl /usr/bin/clang-cl \
32+
&& sudo ln -s /usr/lib/llvm-${LLVM_VERSION}/bin/llvm-lib /usr/bin/llvm-lib \
33+
&& sudo ln -s /usr/lib/llvm-${LLVM_VERSION}/bin/lld-link /usr/bin/lld-link \
34+
&& sudo ln -s /usr/lib/llvm-${LLVM_VERSION}/bin/llvm-ml /usr/bin/llvm-ml \
35+
&& sudo ln -s /usr/lib/llvm-${LLVM_VERSION}/bin/ld.lld /usr/bin/ld.lld \
36+
&& sudo ln -s /usr/lib/llvm-${LLVM_VERSION}/bin/clang /usr/bin/clang
3637

3738
FROM base AS dev
3839

@@ -49,6 +50,8 @@ RUN SNIPPET="export PROMPT_COMMAND='history -a' && export HISTFILE=/commandhisto
4950

5051
USER $USER
5152

53+
ARG RUST_TOOLCHAIN=1.81.0
54+
5255
# Install rust
5356
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y \
5457
&& rustup default ${RUST_TOOLCHAIN} \

.devcontainer/devcontainer.json

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@
88
"containerUser": "vscode",
99
// Environment for the container also used by in the `postCreateCommand`
1010
"containerEnv": {
11+
"DEVICE": "/dev/kvm",
12+
"KVM_SHOULD_BE_PRESENT": "true",
1113
"REMOTE_USER": "vscode",
12-
"REMOTE_GROUP": "vscode",
13-
"DEVICE": "/dev/kvm"
14+
"REMOTE_GROUP": "vscode"
1415
},
1516

1617
"runArgs": [
@@ -24,7 +25,8 @@
2425
"vscode": {
2526
"extensions": [
2627
"ms-vscode.cmake-tools",
27-
"rust-lang.rust-analyzer"
28+
"rust-lang.rust-analyzer",
29+
"vadimcn.vscode-lldb"
2830
]
2931
}
3032
}

.github/workflows/CreateDevcontainerImage.yml

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,22 @@ name: Create and publish devcontainer Docker image
22

33
on:
44
push:
5+
branches:
6+
- "main"
57
paths:
68
- ".devcontainer/Dockerfile"
79
- ".github/workflows/CreateDevcontainerImage.yml"
10+
- "rust-toolchain.toml"
811

912
# Defines two custom environment variables for the workflow. These are used for the Container registry domain, and a name for the Docker image that this workflow builds.
1013
env:
1114
REGISTRY: ghcr.io
1215
IMAGE_NAME: ${{ github.repository }}-devcontainer
1316
USER: vscode
1417
GROUP: vscode
15-
RUST_TOOLCHAIN: 1.81.0
18+
LLVM_VERSION: 17
19+
RUST_TOOLCHAIN_DEFAULT: 1.81.0
20+
RUST_TOOLCHAIN_FILE: rust-toolchain.toml
1621

1722
# There is a single job in this workflow. It's configured to run on the latest available version of Ubuntu.
1823
jobs:
@@ -29,6 +34,15 @@ jobs:
2934
- name: Checkout repository
3035
uses: actions/checkout@v3
3136
# Uses the `docker/login-action` action to log in to the Container registry registry using the account and password that will publish the packages. Once published, the packages are scoped to the account defined here.
37+
38+
- name: Read Rust toolchain version from ${{ env.RUST_TOOLCHAIN_FILE }}
39+
id: toolchain
40+
run: |
41+
version=$(cat ${{ env.RUST_TOOLCHAIN_FILE }} | sed -n '/\[toolchain\]/,/^\[/{/^\s*channel = /s/[^"]*"\([^"]*\)".*/\1/p}')
42+
cat ${{ env.RUST_TOOLCHAIN_FILE }} | grep $version &> /dev/null \
43+
&& echo "RUST_TOOLCHAIN=${version}" >> "$GITHUB_OUTPUT" \
44+
|| echo "RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN_FILE }}" >> "$GITHUB_OUTPUT"
45+
3246
- name: Log in to the Container registry
3347
uses: docker/login-action@v1
3448
with:
@@ -55,4 +69,5 @@ jobs:
5569
build-args: |
5670
USER=${{ env.USER }}
5771
GROUP=${{ env.GROUP }}
58-
RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}
72+
LLVM_VERSION=${{ env.LLVM_VERSION }}
73+
RUST_TOOLCHAIN=${{ steps.toolchain.outputs.RUST_TOOLCHAIN }}

0 commit comments

Comments
 (0)