Compare commits

...

16 Commits

Author SHA1 Message Date
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
aa9afba282 Trying to fix existing tunnel. 2025-04-13 23:44:58 +00:00
0fe46e635d Trying to fix issue if data authentication already exist. 2025-04-13 04:27:21 +00:00
d84caeb8cf Trying to fix issue when restart. 2025-04-13 03:57:47 +00:00
4 changed files with 42 additions and 47 deletions

View File

@@ -8,23 +8,43 @@ 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 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

@@ -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,30 +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, ensure proper permissions first
sudo chmod -R a+rwX /home/${HOME_USER}/.vscode/cli
# Wait briefly to ensure services are up
sleep 2
echo "Restarting VS Code tunnel..."
# Try to restart, but fall back to normal startup if it fails
if ! sudo su ${HOME_USER} -c "code tunnel restart"; then
echo "Tunnel restart failed, trying normal startup..."
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
else else
# No CLI directory or empty, use normal startup sudo su ${HOME_USER} -c "code tunnel --accept-server-license-terms"
echo "Starting new VS Code tunnel session..."
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.1 3.2.17