From 6db19fcea224a6df32ab98768ab6d0dcbe75c2b2 Mon Sep 17 00:00:00 2001 From: Gerhard Lazu Date: Thu, 17 Mar 2022 19:45:26 +0000 Subject: [PATCH] Allow any published dagger version to be installed via install.sh This also updates Getting Started - CI/CD in your local dev - Linux & Mac doc. A few other related doc changes were pulled in by this. I wanted to try different versions of dagger on Linux, and this was the easiest way of doing that: curl -L https://dl.dagger.io/dagger/install.sh -O # make this change, and then: DAGGER_VERSION=0.2.0 sh install.sh # ... ./bin/dagger version dagger 0.2.0 (e499297e) linux/amd64 DAGGER_VERSION=0.2.1 sh install.sh # ... ./bin/dagger version dagger 0.2.1 (69b4845d) linux/amd64 This change enables anyone to do the following instead: curl -L https://dl.dagger.io/dagger/install.sh \ | DAGGER_VERSION=0.2.0 sh Until this gets merged, you can test how this change works in practice via this temporary file: curl -L https://dl.dagger.io/dagger/install-pr-1819.sh \ | DAGGER_VERSION=0.2.0 sh One thing which I was not sure about is how the file from this repository ends up on https://dl.dagger.io/dagger/install.sh. I think this is a manual process today, but I need to confirm this assumption. Signed-off-by: Gerhard Lazu --- docs/getting-started/1200-local-dev.md | 74 +++++++++++------- install.sh | 4 +- .../img/getting-started/todoapp.linux.png | Bin 0 -> 47244 bytes .../{todoapp.png => todoapp.macos.png} | Bin 4 files changed, 47 insertions(+), 31 deletions(-) create mode 100644 website/static/img/getting-started/todoapp.linux.png rename website/static/img/getting-started/{todoapp.png => todoapp.macos.png} (100%) diff --git a/docs/getting-started/1200-local-dev.md b/docs/getting-started/1200-local-dev.md index d6cefb6b..695948cd 100644 --- a/docs/getting-started/1200-local-dev.md +++ b/docs/getting-started/1200-local-dev.md @@ -33,17 +33,27 @@ If you do, you can install `dagger` with a single command: brew install dagger/tap/dagger ``` -Check that `dagger` installed correctly by verifying its execution path: +This installs `dagger` in `/opt/homebrew/bin`: ```shell type dagger dagger is /opt/homebrew/bin/dagger ``` +If you do not have Homebrew installed, or you want to install a specific version of `dagger`, you can run: + +```shell +curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.2.0 sh + +./bin/dagger version +dagger 0.2.0 (e499297e) darwin/arm64 +``` + Before we can build & test our example app with `dagger`, we need to have Docker running. You most likely already have Docker set up. If not, [Docker Desktop](https://www.docker.com/products/docker-desktop) makes this easy. -With Docker running, we are ready to download our example app and run its CI/CD pipeline: + +With Docker running, we are ready to download our example app and run its CI/CD pipeline locally: ```shell git clone https://github.com/dagger/dagger @@ -51,11 +61,6 @@ cd dagger git checkout v0.2.0 cd pkg/universe.dagger.io/examples/todoapp -``` - -With everything in place, we run the CI/CD pipeline locally: - -```shell dagger do build ``` @@ -73,10 +78,11 @@ With an empty cache, installing all dependencies, then testing & generating a bu ``` Since this is a static application, we can open the files which are generated in `actions.build.contents` in a browser. -The last step copies the build result into the `build` directory on the host. +The last step - `client.filesystem.build.write` - copies the build result into the `build` directory on the host. + On macOS, we run `open build/index.html` in our terminal and see the following app preview: -![todoapp preview](/img/getting-started/todoapp.png) +![todoapp preview](/img/getting-started/todoapp.macos.png) One of the big advantages to this approach is that we did not have to install any dependencies specific to this application. Dagger managed all the intermediary steps, and we ended up with the end-result on our host, without any of the transient dependencies. @@ -111,19 +117,35 @@ It becomes even more obvious when the change is not as straightforward as knowin -[Download the latest 64bit Linux binary release](https://github.com/dagger/dagger/releases/latest). -We support both x86 & ARM architectures. +The quickest way of installing `dagger` on Linux is to run the following command: -We install `dagger` in `/usr/local/bin`, but anywhere in your `PATH` works: +```shell +cd /usr/local +curl -L https://dl.dagger.io/dagger/install.sh | sh +``` + +This installs `dagger` in `/usr/local/bin`: ```shell type dagger dagger is /usr/local/bin/dagger ``` +If you want to install dagger to a different location, `cd` where you want `./bin/dagger` in. + +If you want to install a specific version of `dagger`, you can run: + +```shell +curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.2.0 sh + +./bin/dagger version +dagger 0.2.0 (e499297e) linux/amd64 +``` + Before we can build, test & deploy our example app with `dagger`, we need to have Docker Engine running. You most likely already have Docker Engine set up. -If not, [Docker on Linux install](https://docs.docker.com/engine/install/#server) makes this easy. +If not, [install Docker Engine on Linux](https://docs.docker.com/engine/install/#server) makes this easy. + With Docker Engine running, we are ready to download our example app and run its CI/CD pipeline: ```shell @@ -132,11 +154,6 @@ cd dagger git checkout v0.2.0 cd pkg/universe.dagger.io/examples/todoapp -``` - -With everything in place, we run the CI/CD pipeline locally: - -```shell dagger do build ``` @@ -154,10 +171,11 @@ With an empty cache, installing all dependencies, then testing & generating a bu ``` Since this is a static application, we can open the files which are generated in `actions.build.contents` in a browser. -The last step copies the build result into the `build` directory on the host. +The last step - `client.filesystem.build.write` - copies the build result into the `build` directory on the host. + On Linux, we run `xdg-open build/index.html` in our terminal and see the following app preview: -![todoapp preview](/img/getting-started/todoapp.png) +![todoapp preview](/img/getting-started/todoapp.linux.png) One of the big advantages to this approach is that we did not have to install any dependencies specific to this application. Dagger managed all the intermediary steps, and we ended up with the end-result on our host, without any of the transient dependencies. @@ -192,10 +210,12 @@ It becomes even more obvious when the change is not as straightforward as knowin We assume that you have [curl](https://curl.se/windows/) installed. -If you do, you can install `dagger` with a single command. From a powershell terminal, run the following command: +If you do, you can install `dagger` with a few commands. From a powershell terminal, run: ```shell -curl https://releases.dagger.io/dagger/install.ps1 -OutFile install.ps1 ; ./install.ps1; rm install.ps1 +curl https://dl.dagger.io/dagger/install.ps1 -OutFile install.ps1 +./install.ps1 +rm install.ps1 ``` We try to move the dagger binary under `C:\Windows\System32` but @@ -220,11 +240,6 @@ cd dagger git checkout v0.2.0 cd pkg/universe.dagger.io/examples/todoapp -``` - -With everything in place, we run the CI/CD pipeline locally: - -```shell dagger do build ``` @@ -243,10 +258,11 @@ With an empty cache, installing all dependencies, then testing & generating a bu ``` Since this is a static application, we can open the files which are generated in `actions.build.contents` in a browser. -The last step copies the build result into the `build` directory on the host. +The last step - `client.filesystem.build.write` - copies the build result into the `build` directory on the host. + On Windows, we run `start build/index.html` in our `Command Prompt` terminal and see the following app preview: -![todoapp preview](/img/getting-started/todoapp.png) +![todoapp preview](/img/getting-started/todoapp.macos.png) One of the big advantages to this approach is that we did not have to install any dependencies specific to this application. Dagger managed all the intermediary steps, and we ended up with the end-result on our host, without any of the transient dependencies. diff --git a/install.sh b/install.sh index 034c3e43..72efc0bd 100755 --- a/install.sh +++ b/install.sh @@ -267,7 +267,7 @@ latest_version() { base_url() { os="$(uname_os)" arch="$(uname_arch)" - version="$(latest_version)" + version="${DAGGER_VERSION?:$(latest_version)}" url="${base}/${name}/releases/${version}" echo "$url" } @@ -275,7 +275,7 @@ base_url() { tarball() { os="$(uname_os)" arch="$(uname_arch)" - version="$(latest_version)" + version="${DAGGER_VERSION?:$(latest_version)}" name="${name}_v${version}_${os}_${arch}" if [ "$os" = "windows" ]; then name="${name}.zip" diff --git a/website/static/img/getting-started/todoapp.linux.png b/website/static/img/getting-started/todoapp.linux.png new file mode 100644 index 0000000000000000000000000000000000000000..45bd578b9aae97cc6f05d97e8a98bddfe432d1d7 GIT binary patch literal 47244 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 literal 0 HcmV?d00001 diff --git a/website/static/img/getting-started/todoapp.png b/website/static/img/getting-started/todoapp.macos.png similarity index 100% rename from website/static/img/getting-started/todoapp.png rename to website/static/img/getting-started/todoapp.macos.png