Skip to content
This repository was archived by the owner on Nov 30, 2023. It is now read-only.

Commit f9e5fb7

Browse files
authored
Enable PR smoke test for debian
1 parent 77786f9 commit f9e5fb7

File tree

2 files changed

+35
-12
lines changed

2 files changed

+35
-12
lines changed

.github/actions/smoke-test/action.yaml

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ inputs:
88
description: 'Image to run smoke test in'
99
required: true
1010
default: 'none'
11+
user:
12+
description: 'User in container image to use for smoke test'
13+
required: true
14+
default: 'vscode'
1115

1216
runs:
1317
using: composite
@@ -38,29 +42,41 @@ runs:
3842
id: test_image
3943
shell: bash
4044
run: |
45+
# Run test script for image if one exists
46+
4147
if [ "${{ inputs.image }}" = "none" ]; then
42-
echo "Image not specified. Skipping test."
48+
echo "Image not specified. Aborting test."
4349
exit 0
4450
fi
4551
4652
set -e
4753
48-
# Fake out existance of extensions, VS Code server
49-
dev_container_relative_path="/containers/${{ inputs.definition }}/.devcontainer"
54+
# Start container
55+
container_name="vscdc-test-container"
56+
docker run -d --name ${container_name} --rm --init --privileged -v "$(pwd)/containers/${{ inputs.definition }}:/workspace" ${{ inputs.image }} /bin/sh -c 'while sleep 1000; do :; done'
57+
58+
# Fake out existence of extensions, VS Code Server
59+
echo "(*) Stubbing out extensions and VS Code Server..."
60+
dev_container_relative_path="containers/${{ inputs.definition }}/.devcontainer"
5061
mkdir -p "/tmp/${dev_container_relative_path}"
51-
cp -f $(pwd)/${dev_container_relative_path}/devcontainer.json "/tmp/${dev_container_relative_path}/"
62+
cp -f "$(pwd)/${dev_container_relative_path}/devcontainer.json" "/tmp/${dev_container_relative_path}/"
5263
dev_container_tmp="/tmp/${dev_container_relative_path}/devcontainer.json"
5364
sed -i'.bak' -e "s/\\/\\/.*/ /g" "${dev_container_tmp}"
54-
extensions="$(jq '.extensions' --compact-output "${dev_container_tmp}" | tr -d '[' | tr -d ']' | tr ',' ' ') 2>/dev/null || echo ''"
55-
docker run --rm --init --privileged -u "${{ inputs.user }}" "${{ inputs.image }}" /bin/sh -c "\
56-
mkdir -p \"\$HOME/.vscode-test-server/extensions\" \
57-
cd \"\$HOME/.vscode-test-server/extensions\" \
58-
if [ \"${extensions}\" != '' ]; then echo \"${extensions}\" | xargs -n 1 mkdir -p; fi"
65+
extensions="$(jq '.extensions' --compact-output "${dev_container_tmp}" | tr -d '[' | tr -d ']' | tr ',' '\n' 2>/dev/null || echo -n '')"
66+
echo "(*) Extensions in devcontainer.json: ${extensions}"
67+
docker exec -u "${{ inputs.user }}" ${container_name} /bin/sh -c "\
68+
echo \"(*) Creating folders in \$HOME...\" \
69+
&& mkdir -p \$HOME/.vscode-server/bin \$HOME/.vscode-server/extensions \
70+
&& cd \$HOME/.vscode-server/extensions \
71+
&& if [ \"${extensions}\" != '' ]; then echo \"${extensions}\" | xargs -n 1 mkdir -p; fi"
5972
6073
# Run actual test
61-
docker run --rm --init --privileged -u "${{ inputs.user }}" -v "$(pwd)/containers/${{ inputs.definition }}:/workspace" "${{ inputs.image }}" /bin/sh -c '\
62-
set -e
63-
cd /workspace \
74+
echo "(*) Running test..."
75+
docker exec -u "${{ inputs.user }}" ${container_name} /bin/sh -c '\
76+
set -e \
77+
&& id \
78+
&& echo "$HOME" \
79+
&& cd /workspace \
6480
&& if [ -f "test-project/test.sh" ]; then \
6581
cd test-project \
6682
&& if [ "$(id -u)" = "0" ]; then \

.github/workflows/smoke-debian.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,16 @@ name: Smoke test "debian" build
22

33
on:
44
workflow_dispatch:
5+
56
push:
67
branches: [actions-test]
78
paths:
89
- 'containers/debian/**'
10+
pull_request:
11+
branches:
12+
- main
13+
paths:
14+
- 'containers/debian/**'
915
jobs:
1016
smoke-test:
1117
name: Smoke test
@@ -21,3 +27,4 @@ jobs:
2127
with:
2228
definition: debian
2329
image: mcr.microsoft.com/vscode/devcontainers/base:dev-debian
30+
user: vscode

0 commit comments

Comments
 (0)