diff --git a/.github/workflows/installer.yml b/.github/workflows/installer.yml index 0a004b8b5..959397f4f 100644 --- a/.github/workflows/installer.yml +++ b/.github/workflows/installer.yml @@ -24,6 +24,24 @@ jobs: - name: Test code-server run: yarn test:standalone-release code-server + alpine: + name: Test installer on Alpine + runs-on: ubuntu-latest + container: "alpine:3.14" + steps: + - name: Checkout repo + uses: actions/checkout@v2 + + - name: Install curl + run: apk add curl + + - name: Add user + run: adduser coder --disabled-password + + # Standalone should work without root. + - name: Test standalone to a non-existent prefix + run: su coder -c "./install.sh --method standalone --prefix /tmp/does/not/yet/exist" + macos: name: Test installer on macOS runs-on: macos-latest diff --git a/install.sh b/install.sh index e51afc191..2b77c5d36 100755 --- a/install.sh +++ b/install.sh @@ -132,7 +132,6 @@ main() { unset \ DRY_RUN \ METHOD \ - STANDALONE_INSTALL_PREFIX \ OPTIONAL \ ALL_FLAGS \ RSH_ARGS \ @@ -381,6 +380,10 @@ install_standalone() { fetch "https://github.com/cdr/code-server/releases/download/v$VERSION/code-server-$VERSION-$OS-$ARCH.tar.gz" \ "$CACHE_DIR/code-server-$VERSION-$OS-$ARCH.tar.gz" + # -w only works if the directory exists so try creating it first. If this + # fails we can ignore the error as the -w check will then swap us to sudo. + sh_c mkdir -p "$STANDALONE_INSTALL_PREFIX" 2> /dev/null || true + sh_c="sh_c" if [ ! -w "$STANDALONE_INSTALL_PREFIX" ]; then sh_c="sudo_sh_c"