From fd473033af328201f9053839f9a85e885fe68ef7 Mon Sep 17 00:00:00 2001 From: guillaume Date: Fri, 11 Mar 2022 01:51:41 +0100 Subject: [PATCH] Complete Windows Getting-started doc Doc tested and written with rc1 version, on Windows Signed-off-by: guillaume --- docs/getting-started/1200-local-dev.md | 74 ++++++++++++++++++++++++-- 1 file changed, 71 insertions(+), 3 deletions(-) diff --git a/docs/getting-started/1200-local-dev.md b/docs/getting-started/1200-local-dev.md index 9a05e801..45f8a556 100644 --- a/docs/getting-started/1200-local-dev.md +++ b/docs/getting-started/1200-local-dev.md @@ -42,7 +42,7 @@ With Docker running, we are ready to download our example app and run its CI/CD ```shell git clone https://github.com/dagger/dagger cd dagger -git checkout v0.2.0-beta.2 +git checkout v0.2.0 cd pkg/universe.dagger.io/examples/todoapp ``` @@ -123,7 +123,7 @@ With Docker Engine running, we are ready to download our example app and run its ```shell git clone https://github.com/dagger/dagger cd dagger -git checkout v0.2.0-beta.2 +git checkout v0.2.0 cd pkg/universe.dagger.io/examples/todoapp ``` @@ -195,14 +195,82 @@ curl https://releases.dagger.io/dagger/install.ps1 -OutFile install.ps1 ; ./inst We try to move the dagger binary under `C:\Windows\System32` but in case we miss the necessary permissions, we'll save everything under `/dagger` -Check that `dagger` is installed correctly by opening a command prompt and run: +Check that `dagger` is installed correctly by opening a `Command Prompt` terminal and run: ```shell where dagger C:\\dagger.exe ``` +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. +Still in your `Command Prompt` terminal: + +```shell +git clone https://github.com/dagger/dagger +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 +``` + +With an empty cache, installing all dependencies, then testing & generating a build for this example app completes in just under a minute: + +```shell +[✔] client.filesystem.".".read 0.2s +[✔] actions.deps 55.2s +[✔] actions.test.script 0.1s +[✔] actions.test 1.8s +[✔] actions.build.run.script 0.1s +[✔] actions.build.run 8.6s +[✔] actions.build.contents 0.4s +[✔] client.filesystem.build.write 0.2s +``` + +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. +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) + +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. + +Now that we have everything running locally, let us make a change and get a feel for our local CI/CD loop. +The quicker we can close this loop, the quicker we can learn what actually works. +With Dagger, we can close this loop locally, without committing and pushing our changes. +And since every action is cached, subsequent runs will be quicker. + +In the todoapp directory, edit line `25` of `src/components/Form.js` and save the file. + +I change this line to `What must be done today?` and run the build locally again: + +```shell +dagger do build +INF upgrading buildkit have host network=true version=v0.10.0 +[✔] client.filesystem.".".read 0.1s +[✔] actions.deps 15.0s +[✔] actions.test.script 0.0s +[✔] actions.test 1.8s +[✔] actions.build.run.script 0.0s +[✔] actions.build.run 8.9s +[✔] actions.build.contents 0.4s +[✔] client.filesystem.build.write 0.1s +``` + +Being able to re-run the test & build loop locally in `26.3s`, without adding any extra dependencies to our host, is likely to change our approach to iterating on changes. +It becomes even more obvious when the change is not as straightforward as knowing _exactly_ which line to edit. + + :::tip