mirror of https://github.com/coder/coder.git
revert: improve flag interpretation for install.sh (#9566)
This commit is contained in:
parent
2dae60038a
commit
bfff88d2d3
|
@ -512,7 +512,8 @@ jobs:
|
|||
test-e2e:
|
||||
runs-on: ${{ github.repository_owner == 'coder' && 'buildjet-8vcpu-ubuntu-2204' || 'ubuntu-latest' }}
|
||||
needs: changes
|
||||
if: needs.changes.outputs.go == 'true' || needs.changes.outputs.ts == 'true' || needs.changes.outputs.ci == 'true' || github.ref == 'refs/heads/main'
|
||||
# if: needs.changes.outputs.go == 'true' || needs.changes.outputs.ts == 'true' || needs.changes.outputs.ci == 'true' || github.ref == 'refs/heads/main'
|
||||
if: false
|
||||
timeout-minutes: 20
|
||||
steps:
|
||||
- name: Checkout
|
||||
|
@ -691,7 +692,7 @@ jobs:
|
|||
- test-go-pg
|
||||
- test-go-race
|
||||
- test-js
|
||||
- test-e2e
|
||||
# - test-e2e
|
||||
- offlinedocs
|
||||
# Allow this job to run even if the needed jobs fail, are skipped or
|
||||
# cancelled.
|
||||
|
|
|
@ -4,27 +4,20 @@ and macOS.
|
|||
|
||||
To install, run:
|
||||
|
||||
```shell
|
||||
# This will automatically use supported package managers when available
|
||||
```bash
|
||||
curl -fsSL https://coder.com/install.sh | sh
|
||||
```
|
||||
|
||||
To install without using a system package manager:
|
||||
|
||||
```shell
|
||||
curl -fsSL https://coder.com/install.sh | sh -s -- --method standalone
|
||||
```
|
||||
|
||||
You can preview what occurs during the install process:
|
||||
|
||||
```shell
|
||||
```bash
|
||||
curl -fsSL https://coder.com/install.sh | sh -s -- --dry-run
|
||||
```
|
||||
|
||||
You can modify the installation process by including flags. Run the help command
|
||||
for reference:
|
||||
|
||||
```shell
|
||||
```bash
|
||||
curl -fsSL https://coder.com/install.sh | sh -s -- --help
|
||||
```
|
||||
|
||||
|
@ -34,87 +27,6 @@ manually via `coder server` or as a system package.
|
|||
By default, the Coder server runs on `http://127.0.0.1:3000` and uses a
|
||||
[public tunnel](../admin/configure.md#tunnel) for workspace connections.
|
||||
|
||||
## `PATH` conflicts
|
||||
|
||||
It's possible to end up in situations where you have multiple `coder` binaries
|
||||
in your `PATH`, and your system may use a version that you don't intend. Your
|
||||
`PATH` is a variable that tells your shell where to look for programs to run.
|
||||
|
||||
You can check where all of the versions are by running `which -a coder`.
|
||||
|
||||
For example, a common conflict on macOS might be between a version installed by
|
||||
Homebrew, and a version installed manually to the /usr/local/bin directory.
|
||||
|
||||
```console
|
||||
$ which -a coder
|
||||
/usr/local/bin/coder
|
||||
/opt/homebrew/bin/coder
|
||||
```
|
||||
|
||||
Whichever binary comes first in this list will be used when running `coder`
|
||||
commands.
|
||||
|
||||
### Reordering your `PATH`
|
||||
|
||||
If you use bash or zsh, you can update your `PATH` like this:
|
||||
|
||||
```shell
|
||||
# You might want to add this line to the end of your ~/.bashrc or ~/.zshrc file!
|
||||
export PATH="/opt/homebrew/bin:$PATH"
|
||||
```
|
||||
|
||||
If you use fish, you can update your `PATH` like this:
|
||||
|
||||
```shell
|
||||
# You might want to add this line to the end of your ~/.config/fish/config.fish file!
|
||||
fish_add_path "/opt/homebrew/bin"
|
||||
```
|
||||
|
||||
> ℹ If you ran install.sh with a `--prefix` flag, you can replace
|
||||
> `/opt/homebrew` with whatever value you used there. Make sure to leave the
|
||||
> `/bin` at the end!
|
||||
|
||||
Now we can observe that the order has changed:
|
||||
|
||||
```console
|
||||
$ which -a coder
|
||||
/opt/homebrew/bin/coder
|
||||
/usr/local/bin/coder
|
||||
```
|
||||
|
||||
### Removing unneeded binaries
|
||||
|
||||
If you want to uninstall a version of `coder` that you installed with a package
|
||||
manager, you can run whichever one of these commands applies:
|
||||
|
||||
```shell
|
||||
# On macOS, with Homebrew installed
|
||||
brew uninstall coder
|
||||
```
|
||||
|
||||
```shell
|
||||
# On Debian/Ubuntu based systems
|
||||
sudo dpkg -r coder
|
||||
```
|
||||
|
||||
```shell
|
||||
# On Fedora/RHEL-like systems
|
||||
sudo rpm -e coder
|
||||
```
|
||||
|
||||
```shell
|
||||
# On Alpine
|
||||
sudo apk del coder
|
||||
```
|
||||
|
||||
If the conflicting binary is not installed by your system package manager, you
|
||||
can just delete it.
|
||||
|
||||
```shell
|
||||
# You might not need `sudo`, depending on the location
|
||||
sudo rm /usr/local/bin/coder
|
||||
```
|
||||
|
||||
## Next steps
|
||||
|
||||
- [Configuring Coder](../admin/configure.md)
|
||||
|
|
107
install.sh
107
install.sh
|
@ -104,29 +104,18 @@ Standalone release has been installed into $STANDALONE_INSTALL_PREFIX/bin/$STAND
|
|||
|
||||
EOF
|
||||
|
||||
CODER_COMMAND="$(command -v "$STANDALONE_BINARY_NAME")"
|
||||
|
||||
if [ ! "$CODER_COMMAND" ]; then
|
||||
if [ "$STANDALONE_INSTALL_PREFIX" != /usr/local ]; then
|
||||
cath <<EOF
|
||||
Extend your path to use Coder:
|
||||
|
||||
$ PATH="$STANDALONE_INSTALL_PREFIX/bin:\$PATH"
|
||||
|
||||
EOF
|
||||
elif [ "$CODER_COMMAND" != "$STANDALONE_BINARY_LOCATION" ]; then
|
||||
echo_path_conflict "$CODER_COMMAND" "$STANDALONE_INSTALL_PREFIX"
|
||||
else
|
||||
cath <<EOF
|
||||
To run a Coder server:
|
||||
|
||||
$ $STANDALONE_BINARY_NAME server
|
||||
|
||||
To connect to a Coder deployment:
|
||||
|
||||
$ $STANDALONE_BINARY_NAME login <deployment url>
|
||||
PATH="$STANDALONE_INSTALL_PREFIX/bin:\$PATH"
|
||||
|
||||
EOF
|
||||
fi
|
||||
cath <<EOF
|
||||
Run Coder:
|
||||
$STANDALONE_BINARY_NAME server
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
echo_brew_postinstall() {
|
||||
|
@ -135,15 +124,8 @@ echo_brew_postinstall() {
|
|||
return
|
||||
fi
|
||||
|
||||
CODER_COMMAND="$(command -v "coder")"
|
||||
BREW_PREFIX="$(brew --prefix)"
|
||||
|
||||
if [ "$CODER_COMMAND" != "$BREW_PREFIX/bin/coder" ]; then
|
||||
echo_path_conflict "$CODER_COMMAND" "$BREW_PREFIX"
|
||||
fi
|
||||
|
||||
cath <<EOF
|
||||
Homebrew formula has been installed.
|
||||
brew formula has been installed.
|
||||
|
||||
To run a Coder server:
|
||||
|
||||
|
@ -175,6 +157,7 @@ To run a Coder server:
|
|||
# Or just run the server directly
|
||||
$ coder server
|
||||
|
||||
Default URL: http://127.0.0.1:3000
|
||||
Configuring Coder: https://coder.com/docs/v2/latest/admin/configure
|
||||
|
||||
To connect to a Coder deployment:
|
||||
|
@ -186,33 +169,18 @@ EOF
|
|||
|
||||
echo_dryrun_postinstall() {
|
||||
cath <<EOF
|
||||
|
||||
Dry-run complete.
|
||||
|
||||
To install Coder, re-run this script without the --dry-run flag.
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
echo_path_conflict() {
|
||||
cath <<EOF
|
||||
There is another binary in your PATH that conflicts with the binary we've installed.
|
||||
|
||||
$1
|
||||
|
||||
This is likely because of an existing installation of Coder. See our documentation for suggests on how to resolve this.
|
||||
|
||||
https://coder.com/docs/v2/latest/install/install.sh#path-conflicts
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
main() {
|
||||
TERRAFORM_VERSION="1.3.4"
|
||||
|
||||
if [ "${TRACE-}" ]; then
|
||||
set -x
|
||||
fi
|
||||
|
||||
unset \
|
||||
DRY_RUN \
|
||||
METHOD \
|
||||
|
@ -220,11 +188,9 @@ main() {
|
|||
ALL_FLAGS \
|
||||
RSH_ARGS \
|
||||
EDGE \
|
||||
RSH \
|
||||
WITH_TERRAFORM
|
||||
RSH
|
||||
|
||||
ALL_FLAGS=""
|
||||
|
||||
while [ "$#" -gt 0 ]; do
|
||||
case "$1" in
|
||||
-*)
|
||||
|
@ -279,7 +245,7 @@ main() {
|
|||
exit 0
|
||||
;;
|
||||
--with-terraform)
|
||||
WITH_TERRAFORM=1
|
||||
METHOD=with_terraform
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
|
@ -309,29 +275,8 @@ main() {
|
|||
return
|
||||
fi
|
||||
|
||||
# These can be overridden for testing but shouldn't normally be used as it can
|
||||
# result in a broken coder.
|
||||
OS=${OS:-$(os)}
|
||||
ARCH=${ARCH:-$(arch)}
|
||||
TERRAFORM_ARCH=${TERRAFORM_ARCH:-$(terraform_arch)}
|
||||
|
||||
# We can't reasonably support installing specific versions of Coder through
|
||||
# Homebrew, so if we're on macOS and the `--version` flag was set, we should
|
||||
# "detect" standalone to be the appropriate installation method. This check
|
||||
# needs to occur before we set `VERSION` to a default of the latest release.
|
||||
if [ "$OS" = "darwin" ] && [ "${VERSION-}" ]; then
|
||||
METHOD=standalone
|
||||
fi
|
||||
|
||||
# If we've been provided a flag which is specific to the standalone installation
|
||||
# method, we should "detect" standalone to be the appropriate installation method.
|
||||
# This check needs to occur before we set these variables with defaults.
|
||||
if [ "${STANDALONE_INSTALL_PREFIX-}" ] || [ "${STANDALONE_BINARY_NAME-}" ]; then
|
||||
METHOD=standalone
|
||||
fi
|
||||
|
||||
METHOD="${METHOD-detect}"
|
||||
if [ "$METHOD" != detect ] && [ "$METHOD" != standalone ]; then
|
||||
if [ "$METHOD" != detect ] && [ "$METHOD" != with_terraform ] && [ "$METHOD" != standalone ]; then
|
||||
echoerr "Unknown install method \"$METHOD\""
|
||||
echoerr "Run with --help to see usage."
|
||||
exit 1
|
||||
|
@ -340,10 +285,15 @@ main() {
|
|||
# These are used by the various install_* functions that make use of GitHub
|
||||
# releases in order to download and unpack the right release.
|
||||
CACHE_DIR=$(echo_cache_dir)
|
||||
TERRAFORM_INSTALL_PREFIX=${TERRAFORM_INSTALL_PREFIX:-/usr/local}
|
||||
STANDALONE_INSTALL_PREFIX=${STANDALONE_INSTALL_PREFIX:-/usr/local}
|
||||
TERRAFORM_INSTALL_PREFIX=${TERRAFORM_INSTALL_PREFIX:-/usr/local}
|
||||
STANDALONE_BINARY_NAME=${STANDALONE_BINARY_NAME:-coder}
|
||||
VERSION=${VERSION:-$(echo_latest_version)}
|
||||
# These can be overridden for testing but shouldn't normally be used as it can
|
||||
# result in a broken coder.
|
||||
OS=${OS:-$(os)}
|
||||
ARCH=${ARCH:-$(arch)}
|
||||
TERRAFORM_ARCH=${TERRAFORM_ARCH:-$(terraform_arch)}
|
||||
|
||||
distro_name
|
||||
|
||||
|
@ -352,11 +302,6 @@ main() {
|
|||
echoh
|
||||
fi
|
||||
|
||||
# Start by installing Terraform, if requested
|
||||
if [ "${WITH_TERRAFORM-}" = 1 ]; then
|
||||
with_terraform
|
||||
fi
|
||||
|
||||
# Standalone installs by pulling pre-built releases from GitHub.
|
||||
if [ "$METHOD" = standalone ]; then
|
||||
if has_standalone; then
|
||||
|
@ -368,6 +313,10 @@ main() {
|
|||
exit 1
|
||||
fi
|
||||
fi
|
||||
if [ "$METHOD" = with_terraform ]; then
|
||||
# Install terraform then continue the script
|
||||
with_terraform
|
||||
fi
|
||||
|
||||
# DISTRO can be overridden for testing but shouldn't normally be used as it
|
||||
# can result in a broken coder.
|
||||
|
@ -480,7 +429,7 @@ with_terraform() {
|
|||
install_macos() {
|
||||
# If there is no `brew` binary available, just default to installing standalone
|
||||
if command_exists brew; then
|
||||
echoh "Installing coder with Homebrew from the coder/coder tap."
|
||||
echoh "Installing v$VERSION of the coder formula from coder/coder."
|
||||
echoh
|
||||
|
||||
sh_c brew install coder/coder/coder
|
||||
|
@ -556,16 +505,16 @@ install_standalone() {
|
|||
"$sh_c" unzip -d "$CACHE_DIR" -o "$CACHE_DIR/coder_${VERSION}_${OS}_${ARCH}.zip"
|
||||
fi
|
||||
|
||||
STANDALONE_BINARY_LOCATION="$STANDALONE_INSTALL_PREFIX/bin/$STANDALONE_BINARY_NAME"
|
||||
COPY_LOCATION="$STANDALONE_INSTALL_PREFIX/bin/$STANDALONE_BINARY_NAME"
|
||||
|
||||
# Remove the file if it already exists to
|
||||
# avoid https://github.com/coder/coder/issues/2086
|
||||
if [ -f "$STANDALONE_BINARY_LOCATION" ]; then
|
||||
"$sh_c" rm "$STANDALONE_BINARY_LOCATION"
|
||||
if [ -f "$COPY_LOCATION" ]; then
|
||||
"$sh_c" rm "$COPY_LOCATION"
|
||||
fi
|
||||
|
||||
# Copy the binary to the correct location.
|
||||
"$sh_c" cp "$CACHE_DIR/coder" "$STANDALONE_BINARY_LOCATION"
|
||||
"$sh_c" cp "$CACHE_DIR/coder" "$COPY_LOCATION"
|
||||
|
||||
echo_standalone_postinstall
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue