Compare commits

..

20 Commits

Author SHA1 Message Date
3b1a175eac fix: install VS Code from Microsoft's direct download endpoint instead of apt repo
The apt repo at packages.microsoft.com/repos/vscode does not publish amd64
and arm64 .deb packages atomically, so the arm64 build in CI could pick up
an older VS Code version than amd64 when both platforms build in the same run.

Switch to downloading the .deb directly from
update.code.visualstudio.com/latest/linux-deb-{arch}/stable, the canonical
"always latest" endpoint, and resolve dependencies via apt-get install -f.

Also add an explicit docker/setup-qemu-action step to the workflow so arm64
emulation is version-pinned rather than relying on the runner's default
binfmt registration.
2026-07-03 16:39:24 +00:00
69e52bcac1 fixing chown. 2026-07-03 04:44:16 +00:00
9a998f3e0c Updating version of vscode. 2026-06-16 01:54:51 +00:00
48ca077a44 Updating VSCode to lastes, updating to version 3.2.21 2026-02-02 19:32:30 +00:00
6186b16503 Updating to version 3.2.20 2026-01-05 03:14:47 +00:00
6131b86b48 Updating to last version of VSCode. 2025-11-27 05:08:34 +00:00
8080ba8110 Updating version of VSCode 2025-11-26 00:03:51 +00:00
cfe27a3e86 Fixing name of gitea package. 2025-09-28 03:52:26 +00:00
bfeb1e8a08 Pushing to both registers. 2025-09-28 03:34:54 +00:00
0ecbe1c0ad adding Trigger of gitea worflow. 2025-09-27 23:36:52 +00:00
085c5db158 forcing the instalation of extensions. 2025-09-26 22:21:19 +00:00
b6603398e2 Updating version of vscode. 2025-09-22 18:36:54 +00:00
7076f09b06 Updating version of vscode. 2025-09-15 07:21:00 +00:00
dc46ee00a3 Updating version of vscode 2025-08-07 20:58:12 +00:00
fba2d768e9 Updating version of vscode. 2025-06-13 01:17:16 +00:00
40c5f1c963 Adding validation to use chmod +x $script when running custom script. 2025-06-04 22:01:36 +00:00
e34b39c827 Updating version of vscode. 2025-06-04 06:06:29 +00:00
f3797b5660 Removing feature to persist session since is not possible because OAuth process of github. 2025-04-14 16:46:35 +00:00
a1e53a6624 Trying to fix issue of recreate the tunnel. 2025-04-14 01:13:35 +00:00
3da90aa1a4 Fixing typo. 2025-04-14 00:06:02 +00:00
5 changed files with 55 additions and 71 deletions

View File

@@ -8,23 +8,46 @@ jobs:
docker: docker:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- - name: Checkout
name: Checkout
uses: actions/checkout@v2 uses: actions/checkout@v2
-
name: Set up Docker Buildx - name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1 uses: docker/setup-buildx-action@v1
-
name: Login to DockerHub # 🔑 Login to DockerHub
- name: Login to DockerHub
uses: docker/login-action@v1 uses: docker/login-action@v1
with: with:
username: ${{ secrets.DOCKERHUB_USERNAME }} username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }} password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Build and push # 🔑 Login to Gitea Registry
- name: Login to Gitea Registry
uses: docker/login-action@v1
with:
registry: gitea.p-lao.com
username: aleleba
password: ${{ secrets.GITEA_API_TOKEN }}
# 🚀 Build and push to BOTH registries
- name: Build and push
uses: docker/build-push-action@v2 uses: docker/build-push-action@v2
with: with:
context: . context: .
push: true push: true
tags: aleleba/vscode:latest platforms: linux/amd64,linux/arm64
platforms: linux/amd64,linux/arm64 tags: |
aleleba/vscode:latest
gitea.p-lao.com/aleleba/vscode:latest
- name: Trigger workflow in Gitea
if: success()
run: |
curl -X POST \
-H "Authorization: token ${{ secrets.GITEA_API_TOKEN }}" \
-H "Content-Type: application/json" \
https://gitea.p-lao.com/api/v1/repos/aleleba/vscode-server/actions/workflows/main-workflow.yml/dispatches \
-d '{"ref":"master","inputs":{"image":"gitea.p-lao.com/aleleba/vscode-server:latest"}}'

View File

@@ -29,13 +29,16 @@ RUN curl -sL https://aka.ms/DevTunnelCliInstall | bash
#Instalando VSCode #Instalando VSCode
RUN ARCH="$(dpkg --print-architecture)" \ RUN ARCH="$(dpkg --print-architecture)" \
&& case "${ARCH}" in \
amd64) VSCODE_ARCH="x64" ;; \
arm64) VSCODE_ARCH="arm64" ;; \
*) echo "Unsupported architecture: ${ARCH}" >&2; exit 1 ;; \
esac \
&& curl -fsSL "https://update.code.visualstudio.com/latest/linux-deb-${VSCODE_ARCH}/stable" -o /tmp/vscode.deb \
&& (sudo dpkg -i /tmp/vscode.deb || true) \
&& sudo apt-get update \ && sudo apt-get update \
&& sudo apt-get install -y gnupg2 \ && sudo DEBIAN_FRONTEND=noninteractive apt-get install -f -y \
&& sudo apt-get install -y software-properties-common \ && rm -f /tmp/vscode.deb
&& sudo wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add - \
&& sudo add-apt-repository "deb [arch=${ARCH}] https://packages.microsoft.com/repos/vscode stable main" \
&& sudo apt-get update \
&& sudo DEBIAN_FRONTEND=noninteractive apt-get install -y code
#Making home writable #Making home writable
RUN sudo chmod -R a+rwX /home RUN sudo chmod -R a+rwX /home

View File

@@ -76,7 +76,7 @@ fi
if [ "$HOME_USER" != "$(whoami)" ]; then if [ "$HOME_USER" != "$(whoami)" ]; then
exec sudo -u $HOME_USER bash -c "source /etc/environment; /usr/bin/entrypoint.sh" exec sudo -u $HOME_USER bash -c "source /etc/environment; /usr/bin/entrypoint.sh"
else else
sudo chown -R ${HOME_USER} /home/${HOME_USER} sudo find "/home/${HOME_USER}" -xdev -exec chown "${HOME_USER}" {} + 2>/dev/null || true
if [ -d "/home/${HOME_USER}/.ssh" ]; then if [ -d "/home/${HOME_USER}/.ssh" ]; then
sudo chmod 755 /home/${HOME_USER}/.ssh sudo chmod 755 /home/${HOME_USER}/.ssh
sudo chmod -R 600 /home/${HOME_USER}/.ssh/* sudo chmod -R 600 /home/${HOME_USER}/.ssh/*
@@ -111,7 +111,12 @@ fi
# Find .sh files in /usr/bin/custom-scripts and execute them in order # Find .sh files in /usr/bin/custom-scripts and execute them in order
for script in $(find /usr/bin/custom-scripts -name "*.sh" | sort); do for script in $(find /usr/bin/custom-scripts -name "*.sh" | sort); do
chmod +x $script # Ensure the script is executable
if [ ! -x $script ]; then
sudo chmod +x $script
fi
# Execute the script as the configured user
if [[ $script == *"sudo"* ]]; then if [[ $script == *"sudo"* ]]; then
sudo -u $HOME_USER bash -c "source /etc/environment; sudo $script" sudo -u $HOME_USER bash -c "source /etc/environment; sudo $script"
else else
@@ -119,6 +124,7 @@ for script in $(find /usr/bin/custom-scripts -name "*.sh" | sort); do
fi fi
done done
#Creating extensions folder #Creating extensions folder
if [ ! -d "/home/${HOME_USER}/.config/Code" ]; then if [ ! -d "/home/${HOME_USER}/.config/Code" ]; then
sudo mkdir -p /home/${HOME_USER}/.config/Code sudo mkdir -p /home/${HOME_USER}/.config/Code
@@ -146,7 +152,7 @@ if [ -f "/home/extensions.json" ]; then
# Loop through the extensions and process each element # Loop through the extensions and process each element
for extension in $extensions; do for extension in $extensions; do
echo "Installing extension: $extension" echo "Installing extension: $extension"
sudo su ${HOME_USER} -c "code --install-extension $extension" sudo su ${HOME_USER} -c "code --install-extension $extension --force"
done done
sudo cp -R /home/${HOME_USER}/.vscode/* /home/${HOME_USER}/.vscode-server sudo cp -R /home/${HOME_USER}/.vscode/* /home/${HOME_USER}/.vscode-server
sudo cp -R /home/${HOME_USER}/.vscode/* /home/${HOME_USER}/.vscode-server-insiders sudo cp -R /home/${HOME_USER}/.vscode/* /home/${HOME_USER}/.vscode-server-insiders
@@ -157,47 +163,8 @@ else
echo "File extensions.json not found" echo "File extensions.json not found"
fi fi
# Check if CLI directory exists and has content if [[ -v VSCODE_TUNNEL_NAME && -n "${VSCODE_TUNNEL_NAME}" ]]; then
if [ -d "/home/${HOME_USER}/.vscode/cli" ] && [ "$(ls -A /home/${HOME_USER}/.vscode/cli 2>/dev/null)" ]; then sudo su ${HOME_USER} -c "code tunnel --accept-server-license-terms --name ${VSCODE_TUNNEL_NAME}"
# CLI directory exists and has content, extract token and tunnel information
# Extract token from token.json if it exists
TOKEN_FILE="/home/${HOME_USER}/.vscode/cli/token.json"
if [ -f "$TOKEN_FILE" ]; then
TOKEN=$(cat "$TOKEN_FILE" | tr -d '\n')
else
TOKEN=""
fi
# Extract id and cluster from code_tunnel.json if it exists
TUNNEL_FILE="/home/${HOME_USER}/.vscode/cli/code_tunnel.json"
if [ -f "$TUNNEL_FILE" ]; then
if command -v jq &> /dev/null; then
# Use jq if available
ID=$(jq -r '.id' "$TUNNEL_FILE")
CLUSTER=$(jq -r '.cluster' "$TUNNEL_FILE")
else
# Fallback to grep and cut if jq is not available
ID=$(grep -o '"id"[^,}]*' "$TUNNEL_FILE" | cut -d'"' -f4)
CLUSTER=$(grep -o '"cluster"[^,}]*' "$TUNNEL_FILE" | cut -d'"' -f4)
fi
TUNNEL_ID="${ID}.${CLUSTER}"
else
TUNNEL_ID=""
fi
# Create tunnel with extracted values if available
if [ -n "$TOKEN" ] && [ -n "$TUNNEL_ID" ]; then
sudo su ${HOME_USER} -c "code tunnel --name ${VSCODE_TUNNEL_NAME} --tunnel-id ${TUNNEL_ID}--host-token ${TOKEN}"
else
# Fallback to simpler command if values couldn't be extracted
sudo su ${HOME_USER} -c "code tunnel --name ${VSCODE_TUNNEL_NAME}"
fi
else else
# No CLI directory or empty, use normal startup sudo su ${HOME_USER} -c "code tunnel --accept-server-license-terms"
if [[ -v VSCODE_TUNNEL_NAME && -n "${VSCODE_TUNNEL_NAME}" ]]; then
sudo su ${HOME_USER} -c "code tunnel --accept-server-license-terms --name ${VSCODE_TUNNEL_NAME}"
else
sudo su ${HOME_USER} -c "code tunnel --accept-server-license-terms"
fi
fi fi

View File

@@ -39,15 +39,6 @@ docker run -it -e HOME_USER=custom-home-user -e GLOBAL_ENV_MY_GLOBAL_VARIABLE=my
``` ```
In this example, MY_GLOBAL_VARIABLE will be set to my_global_value in the /etc/environment file. In this example, MY_GLOBAL_VARIABLE will be set to my_global_value in the /etc/environment file.
### Persistent VS Code Tunnel
You can maintain the VS Code tunnel configuration between container restarts by adding a volume mount to `/home/${HOME_USER}/.vscode/cli`. When this volume is mounted and the container restarts, it will use `code tunnel restart` to reconnect using the existing tunnel configuration instead of creating a new one.
Example:
```bash
docker run -it -e HOME_USER=custom-home-user -e VSCODE_TUNNEL_NAME=vscode-ssh-remote-server -v /path/to/vscode-cli:/home/custom-home-user/.vscode/cli -v /path/to/extensions.json:/home/extensions.json aleleba/vscode
```
### Adding VSCode Extensions ### Adding VSCode Extensions
To add VSCode extensions to the container, create a JSON file with an array of objects containing the extension details you want to install, the only Mandatory field is uniqueIdentifier and follow this structure. For example: To add VSCode extensions to the container, create a JSON file with an array of objects containing the extension details you want to install, the only Mandatory field is uniqueIdentifier and follow this structure. For example:

View File

@@ -1 +1 @@
3.2.4 3.2.24