Giter VIP home page Giter VIP logo

envbuilder's Introduction

envbuilder

discord release godoc license

Build development environments from a Dockerfile on Docker, Kubernetes, and OpenShift. Allow developers to modify their environment in a tight feedback loop.

  • Supports devcontainer.json and Dockerfile
  • Cache image layers with registries for speedy builds
  • Runs on Kubernetes, Docker, and OpenShift

Quickstart

The easiest way to get started is to run the envbuilder Docker container that clones a repository, builds the image from a Dockerfile, and runs the $ENVBUILDER_INIT_SCRIPT in the freshly built container.

/tmp/envbuilder directory persists demo data between commands. You can choose a different directory.

docker run -it --rm \
    -v /tmp/envbuilder:/workspaces \
    -e ENVBUILDER_GIT_URL=https://github.com/coder/envbuilder-starter-devcontainer \
    -e ENVBUILDER_INIT_SCRIPT=bash \
    ghcr.io/coder/envbuilder

Edit .devcontainer/Dockerfile to add htop:

$ vim .devcontainer/Dockerfile
- RUN apt-get install vim sudo -y
+ RUN apt-get install vim sudo htop -y

Exit the container, and re-run the docker run command... after the build completes, htop should exist in the container! 🥳

Note

Envbuilder performs destructive filesystem operations! To guard against accidental data loss, it will refuse to run if it detects that KANIKO_DIR is not set to a specific value. If you need to bypass this behavior for any reason, you can bypass this safety check by setting ENVBUILDER_FORCE_SAFE=true.

Git Branch Selection

Choose a branch using ENVBUILDER_GIT_URL with a ref/heads reference. For instance:

ENVBUILDER_GIT_URL=https://github.com/coder/envbuilder-starter-devcontainer/#refs/heads/my-feature-branch

Container Registry Authentication

envbuilder uses Kaniko to build containers. You should follow their instructions to create an authentication configuration.

After you have a configuration that resembles the following:

{
  "auths": {
    "https://index.docker.io/v1/": {
      "auth": "base64-encoded-username-and-password"
    }
  }
}

base64 encode the JSON and provide it to envbuilder as the ENVBUILDER_DOCKER_CONFIG_BASE64 environment variable.

Alternatively, if running envbuilder in Kubernetes, you can create an ImagePullSecret and pass it into the pod as a volume mount. This example will work for all registries.

# Artifactory example
kubectl create secret docker-registry regcred \
  --docker-server=my-artifactory.jfrog.io \
  --docker-username=read-only \
  --docker-password=secret-pass \
  [email protected] \
  -n coder
resource "kubernetes_deployment" "example" {
  metadata {
    namespace = coder
  }
  spec {
    spec {
      container {
        # Define the volumeMount with the pull credentials
        volume_mount {
          name       = "docker-config-volume"
          mount_path = "/.envbuilder/config.json"
          sub_path   = ".dockerconfigjson"
        }
      }
      # Define the volume which maps to the pull credentials
      volume {
        name = "docker-config-volume"
        secret {
          secret_name = "regcred"
        }
      }
    }
  }
}

Docker Hub

Authenticate with docker login to generate ~/.docker/config.json. Encode this file using the base64 command:

$ base64 -w0 ~/.docker/config.json
ewoJImF1dGhzIjogewoJCSJodHRwczovL2luZGV4LmRvY2tlci5pby92MS8iOiB7CgkJCSJhdXRoIjogImJhc2U2NCBlbmNvZGVkIHRva2VuIgoJCX0KCX0KfQo=

Provide the encoded JSON config to envbuilder:

ENVBUILDER_DOCKER_CONFIG_BASE64=ewoJImF1dGhzIjogewoJCSJodHRwczovL2luZGV4LmRvY2tlci5pby92MS8iOiB7CgkJCSJhdXRoIjogImJhc2U2NCBlbmNvZGVkIHRva2VuIgoJCX0KCX0KfQo=

Docker-in-Docker

See here for instructions on running Docker containers inside environments built by Envbuilder.

Git Authentication

Two methods of authentication are supported:

HTTP Authentication

If ENVBUILDER_GIT_URL starts with http:// or https://, envbuilder will authenticate with ENVBUILDER_GIT_USERNAME and ENVBUILDER_GIT_PASSWORD, if set.

For access token-based authentication, follow the following schema (if empty, there's no need to provide the field):

Provider ENVBUILDER_GIT_USERNAME ENVBUILDER_GIT_PASSWORD
GitHub [access-token]
GitLab oauth2 [access-token]
BitBucket x-token-auth [access-token]
Azure DevOps [access-token]

If using envbuilder inside of Coder, you can use the coder_external_auth Terraform resource to automatically provide this token on workspace creation:

data "coder_external_auth" "github" {
    id = "github"
}

resource "docker_container" "dev" {
    env = [
        ENVBUILDER_GIT_USERNAME = data.coder_external_auth.github.access_token,
    ]
}

SSH Authentication

If ENVBUILDER_GIT_URL does not start with http:// or https://, envbuilder will assume SSH authentication. You have the following options:

  1. Public/Private key authentication: set ENVBUILDER_GIT_SSH_KEY_PATH to the path of an SSH private key mounted inside the container. Envbuilder will use this SSH key to authenticate. Example:

     docker run -it --rm \
       -v /tmp/envbuilder:/workspaces \
       -e [email protected]:path/to/private/repo.git \
       -e ENVBUILDER_INIT_SCRIPT=bash \
       -e ENVBUILDER_GIT_SSH_KEY_PATH=/.ssh/id_rsa \
       -v /home/user/id_rsa:/.ssh/id_rsa \
       ghcr.io/coder/envbuilder
  2. Agent-based authentication: set SSH_AUTH_SOCK and mount in your agent socket, for example:

  docker run -it --rm \
    -v /tmp/envbuilder:/workspaces \
    -e [email protected]:path/to/private/repo.git \
    -e ENVBUILDER_INIT_SCRIPT=bash \
    -e SSH_AUTH_SOCK=/tmp/ssh-auth-sock \
    -v $SSH_AUTH_SOCK:/tmp/ssh-auth-sock \
    ghcr.io/coder/envbuilder

Note: by default, envbuilder will accept and log all host keys. If you need strict host key checking, set SSH_KNOWN_HOSTS and mount in a known_hosts file.

Layer Caching

Cache layers in a container registry to speed up builds. To enable caching, authenticate with your registry and set the ENVBUILDER_CACHE_REPO environment variable.

CACHE_REPO=ghcr.io/coder/repo-cache

To experiment without setting up a registry, use ENVBUILDER_LAYER_CACHE_DIR:

docker run -it --rm \
  -v /tmp/envbuilder-cache:/cache \
  -e ENVBUILDER_LAYER_CACHE_DIR=/cache
  ...

Each layer is stored in the registry as a separate image. The image tag is the hash of the layer's contents. The image digest is the hash of the image tag. The image digest is used to pull the layer from the registry.

The performance improvement of builds depends on the complexity of your Dockerfile. For coder/coder, uncached builds take 36m while cached builds take 40s (~98% improvement).

Pushing the built image

Set ENVBUILDER_PUSH_IMAGE=1 to push the entire image to the cache repo in addition to individual layers. ENVBUILDER_CACHE_REPO must be set in order for this to work.

Note: this option forces Envbuilder to perform a "reproducible" build. This will force timestamps for all newly added files to be set to the start of the UNIX epoch.

Probe Layer Cache

To check for the presence of a pre-built image, set ENVBUILDER_GET_CACHED_IMAGE=1. Instead of building the image, this will perform a "dry-run" build of the image, consulting ENVBUILDER_CACHE_REPO for each layer.

If any layer is found not to be present in the cache repo, envbuilder will exit with an error. Otherwise, the image will be emitted in the log output prefixed with the string ENVBUILDER_CACHED_IMAGE=....

Image Caching

When the base container is large, it can take a long time to pull the image from the registry. You can pre-pull the image into a read-only volume and mount it into the container to speed up builds.

# Pull your base image from the registry to a local directory.
docker run --rm \
  -v /tmp/kaniko-cache:/cache \
  gcr.io/kaniko-project/warmer:latest \
    --cache-dir=/cache \
    --image=<your-image>

# Run envbuilder with the local image cache.
docker run -it --rm \
  -v /tmp/kaniko-cache:/image-cache:ro \
  -e ENVBUILDER_BASE_IMAGE_CACHE_DIR=/image-cache

In Kubernetes, you can pre-populate a persistent volume with the same warmer image, then mount it into many workspaces with the ReadOnlyMany access mode.

A sample script to pre-fetch a number of images can be viewed here. This can be run, for example, as a cron job to periodically fetch the latest versions of a number of base images.

Setup Script

The ENVBUILDER_SETUP_SCRIPT environment variable dynamically configures the user and init command (PID 1) after the container build process.

Note

TARGET_USER is passed to the setup script to specify who will execute ENVBUILDER_INIT_COMMAND (e.g., code).

Write the following to $ENVBUILDER_ENV to shape the container's init process:

  • TARGET_USER: Identifies the ENVBUILDER_INIT_COMMAND executor (e.g.root).
  • ENVBUILDER_INIT_COMMAND: Defines the command executed by TARGET_USER (e.g. /bin/bash).
  • ENVBUILDER_INIT_ARGS: Arguments provided to ENVBUILDER_INIT_COMMAND (e.g. -c 'sleep infinity').
# init.sh - change the init if systemd exists
if command -v systemd >/dev/null; then
  echo "Hey 👋 $TARGET_USER"
  echo ENVBUILDER_INIT_COMMAND=systemd >> $ENVBUILDER_ENV
else
  echo ENVBUILDER_INIT_COMMAND=bash >> $ENVBUILDER_ENV
fi

# run envbuilder with the setup script
docker run -it --rm \
  -v ./:/some-dir \
  -e ENVBUILDER_SETUP_SCRIPT=/some-dir/init.sh \
  ...

Custom Certificates

  • ENVBUILDER_SSL_CERT_FILE: Specifies the path to an SSL certificate.
  • ENVBUILDER_SSL_CERT_DIR: Identifies which directory to check for SSL certificate files.
  • ENVBUILDER_SSL_CERT_BASE64: Specifies a base64-encoded SSL certificate that will be added to the global certificate pool on start.

Unsupported features

Development Containers

The table keeps track of features we would love to implement. Feel free to create a new issue if you want Envbuilder to support it.

Name Description Known issues
Volume mounts Volumes are used to persist data and share directories between the host and container. #220
Port forwarding Port forwarding allows exposing container ports to the host, making services accessible. #48
Script init & Entrypoint init adds a tiny init process to the container and entrypoint sets a script to run at container startup. #221
Customizations Product specific properties, for instance: VS Code settings and extensions. #43
Composefile Define multiple containers and services for more complex development environments. #236

Devfile

Devfiles automate and simplify development process by adopting the existing devfiles that are available in the public community registry.

Issue: #113

Local Development

Building envbuilder currently requires a Linux system.

On MacOS or Windows systems, we recommend either using a VM or the provided .devcontainer for development.

Additional Requirements:

  • go 1.22
  • make
  • Docker daemon (for running tests)

Makefile targets:

  • build: builds and tags envbuilder:latest for your current architecture.
  • develop: runs envbuilder:latest against a sample Git repository.
  • test: run tests.
  • test-registry: stands up a local registry for caching images used in tests.

Environment Variables

Flag Environment variable Default Description
--setup-script ENVBUILDER_SETUP_SCRIPT The script to run before the init script. It runs as the root user regardless of the user specified in the devcontainer.json file. SetupScript is ran as the root user prior to the init script. It is used to configure envbuilder dynamically during the runtime. e.g. specifying whether to start systemd or tiny init for PID 1.
--init-script ENVBUILDER_INIT_SCRIPT The script to run to initialize the workspace. Default: sleep infinity.
--init-command ENVBUILDER_INIT_COMMAND The command to run to initialize the workspace. Default: /bin/sh.
--init-args ENVBUILDER_INIT_ARGS The arguments to pass to the init command. They are split according to /bin/sh rules with https://github.com/kballard/go-shellquote.
--cache-repo ENVBUILDER_CACHE_REPO The name of the container registry to push the cache image to. If this is empty, the cache will not be pushed.
--base-image-cache-dir ENVBUILDER_BASE_IMAGE_CACHE_DIR The path to a directory where the base image can be found. This should be a read-only directory solely mounted for the purpose of caching the base image.
--layer-cache-dir ENVBUILDER_LAYER_CACHE_DIR The path to a directory where built layers will be stored. This spawns an in-memory registry to serve the layers from.
--devcontainer-dir ENVBUILDER_DEVCONTAINER_DIR The path to the folder containing the devcontainer.json file that will be used to build the workspace and can either be an absolute path or a path relative to the workspace folder. If not provided, defaults to .devcontainer.
--devcontainer-json-path ENVBUILDER_DEVCONTAINER_JSON_PATH The path to a devcontainer.json file that is either an absolute path or a path relative to DevcontainerDir. This can be used in cases where one wants to substitute an edited devcontainer.json file for the one that exists in the repo.
--dockerfile-path ENVBUILDER_DOCKERFILE_PATH The relative path to the Dockerfile that will be used to build the workspace. This is an alternative to using a devcontainer that some might find simpler.
--build-context-path ENVBUILDER_BUILD_CONTEXT_PATH Can be specified when a DockerfilePath is specified outside the base WorkspaceFolder. This path MUST be relative to the WorkspaceFolder path into which the repo is cloned.
--cache-ttl-days ENVBUILDER_CACHE_TTL_DAYS The number of days to use cached layers before expiring them. Defaults to 7 days.
--docker-config-base64 ENVBUILDER_DOCKER_CONFIG_BASE64 The base64 encoded Docker config file that will be used to pull images from private container registries.
--fallback-image ENVBUILDER_FALLBACK_IMAGE Specifies an alternative image to use when neither an image is declared in the devcontainer.json file nor a Dockerfile is present. If there's a build failure (from a faulty Dockerfile) or a misconfiguration, this image will be the substitute. Set ExitOnBuildFailure to true to halt the container if the build faces an issue.
--exit-on-build-failure ENVBUILDER_EXIT_ON_BUILD_FAILURE Terminates the container upon a build failure. This is handy when preferring the FALLBACK_IMAGE in cases where no devcontainer.json or image is provided. However, it ensures that the container stops if the build process encounters an error.
--force-safe ENVBUILDER_FORCE_SAFE Ignores any filesystem safety checks. This could cause serious harm to your system! This is used in cases where bypass is needed to unblock customers.
--insecure ENVBUILDER_INSECURE Bypass TLS verification when cloning and pulling from container registries.
--ignore-paths ENVBUILDER_IGNORE_PATHS The comma separated list of paths to ignore when building the workspace.
--skip-rebuild ENVBUILDER_SKIP_REBUILD Skip building if the MagicFile exists. This is used to skip building when a container is restarting. e.g. docker stop -> docker start This value can always be set to true - even if the container is being started for the first time.
--git-url ENVBUILDER_GIT_URL The URL of a Git repository containing a Devcontainer or Docker image to clone. This is optional.
--git-clone-depth ENVBUILDER_GIT_CLONE_DEPTH The depth to use when cloning the Git repository.
--git-clone-single-branch ENVBUILDER_GIT_CLONE_SINGLE_BRANCH Clone only a single branch of the Git repository.
--git-username ENVBUILDER_GIT_USERNAME The username to use for Git authentication. This is optional.
--git-password ENVBUILDER_GIT_PASSWORD The password to use for Git authentication. This is optional.
--git-ssh-private-key-path ENVBUILDER_GIT_SSH_PRIVATE_KEY_PATH Path to an SSH private key to be used for Git authentication.
--git-http-proxy-url ENVBUILDER_GIT_HTTP_PROXY_URL The URL for the HTTP proxy. This is optional.
--workspace-folder ENVBUILDER_WORKSPACE_FOLDER The path to the workspace folder that will be built. This is optional.
--ssl-cert-base64 ENVBUILDER_SSL_CERT_BASE64 The content of an SSL cert file. This is useful for self-signed certificates.
--export-env-file ENVBUILDER_EXPORT_ENV_FILE Optional file path to a .env file where envbuilder will dump environment variables from devcontainer.json and the built container image.
--post-start-script-path ENVBUILDER_POST_START_SCRIPT_PATH The path to a script that will be created by envbuilder based on the postStartCommand in devcontainer.json, if any is specified (otherwise the script is not created). If this is set, the specified InitCommand should check for the presence of this script and execute it after successful startup.
--coder-agent-url CODER_AGENT_URL URL of the Coder deployment. If CODER_AGENT_TOKEN is also set, logs from envbuilder will be forwarded here and will be visible in the workspace build logs.
--coder-agent-token CODER_AGENT_TOKEN Authentication token for a Coder agent. If this is set, then CODER_AGENT_URL must also be set.
--coder-agent-subsystem CODER_AGENT_SUBSYSTEM Coder agent subsystems to report when forwarding logs. The envbuilder subsystem is always included.
--push-image ENVBUILDER_PUSH_IMAGE Push the built image to a remote registry. This option forces a reproducible build.
--get-cached-image ENVBUILDER_GET_CACHED_IMAGE Print the digest of the cached image, if available. Exits with an error if not found.
--verbose ENVBUILDER_VERBOSE Enable verbose logging.

envbuilder's People

Contributors

aaronlehmann avatar brunoquaresma avatar coryb avatar dannykopping avatar dependabot[bot] avatar ericpaulsen avatar janlo avatar johnstcn avatar jw910731 avatar kconley-sq avatar kylecarbs avatar mafredri avatar matifali avatar maxbrunet avatar michaelbrewer avatar mtojek avatar nwrkbiz avatar toshikish avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

envbuilder's Issues

ARM Support?

Would it be possible to issue both an x86 and ARM release? I'd like to set this up on my raspberry pi using docker for educational purposes.

Thank you!

Do not pass techinal ENVs to user

For example, env DOCKER_CONFIG passed to userspace and broke docker build command:

docker run --rm -it -e INIT_SCRIPT='echo $DOCKER_CONFIG' -e GIT_URL=https://github.com/coder/envbuilder.git ghcr.io/coder/envbuilder
...
/.envbuilder

Expecting that VSCode plugins will be automatically installed

When using devcontainers in the VSCode desktop application, it installs extensions based on the customizations.vscode.extensions file. It is hoped that this behavior can be consistent with the desktop version, or that a separate setting option can be added.

Envbuilder does not run in a sysbox container

Envbuilder fails if it runs using the sysbox container runtime. This is unfortunate because sysbox is neccessary to run k3s or docker within a workspace.

The issue is described already in the kaniko project: GoogleContainerTools/kaniko#2144 and the sysbox project: nestybox/sysbox#564

There are also workarounds proposed (like unmounting the offending mountpoint or mounting something empty over it). As envbuilder uses kaniko internally, but the image lacks the userland for the workarounds I think, it should also implement the workaround for convenience.

Another option is to attach an empty volume from the outside to the container, but this is difficult to implement in a terraform manifest as the target of the mountpoint is dependend on the running kernel of the host - and the provisioner does not have this information available.

`postCreateCommand` does not execute

Dev containers support a postCreateCommand parameter, to execute commands once the devcontainer is rebuilt:

"postCreateCommand": "bash scripts/install-dependencies.sh"

this is not run when using envbuilder:latest

doesn't work for dogfood

docker run -it --rm -e GIT_URL=https://github.com/coder/coder ghcr.io/coder/envbuilder:0.0.2
Unable to find image 'ghcr.io/coder/envbuilder:0.0.2' locally
0.0.2: Pulling from coder/envbuilder
5a01522056df: Pull complete
Digest: sha256:297b708adcdc5895695b20c6839994ce2986a6820809daf704b9e6d96bb7bd17
Status: Downloaded newer image for ghcr.io/coder/envbuilder:0.0.2
envbuilder - Build development environments from repositories in a container
#1: 📦 Cloning https://github.com/coder/coder to /workspaces/coder...
#1: Enumerating objects: 6492, done.
Counting objects: 100% (6492/6492), done.
Compressing objects: 100% (6204/6204), done.
#1: Total 6492 (delta 268), reused 5322 (delta 180), pack-reused 0
#1: 📦 Cloned repository! [6240ms]
#2: 🏗️ Building image...
#2: 🏗️ Built image! [0ms]
Error: reading dockerfile at path /workspaces/coder/.devcontainer: read /workspaces/coder/.devcontainer: is a directory
error: reading dockerfile at path /workspaces/coder/.devcontainer: read /workspaces/coder/.devcontainer: is a directory

Providing a single workspace per VM

I'm unsure if this issue belong to this repo or coder/coder. Tell me if I should move it.

Currently registry.coder.com have only two examples of envbuilder/devcontainer ( docker and k8s)
Do you know if it will be possible to use envbuilder to provision a single workspace per VM ? (VM as isolation model)

The use-case I have in mind is to provide a secure way of using docker in the workspace.
The exact same way codespaces do by default with the feature docker-in-docker ( related to #25 )

The docker-in-docker feature is not secure as it allows to breakout the container and access the underlying host.
But on codespaces that's totally fine because Azure VMs are not shared. (one workspace per VM)

However, tell me if I'm wrong but envbuilder is mainly used with linux NS isolation (k8s, openshift or docker with multiple workspaces on the same VM) .
In that case providing docker would be a little tricky and seem there is only two solutions :

  • The gitpod solution : rootless docker & slirp4netns + several hacks to make it work. (seem harder, less performant)
  • sysbox or envbox #50 (easier)
    (Note: for both solutions I doubt docker-in-docker feature can be used as is)

use FALLBACK_IMAGE when no devcontainer specified

We currently have FALLBACK_IMAGE. If an devcontainer is not specified, we should also support a KITCHENSINK_IMAGE (or use the fallback image for this too). Then, an admin can maintain an image that works in "most" cases.

Deal with devcontainer.json "liberties"

It looks like envbuilder's json parser is not okay with trailing , in arrays, or json comments. Not sure what can be done with this, as I assume its using a 3rd party parser that might not support vscode's liberties taken with json.

Fails to parse Dockerfile base image when using stages

Problem

When envbuilder tries to build a Dockerfile that uses FROM <image> AS <stage> notation envbuilder errors parsing the base image

EXAMPLE 1

Dockerfile:

FROM public.ecr.aws/docker/library/python:3.10-slim AS base

Envbuilder error:

error: compile devcontainer.json: parse image from dockerfile: parse image ref "public.ecr.aws/docker/library/python:3.10-slim AS base": could not parse reference: public.ecr.aws/docker/library/python:3.10-slim AS base

EXAMPLE 2

Dockerfile:

FROM public.ecr.aws/docker/library/rust:1.73-bullseye@sha256:fbc99ade5c476a8d602192a1bf8d50ae3361469c160d55a34379905ad4f82ae5 as base

Envbuilder error:

error: compile devcontainer.json: get user from image: fetch image index.docker.io/library/base:latest: GET https://index.docker.io/v2/library/base/manifests/latest: UNAUTHORIZED: authentication required; [map[Action:pull Class: Name:library/base Type:repository]]

Solution

Envbuilder should understand the FROM <image> AS <stage> notation

Add support for postCreateCommand

Hello,

I've been waiting for this feature in coder for a long time to I'm really excited about helping test the initial versions.

One thing I noticed today was that the postCreateCommand doesn't seem to get executed. Is there any idea on how this should be implemented? I'm happy to contribute with this and get myself familiarized with the codebase.

Add Support for DevFile Spec 2+

What is devfiles?

"You can use devfiles to automate and simplify your development process by adopting the existing devfiles that are available in the public community registry or by authoring your own devfiles to record custom instructions to configure and run your build environment as a YAML-formatted text file." - See https://devfile.io/docs/2.2.2/what-is-a-devfile

Benefits of devfile

Much like the devcontainer spec, devfile spec has a number of features.

Devfiles include the following features:

  • Guidance for using runtime images
  • Example code
  • Build and CI commands
  • Deployment options

Devfiles have the following benefits:

  • Reduce the gap between development and deployment
  • Find available devfile stacks or samples in a devfile registry
  • Produce consistent build and run behaviors

Main benefits from these that differ from devcontainer are:

  • Not limited to vscode
  • Has a catalog of defined templates
  • Includes support for starter projects, so bluepints can be built into the spec.
  • Interoperability with OpenShift and Gitlab workspaces
  • Multi-container development environments (which would be beyond the spec of envbuilder but maybe more for coder as a product)

AI Generated differents

The devfile spec is a vendor-neutral definition for cloud-native dev workspaces, whereas the devcontainer spec is a Docker extension that aims to simplify local development.

  • Devfile
    • Describes the structure of a cloud-native devworkspace and development environment.
    • Can be used to define and manage dev workspaces in any cloud environment.
    • Supports a wider range of features, including:
      • Multi-container development environments
      • Kubernetes-based deployments
      • Support for multiple projects and starter projects
      • Pluggable tooling integrations
  • Devcontainer
    • Focused on providing a simple and consistent way to define and manage local development environments for Docker containers.
    • Supports a more limited range of features, including:
      • Single-container development environments
      • Docker-based deployments
      • Basic support for project syncing and environment variables
    • Typically used for local development on a single machine, not for managing dev workspaces in a cloud environment.

Some examples

Java Spring Boot

schemaVersion: 2.1.0
metadata:
  name: java-springboot
  displayName: Spring Boot®
  description: Java application using Spring Boot® and OpenJDK 11
  icon: https://raw.githubusercontent.com/devfile-samples/devfile-stack-icons/main/spring.svg
  tags:
    - Java
    - Spring
  projectType: springboot
  language: Java
  version: 1.3.0
  globalMemoryLimit: 2674Mi
starterProjects:
  - name: springbootproject
    git:
      remotes:
        origin: "https://github.com/odo-devfiles/springboot-ex.git"
components:
  - name: tools
    container:
      image: registry.access.redhat.com/ubi9/openjdk-17:1.17-1.1705573248
      command: ["tail", "-f", "/dev/null"]
      memoryLimit: 768Mi
      mountSources: true
      endpoints:
        - name: http-springboot
          targetPort: 8080
        - exposure: none
          name: debug
          targetPort: 5858
      volumeMounts:
        - name: m2
          path: /home/user/.m2
      env:
        - name: DEBUG_PORT
          value: "5858"
  - name: m2
    volume:
      size: 3Gi
commands:
  - id: build
    exec:
      component: tools
      workingDir: ${PROJECT_SOURCE}
      commandLine: "mvn clean -Dmaven.repo.local=/home/user/.m2/repository package -Dmaven.test.skip=true"
      group:
        kind: build
        isDefault: true
  - id: run
    exec:
      component: tools
      workingDir: ${PROJECT_SOURCE}
      commandLine: "mvn -Dmaven.repo.local=/home/user/.m2/repository spring-boot:run"
      group:
        kind: run
        isDefault: true
  - id: debug
    exec:
      component: tools
      workingDir: ${PROJECT_SOURCE}
      commandLine: "java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=${DEBUG_PORT},suspend=n -jar target/*.jar"
      group:
        kind: debug
        isDefault: true

NextJS project

schemaVersion: 2.1.0
metadata:
  name: nodejs-nextjs
  displayName: Next.js
  description: "Next.js gives you the best developer experience with all the features you need for production:
    hybrid static & server rendering, TypeScript support, smart bundling, route pre-fetching, and more.
    No config needed."
  icon: https://raw.githubusercontent.com/devfile-samples/devfile-stack-icons/main/next-js.svg
  tags:
    - Node.js
    - Next.js
  projectType: Next.js
  language: TypeScript
  provider: Red Hat
  version: 1.0.3
starterProjects:
  - name: nodejs-nextjs-starter
    git:
      checkoutFrom:
        revision: main
      remotes:
        origin: https://github.com/devfile-samples/devfile-stack-nodejs-nextjs.git
components:
  - container:
      endpoints:
        - name: http-nextjs
          targetPort: 3000
      image: registry.access.redhat.com/ubi8/nodejs-16:1-153
      command: ['tail', '-f', '/dev/null']
      memoryLimit: 1024Mi
    name: runtime
commands:
  - exec:
      commandLine: npm install
      component: runtime
      group:
        isDefault: true
        kind: build
      workingDir: ${PROJECT_SOURCE}
    id: install
  - exec:
      commandLine: npm run dev
      component: runtime
      group:
        isDefault: true
        kind: run
      hotReloadCapable: true
      workingDir: ${PROJECT_SOURCE}
    id: run

DotNet project

schemaVersion: 2.2.0
metadata:
  name: dotnet-basic
  displayName: Basic .NET
  version: 1.1.1
  icon: https://github.com/dotnet/brand/raw/main/logo/dotnet-logo.png
  provider: Red Hat
  supportUrl: https://github.com/devfile-samples/devfile-support#support-information
  language: .NET
  projectType: dotnet
  tags:
    - .NET
  attributes:
    alpha.dockerimage-port: 8081
starterProjects:
  - name: s2i-example
    git:
      checkoutFrom:
        remote: origin
        revision: dotnet-6.0
      remotes:
        origin: https://github.com/redhat-developer/s2i-dotnetcore-ex
    subDir: app
components:
  - name: dotnet
    container:
      image: registry.access.redhat.com/ubi8/dotnet-60:6.0
      command: ['tail', '-f', '/dev/null']
      mountSources: true
      env:
        - name: CONFIGURATION
          value: Debug
        - name: STARTUP_PROJECT
          value: app.csproj
        - name: ASPNETCORE_ENVIRONMENT
          value: Development
      endpoints:
        - name: http-8080
          targetPort: 8080
  - name: image-build
    image:
      imageName: 'dotnet-image:latest'
      dockerfile:
        uri: docker/Dockerfile
        buildContext: .
        rootRequired: false
  - name: kubernetes-deploy
    attributes:
      deployment/replicas: 1
      deployment/cpuRequest: 10m
      deployment/memoryRequest: 100Mi
      deployment/container-port: 8081
    kubernetes:
      uri: kubernetes/deployment.yaml
      endpoints:
        - name: http-8081
          targetPort: 8081
          path: /
          secure: true
  - name: kubernetes-service
    attributes:
      deployment/replicas: 1
      deployment/cpuRequest: 10m
      deployment/memoryRequest: 100Mi
      deployment/container-port: 8081
    kubernetes:
      uri: kubernetes/service.yaml
commands:
  - id: build
    exec:
      workingDir: ${PROJECT_SOURCE}
      commandLine: kill $(pidof dotnet); dotnet build -c $CONFIGURATION $STARTUP_PROJECT /p:UseSharedCompilation=false
      component: dotnet
      group:
        isDefault: true
        kind: build
  - id: run
    exec:
      workingDir: ${PROJECT_SOURCE}
      commandLine: dotnet run -c $CONFIGURATION --no-build --project $STARTUP_PROJECT --no-launch-profile
      component: dotnet
      group:
        isDefault: true
        kind: run
  - id: build-image
    apply:
      component: image-build
  - id: deploy-deployment
    apply:
      component: kubernetes-deploy
  - id: deploy-service
    apply:
      component: kubernetes-service
  - id: deploy
    composite:
      commands:
        - build-image
        - deploy-deployment
        - deploy-service
      group:
        isDefault: true
        kind: deploy

Azure DevOps repo clone with `GIT_USERNAME` from `coder_external_auth`

Hi there,

I am trying to clone a repo from a private Azure DevOps repository.
The user has authenticated using OAUTH2 via the Coder external_auth documentation
image

I am then using the template in the repo and injecting the external auth as a data object in Terraform

data "coder_external_auth" "azure_devops" {
  id = "primary-devops"
}

resource "kubernetes_deployment" "workspace" {
  metadata {
    name      = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}"
    namespace = var.namespace
    labels = {
      ...
    }
  }
  spec {
    replicas = data.coder_workspace.me.start_count
    selector {
      match_labels = {
        "coder.workspace_id" = data.coder_workspace.me.id
      }
    }
    strategy {
      type = "Recreate"
    }
    template {
      ...
      }
      spec {
        container {
          name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}"
          # Find the latest version here:
          # https://github.com/coder/envbuilder/tags
          image = "ghcr.io/coder/envbuilder:0.2.7"
          env {
            name  = "CODER_AGENT_TOKEN"
            value = coder_agent.main.token
          }
          env {
            name  = "CODER_AGENT_URL"
            value = replace(data.coder_workspace.me.access_url, "/localhost|127\\.0\\.0\\.1/", "host.docker.internal")
          }
          env {
            name  = "GIT_URL"
            value = data.coder_parameter.repo.value == "custom" ? data.coder_parameter.custom_repo_url.value : data.coder_parameter.repo.value
          }
          env {
            name  = "GIT_USERNAME"
            value = data.coder_external_auth.azure_devops.access_token
          }
          env {
            name  = "INIT_SCRIPT"
            value = replace(coder_agent.main.init_script, "/localhost|127\\.0\\.0\\.1/", "host.docker.internal")
          }
          env {
            name  = "FALLBACK_IMAGE"
            value = "codercom/enterprise-base:ubuntu"
          }
          volume_mount {
            name       = "workspaces"
            mount_path = "/workspaces"
          }
        }
        volume {
          name = "workspaces"
          persistent_volume_claim {
            claim_name = kubernetes_persistent_volume_claim.workspaces.metadata.0.name
          }
        }
      }
    }
  }
}

When it get's to checking out the repo, the terraform throws a pretty unhelpful error:

#1: 📦 Cloning https://<our_org>@dev.azure.com/<our_org>/build-automation/_git/devcontainers to /workspaces/devcontainers...
Failed to clone repository: clone "https://<access_token_I_presume>:@dev.azure.com/<our_org>/build-automation/_git/devcontainers": unexpected client error: unexpected requesting "https://<access_token_I_presume>@dev.azure.com/<our_org>/build-automation/_git/devcontainers/git-upload-pack" status code: 400
Falling back to the default image...

Am I missing something or is there something I can test?

Git submodule support

There doesn't appear to be a way to clone a repo with submodules. In my use case, the devcontainer is built up using files coming in from a submod, so this is critical.

It looks looks like support for this would need to be added to CloneRepoOptions in git.go. The underlying git-go options already support this, so hopefully this isn't a heavy lift. See CloneOptions.RecurseSubmodules in go-git/options.go.

Finding the above references is about the extent of my Go knowledge though, so I can't offer a patch myself.

SSH repositories fail to configure with coder

If I try to use a private git repository over SSH I see the following error:

envbuilder - Build development environments from repositories in a container
#1: 📦 Cloning ssh://[email protected]/hive-io/hive-rest.git to /workspaces/hive-rest.git...
Failed to clone repository: clone "ssh://[email protected]/hive-io/hive-rest.git": error creating SSH agent: "SSH agent requested but SSH_AUTH_SOCK not-specified"
Falling back to the default image...
#2: 🏗️ Building image...
#2: Retrieving image manifest codercom/enterprise-base:ubuntu
#2: Retrieving image codercom/enterprise-base:ubuntu from registry index.docker.io
#2: Built cross stage deps: map[]

I didn't see a way to configure that to use the built in SSH key provided by coder. Is there a missing setting?

workspace file permissions incorrect from COPY instruction

Files being added to the workspace via COPY and ADD instructions in the dockerfile will end up with the original permissions from the workspace mount, not the correct default root:root file ownership.

Note this is only when used with docker on Linux.

Here is a simple reproduction:

$ cat .devcontainer/devcontainer.json
{"build":{"dockerfile":"Dockerfile"}}
$ cat .devcontainer/Dockerfile
FROM ubuntu
COPY files /files
RUN find /files -ls
$ docker run --rm -e WORKSPACE_FOLDER=/workspace -e INIT_SCRIPT=/bin/true -v $(pwd):/workspace ghcr.io/coder/envbuilder
...
#2: Running: [/bin/sh -c find /files -ls]
 18395960      4 drwxr-xr-x   2 1000     1000         4096 Dec 17 01:18 /files
 18395961      0 -rw-r--r--   1 1000     1000            0 Dec 17 01:17 /files/some.txt

From the Dockerfile spec:

All new files and directories are created with a UID and GID of 0.

Likely caused by bug in Kaniko GoogleContainerTools/kaniko#2850

The current hacky work-around is to force the --chown:

COPY --chown=0:0 files /files

Which seems to do the "right" thing:

#2: Running: [/bin/sh -c find /files -ls]
 18395960      4 drwxr-xr-x   2 root     root         4096 Dec 17 01:23 /files
 18395961      0 -rw-r--r--   1 root     root            0 Dec 17 01:23 /files/some.txt

Feature: Support for configuring http proxy

Via my coder workspace template, i can set the http proxy via:

  • git config --global http.proxy http://mycorpproxy:8080/

However envbuilder does not seem to honor this setting.

I have a PR that allow for this to be set via environment variable GIT_HTTP_PROXY_URL

cannot unmarshal string into Go struct field Spec.features of type map[string]interface {}

I am trying the example template for devcontainers in Coder, and one of the options is the repository of vercel/next.js. However, when I use that example, I get this error:

#1: 📦 Cloning https://github.com/vercel/next.js to /workspaces/next.js...
#1: 📦 The repository already exists! [11.806867ms]
Failed to parse devcontainer.json: json: cannot unmarshal string into Go struct field Spec.features of type map[string]interface {}
Falling back to the default image...

Is this something on the envbuilder side or something on the next.js side?

It doesn't affect me really because it was just an example to get things running, but thought it was worth posting it here in case it's something on the envbuilder side.

Force cloning or pull of repo on each run of envbuilder

When using envbuilder and restarting my workspace I nearly always want a fresh copy of the repo, but when using a pvc similar to this example template I envbuilder simply finds the existing repo, prints:

#1: 📦 Cloning MY_REPO...
#1: 📦 The repository already exists! [5.29944ms]

I see no way to force envbuilder to either clone it each time or, preferably, run a git pull to ensure the repo is fresh between rebuilds, but this would make the process more intuitive for our users.

Support for VS Code Extensions

The devcontainer spec supports pre-installing VS Code extensions. Could we support this with the code-server CLI (or even the official vscode-server for Remote SSH)?

This came up from a prospect at Kubecon

DNS issue with version >= 0.1.6

I'm facing what it seems to be a DNS issue when running 0.1.6. The following error is showing up when trying to build the following devcontainer https://github.com/bilby91/rails-interview

2023-07-18T20:58:40.618 app[e784e965bd0583] eze [info] error: Get "https://mcr.microsoft.com/v2/": dial tcp: lookup mcr.microsoft.com on [::1]:53: read udp [::1]:38905->[::1]:53: read: connection refused

The error doesn't happen when running 0.1.5.

Dockerfile ARG replacement doesnt remove quotes from strings

If you build a Dockerfile in your devcontainer.json that includes the following code:

ARG VARIANT="3.10"
FROM mcr.microsoft.com/devcontainers/python:0-${VARIANT}

or something similar where a string is used with quotes then you get the following error:
error: compile devcontainer.json: parse image from dockerfile: parse image ref "mcr.microsoft.com/devcontainers/python:0-${VARIANT}\r": could not parse reference: mcr.microsoft.com/devcontainers/python:0-"3.10"

Use a specific branch with `GIT_URL`

It would be nice if we could use a specific branch
e.g.

docker run -it --rm \
    -v /tmp/envbuilder:/workspaces \
    -e GIT_URL=https://github.com/coder/coder/tree/matifali/devcontainer \
    -e INIT_SCRIPT=bash \
    ghcr.io/coder/envbuilder

Example: Using `devcontainer.json` to influence a Coder (Terraform) template

Note

I'm not sure how realistic this is, or whether it should be out of scope envbuilder as it's likely a Terraform provider/Coder feature. However, this is a somewhat common use case. It may not be a good fit for envbuilder v1.0 but worth discussing

Since envbuilder is a container image, it cannot influence the underlying infrastructure it can be provisioned on. However some Dev Container features do have support for additional infrastructure layers. Can we provide an example of how a Coder template can read a devcontainer.json and then influence the template? We have some customers doing this today with a custom coder.yaml

Example: Kubernetes Volume Mounts

# The jank approach (pseudocode, untested)
data "http" "devcontainer_contents" {
  url = "${var.git_repo}/${var.git_branch}/.devcontainer/devcontainer.json"

  request_headers = {
    Accept = "application/vnd.github.v3.raw"
  }
}

locals {
  # Attempt to parse mounts from the devcontainer JSON
  parsed_mounts = try(jsondecode(data.http.devcontainer_contents.body).mounts, [])
  
  # Use a default mount if no mounts are specified or if the mounts key doesn't exist
  mounts = length(local.parsed_mounts) > 0 ? local.parsed_mounts : ["source=workspace,target=/workspaces,type=volume"]
  
  # Extracting target paths for PVC creation and Pod mounts
  target_paths = [for m in local.mounts : split(",", m)[1]]
  target_path_names = { for m in local.target_paths : split("=", m)[1] => split("=", m)[1] }
}

resource "kubernetes_persistent_volume_claim" "pvc" {
  for_each = local.target_path_names

  metadata {
    name = "pvc-${replace(each.value, "/", "-")}"
  }

  spec {
    access_modes = ["ReadWriteOnce"]
    resources {
      requests = {
        storage = "1Gi"
      }
    }
  }
}

resource "kubernetes_pod" "example" {
  metadata {
    name = "example-pod"
  }

  spec {
    container {
      image = "nginx"
      name  = "example"

      volume_mount {
        for_each = local.target_path_names
        name     = "pvc-${replace(each.value, "/", "-")}"
        mount_path = each.value
      }
    }

    volume {
      for_each = local.target_path_names
      name = "pvc-${replace(each.value, "/", "-")}"

      persistent_volume_claim {
        claim_name = "pvc-${replace(each.value, "/", "-")}"
      }
    }
  }
}
 image = "nginx"
      name  = "example"

      volume_mount {
        for_each = local.target_path_names
        name     = "pvc-${replace(each.value, "/", "-")}"
        mount_path = each.value
      }
    }

    volume {
      for_each = local.target_path_names
      name = "pvc-${replace(each.value, "/", "-")}"

      persistent_volume_claim {
        claim_name = "pvc-${replace(each.value, "/", "-")}"
      }
    }
  }
}

Option 2: TF Provider

The Coder server reads the devcontainer.json and passes data via a Terraform data source. This is related to coder/coder#8462.

Option 3: envbuilder + docker on a VM

If envbuilder runs on a VM, it could realistically do significantly more such as create Docker volumes as well as run a container.

envbuilder don't recognize "dockerComposeFile" param

Hi! My devcontainer.json looks like this:

{
  "name": "keycrm",
  "dockerComposeFile": [
    "../example.docker-compose.yml"
  ],
  "service": "app",
  "services": ["app", "db"],
  "forwardPorts": [80],
  "postAttachCommand": "service apache2 start",
  "extensions": [
    "felixfbecker.php-pack",
    "cweijan.vscode-mysql-client2"
  ]
}

and coder don't recognize "dockerComposeFile" option. It's described in devcontainer.json schema, and supported by my IDE (phpstorm) as well. But when I'm trying to create a workspace with such devcontainer it usually fallback to default image.
So, maybee in future, would envbuilder support docker-compose files to build, or I'm using it in wrong way? I'm trying to make developer's workspace with standalone environment, but creating only "app" is not enough in case of no DB.

Docs: How to run docker in docker with envbuilder

While experimenting with a .devcontainer that uses docker-in-docker feature, envbuilder gives

docker run -it --rm \
    -v /tmp/envbuilder:/workspaces \
    -e GIT_URL=https://github.com/coder/coder \
    -e INIT_SCRIPT=bash \
    ghcr.io/coder/envbuilder
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Full log

Command

docker run -it --rm \
    -v /tmp/envbuilder:/workspaces \
    -e GIT_URL=https://github.com/coder/coder \
    -e INIT_SCRIPT=bash \
    ghcr.io/coder/envbuilder

Output

envbuilder - Build development environments from repositories in a container
#1: 📦 Cloning https://github.com/coder/coder to /workspaces/coder...
#1: Enumerating objects: 104614, done.
#1: Counting objects:   0% (1/25251)
#1: Counting objects:   1% (253/25251)
#1: Counting objects:   2% (506/25251)
#1: Counting objects:   3% (758/25251)
#1: Counting objects:   4% (1011/25251)
#1: Counting objects:   5% (1263/25251)
#1: Counting objects:   6% (1516/25251)
#1: Counting objects:   7% (1768/25251)
#1: Counting objects:   8% (2021/25251)
#1: Counting objects:   9% (2273/25251)
#1: Counting objects:  10% (2526/25251)
#1: Counting objects:  11% (2778/25251)
#1: Counting objects:  12% (3031/25251)
#1: Counting objects:  13% (3283/25251)
#1: Counting objects:  14% (3536/25251)
#1: Counting objects:  15% (3788/25251)
#1: Counting objects:  16% (4041/25251)
#1: Counting objects:  17% (4293/25251)
#1: Counting objects:  18% (4546/25251)
#1: Counting objects:  19% (4798/25251)
#1: Counting objects:  20% (5051/25251)
#1: Counting objects:  21% (5303/25251)
#1: Counting objects:  22% (5556/25251)
#1: Counting objects:  23% (5808/25251)
#1: Counting objects:  24% (6061/25251)
#1: Counting objects:  25% (6313/25251)
#1: Counting objects:  26% (6566/25251)
#1: Counting objects:  27% (6818/25251)
#1: Counting objects:  28% (7071/25251)
#1: Counting objects:  29% (7323/25251)
#1: Counting objects:  30% (7576/25251)
#1: Counting objects:  31% (7828/25251)
#1: Counting objects:  32% (8081/25251)
#1: Counting objects:  33% (8333/25251)
#1: Counting objects:  34% (8586/25251)
#1: Counting objects:  35% (8838/25251)
#1: Counting objects:  36% (9091/25251)
#1: Counting objects:  37% (9343/25251)
#1: Counting objects:  38% (9596/25251)
#1: Counting objects:  39% (9848/25251)
#1: Counting objects:  40% (10101/25251)
#1: Counting objects:  41% (10353/25251)
#1: Counting objects:  42% (10606/25251)
#1: Counting objects:  43% (10858/25251)
#1: Counting objects:  44% (11111/25251)
#1: Counting objects:  45% (11363/25251)
#1: Counting objects:  46% (11616/25251)
#1: Counting objects:  47% (11868/25251)
#1: Counting objects:  48% (12121/25251)
#1: Counting objects:  49% (12373/25251)
#1: Counting objects:  50% (12626/25251)
#1: Counting objects:  51% (12879/25251)
#1: Counting objects:  52% (13131/25251)
#1: Counting objects:  53% (13384/25251)
#1: Counting objects:  54% (13636/25251)
#1: Counting objects:  55% (13889/25251)
#1: Counting objects:  56% (14141/25251)
#1: Counting objects:  57% (14394/25251)
#1: Counting objects:  58% (14646/25251)
#1: Counting objects:  59% (14899/25251)
#1: Counting objects:  60% (15151/25251)
#1: Counting objects:  61% (15404/25251)
#1: Counting objects:  62% (15656/25251)
#1: Counting objects:  63% (15909/25251)
#1: Counting objects:  64% (16161/25251)
#1: Counting objects:  65% (16414/25251)
#1: Counting objects:  66% (16666/25251)
#1: Counting objects:  67% (16919/25251)
#1: Counting objects:  68% (17171/25251)
#1: Counting objects:  69% (17424/25251)
#1: Counting objects:  70% (17676/25251)
#1: Counting objects:  71% (17929/25251)
#1: Counting objects:  72% (18181/25251)
#1: Counting objects:  73% (18434/25251)
#1: Counting objects:  74% (18686/25251)
#1: Counting objects:  75% (18939/25251)
#1: Counting objects:  76% (19191/25251)
#1: Counting objects:  77% (19444/25251)
#1: Counting objects:  78% (19696/25251)
#1: Counting objects:  79% (19949/25251)
#1: Counting objects:  80% (20201/25251)
#1: Counting objects:  81% (20454/25251)
#1: Counting objects:  82% (20706/25251)
#1: Counting objects:  83% (20959/25251)
#1: Counting objects:  84% (21211/25251)
#1: Counting objects:  85% (21464/25251)
#1: Counting objects:  86% (21716/25251)
#1: Counting objects:  87% (21969/25251)
#1: Counting objects:  88% (22221/25251)
#1: Counting objects:  89% (22474/25251)
#1: Counting objects:  90% (22726/25251)
#1: Counting objects:  91% (22979/25251)
#1: Counting objects:  92% (23231/25251)
#1: Counting objects:  93% (23484/25251)
#1: Counting objects:  94% (23736/25251)
#1: Counting objects:  95% (23989/25251)
#1: Counting objects:  96% (24241/25251)
#1: Counting objects:  97% (24494/25251)
#1: Counting objects:  98% (24746/25251)
#1: Counting objects:  99% (24999/25251)
#1: Counting objects: 100% (25251/25251)
#1: Counting objects: 100% (25251/25251), done.
#1: Compressing objects:   0% (1/2328)
#1: Compressing objects:   1% (24/2328)
#1: Compressing objects:   2% (47/2328)
#1: Compressing objects:   3% (70/2328)
#1: Compressing objects:   4% (94/2328)
#1: Compressing objects:   5% (117/2328)
#1: Compressing objects:   6% (140/2328)
#1: Compressing objects:   7% (163/2328)
#1: Compressing objects:   8% (187/2328)
#1: Compressing objects:   9% (210/2328)
#1: Compressing objects:  10% (233/2328)
#1: Compressing objects:  11% (257/2328)
#1: Compressing objects:  12% (280/2328)
#1: Compressing objects:  13% (303/2328)
#1: Compressing objects:  14% (326/2328)
#1: Compressing objects:  15% (350/2328)
#1: Compressing objects:  16% (373/2328)
#1: Compressing objects:  17% (396/2328)
#1: Compressing objects:  18% (420/2328)
#1: Compressing objects:  19% (443/2328)
#1: Compressing objects:  20% (466/2328)
#1: Compressing objects:  21% (489/2328)
#1: Compressing objects:  22% (513/2328)
#1: Compressing objects:  23% (536/2328)
#1: Compressing objects:  24% (559/2328)
#1: Compressing objects:  25% (582/2328)
#1: Compressing objects:  26% (606/2328)
#1: Compressing objects:  27% (629/2328)
#1: Compressing objects:  28% (652/2328)
#1: Compressing objects:  29% (676/2328)
#1: Compressing objects:  30% (699/2328)
#1: Compressing objects:  31% (722/2328)
#1: Compressing objects:  32% (745/2328)
#1: Compressing objects:  33% (769/2328)
#1: Compressing objects:  34% (792/2328)
#1: Compressing objects:  35% (815/2328)
#1: Compressing objects:  36% (839/2328)
#1: Compressing objects:  37% (862/2328)
#1: Compressing objects:  38% (885/2328)
#1: Compressing objects:  39% (908/2328)
#1: Compressing objects:  40% (932/2328)
#1: Compressing objects:  41% (955/2328)
#1: Compressing objects:  42% (978/2328)
#1: Compressing objects:  43% (1002/2328)
#1: Compressing objects:  44% (1025/2328)
#1: Compressing objects:  45% (1048/2328)
#1: Compressing objects:  46% (1071/2328)
#1: Compressing objects:  47% (1095/2328)
#1: Compressing objects:  48% (1118/2328)
#1: Compressing objects:  49% (1141/2328)
#1: Compressing objects:  50% (1164/2328)
#1: Compressing objects:  51% (1188/2328)
#1: Compressing objects:  52% (1211/2328)
#1: Compressing objects:  53% (1234/2328)
#1: Compressing objects:  54% (1258/2328)
#1: Compressing objects:  55% (1281/2328)
#1: Compressing objects:  56% (1304/2328)
#1: Compressing objects:  57% (1327/2328)
#1: Compressing objects:  58% (1351/2328)
#1: Compressing objects:  59% (1374/2328)
#1: Compressing objects:  60% (1397/2328)
#1: Compressing objects:  61% (1421/2328)
#1: Compressing objects:  62% (1444/2328)
#1: Compressing objects:  63% (1467/2328)
#1: Compressing objects:  64% (1490/2328)
#1: Compressing objects:  65% (1514/2328)
#1: Compressing objects:  66% (1537/2328)
#1: Compressing objects:  67% (1560/2328)
#1: Compressing objects:  68% (1584/2328)
#1: Compressing objects:  69% (1607/2328)
#1: Compressing objects:  70% (1630/2328)
#1: Compressing objects:  71% (1653/2328)
#1: Compressing objects:  72% (1677/2328)
#1: Compressing objects:  73% (1700/2328)
#1: Compressing objects:  74% (1723/2328)
#1: Compressing objects:  75% (1746/2328)
#1: Compressing objects:  76% (1770/2328)
#1: Compressing objects:  77% (1793/2328)
#1: Compressing objects:  78% (1816/2328)
#1: Compressing objects:  79% (1840/2328)
#1: Compressing objects:  80% (1863/2328)
#1: Compressing objects:  81% (1886/2328)
#1: Compressing objects:  82% (1909/2328)
#1: Compressing objects:  83% (1933/2328)
#1: Compressing objects:  84% (1956/2328)
#1: Compressing objects:  85% (1979/2328)
#1: Compressing objects:  86% (2003/2328)
#1: Compressing objects:  87% (2026/2328)
#1: Compressing objects:  88% (2049/2328)
#1: Compressing objects:  89% (2072/2328)
#1: Compressing objects:  90% (2096/2328)
#1: Compressing objects:  91% (2119/2328)
#1: Compressing objects:  92% (2142/2328)
#1: Compressing objects:  93% (2166/2328)
#1: Compressing objects:  94% (2189/2328)
#1: Compressing objects:  95% (2212/2328)
#1: Compressing objects:  96% (2235/2328)
#1: Compressing objects:  97% (2259/2328)
#1: Compressing objects:  98% (2282/2328)
#1: Compressing objects:  99% (2305/2328)
#1: Compressing objects: 100% (2328/2328)
#1: Compressing objects: 100% (2328/2328), done.
#1: Total 104614 (delta 23519), reused 23599 (delta 22898), pack-reused 79363
#1: 📦 Cloned repository! [16.75554426s]
#2: Deleting filesystem...
#2: 🏗️ Building image...
#2: Retrieving image manifest codercom/oss-dogfood:latest
#2: Retrieving image codercom/oss-dogfood:latest from registry index.docker.io
#2: Built cross stage deps: map[]
#2: Retrieving image manifest codercom/oss-dogfood:latest
#2: Returning cached image manifest
#2: Executing 0 build triggers
#2: Building stage 'codercom/oss-dogfood:latest' [idx: '0', base-idx: '-1']
#2: Unpacking rootfs as cmd RUN AZUREDNSAUTODETECTION="true" DOCKERDASHCOMPOSEVERSION="latest" DOCKERDEFAULTADDRESSPOOL="" INSTALLDOCKERBUILDX="true" INSTALLDOCKERCOMPOSESWITCH="true" MOBY="false" MOBYBUILDXVERSION="latest" VERSION="latest" _CONTAINER_USER="coder" _REMOTE_USER="coder" ./install.sh requires it.
#2: USER root
#2: Cmd: USER
#2: WORKDIR /.envbuilder/features/docker-in-docker-f26237e4
#2: Cmd: workdir
#2: Changed working directory to /.envbuilder/features/docker-in-docker-f26237e4
#2: No files changed in this command, skipping snapshotting.
#2: ENV DOCKER_BUILDKIT=1
#2: RUN AZUREDNSAUTODETECTION="true" DOCKERDASHCOMPOSEVERSION="latest" DOCKERDEFAULTADDRESSPOOL="" INSTALLDOCKERBUILDX="true" INSTALLDOCKERCOMPOSESWITCH="true" MOBY="false" MOBYBUILDXVERSION="latest" VERSION="latest" _CONTAINER_USER="coder" _REMOTE_USER="coder" ./install.sh
#2: Cmd: /bin/bash
#2: Args: [-c AZUREDNSAUTODETECTION="true" DOCKERDASHCOMPOSEVERSION="latest" DOCKERDEFAULTADDRESSPOOL="" INSTALLDOCKERBUILDX="true" INSTALLDOCKERCOMPOSESWITCH="true" MOBY="false" MOBYBUILDXVERSION="latest" VERSION="latest" _CONTAINER_USER="coder" _REMOTE_USER="coder" ./install.sh]
#2: Util.Lookup returned: &{Uid:0 Gid:0 Username:root Name:root HomeDir:/root}
#2: Performing slow lookup of group ids for root
#2: Running: [/bin/bash -c AZUREDNSAUTODETECTION="true" DOCKERDASHCOMPOSEVERSION="latest" DOCKERDEFAULTADDRESSPOOL="" INSTALLDOCKERBUILDX="true" INSTALLDOCKERCOMPOSESWITCH="true" MOBY="false" MOBYBUILDXVERSION="latest" VERSION="latest" _CONTAINER_USER="coder" _REMOTE_USER="coder" ./install.sh]
Distro codename  'jammy'  matched filter  'bookworm buster bullseye bionic focal hirsute impish jammy'
find: '/var/lib/apt/lists/*': No such file or directory
Running apt-get update...
Get:1 https://download.docker.com/linux/ubuntu jammy InRelease [48.8 kB]
Get:2 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Get:3 https://dl.yarnpkg.com/debian stable InRelease [17.1 kB]
Get:4 https://apt.releases.hashicorp.com jammy InRelease [12.9 kB]
Get:5 https://deb.nodesource.com/node_18.x nodistro InRelease [12.1 kB]
Get:6 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages [37.3 kB]
Get:7 https://dl.google.com/linux/chrome/deb stable InRelease [1825 B]
Get:8 https://dl.yarnpkg.com/debian stable/main amd64 Packages [11.1 kB]
Get:9 https://dl.yarnpkg.com/debian stable/main all Packages [11.1 kB]
Get:10 https://dl.google.com/linux/chrome/deb stable/main amd64 Packages [1081 B]
Get:11 https://ppa.launchpadcontent.net/ansible/ansible/ubuntu jammy InRelease [18.0 kB]
Get:12 https://packages.microsoft.com/repos/edge stable InRelease [3590 B]
Get:13 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages [1756 kB]
Get:14 http://archive.ubuntu.com/ubuntu jammy InRelease [270 kB]
Get:15 https://ppa.launchpadcontent.net/fish-shell/release-3/ubuntu jammy InRelease [17.6 kB]
Get:16 https://packages.microsoft.com/repos/edge stable/main amd64 Packages [7911 B]
Get:17 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages [8378 B]
Get:18 https://ppa.launchpadcontent.net/git-core/ppa/ubuntu jammy InRelease [23.8 kB]
Get:19 https://ppa.launchpadcontent.net/maveonair/helix-editor/ubuntu jammy InRelease [18.0 kB]
Get:20 https://ppa.launchpadcontent.net/neovim-ppa/stable/ubuntu jammy InRelease [24.3 kB]
Get:21 http://security.ubuntu.com/ubuntu jammy-security/multiverse amd64 Packages [44.7 kB]
Get:22 http://security.ubuntu.com/ubuntu jammy-security/universe amd64 Packages [1077 kB]
Get:23 https://ppa.launchpadcontent.net/ansible/ansible/ubuntu jammy/main amd64 Packages [1075 B]
Get:24 https://ppa.launchpadcontent.net/fish-shell/release-3/ubuntu jammy/main amd64 Packages [510 B]
Get:25 https://ppa.launchpadcontent.net/git-core/ppa/ubuntu jammy/main amd64 Packages [2969 B]
Get:26 https://ppa.launchpadcontent.net/maveonair/helix-editor/ubuntu jammy/main amd64 Packages [418 B]
Get:27 http://security.ubuntu.com/ubuntu jammy-security/restricted amd64 Packages [2265 kB]
Get:28 https://ppa.launchpadcontent.net/neovim-ppa/stable/ubuntu jammy/main amd64 Packages [7023 B]
Get:29 https://apt.releases.hashicorp.com jammy/main amd64 Packages [157 kB]
Get:30 https://packages.cloud.google.com/apt cloud-sdk InRelease [6361 B]
Get:31 https://packages.cloud.google.com/apt cloud-sdk/main amd64 Packages [631 kB]
Get:32 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
Get:33 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [109 kB]
Get:34 http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages [1792 kB]
Get:35 http://archive.ubuntu.com/ubuntu jammy/restricted amd64 Packages [164 kB]
Get:36 http://archive.ubuntu.com/ubuntu jammy/multiverse amd64 Packages [266 kB]
Get:37 http://archive.ubuntu.com/ubuntu jammy/universe amd64 Packages [17.5 MB]
Get:38 https://apt.postgresql.org/pub/repos/apt jammy-pgdg InRelease [123 kB]
Get:39 https://apt.postgresql.org/pub/repos/apt jammy-pgdg/main amd64 Packages [501 kB]
Get:40 http://archive.ubuntu.com/ubuntu jammy-updates/restricted amd64 Packages [2339 kB]
Get:41 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [2037 kB]
Get:42 http://archive.ubuntu.com/ubuntu jammy-updates/multiverse amd64 Packages [51.1 kB]
Get:43 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [1371 kB]
Get:44 http://archive.ubuntu.com/ubuntu jammy-backports/main amd64 Packages [81.0 kB]
Get:45 http://archive.ubuntu.com/ubuntu jammy-backports/universe amd64 Packages [31.9 kB]
Fetched 33.1 MB in 3s (9974 kB/s)
Reading package lists...
W: Target Packages (main/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:37 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (main/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:37 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (restricted/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:37 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (restricted/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:37 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (universe/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:39 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (universe/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:39 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (main/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:37 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (main/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:37 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (restricted/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:37 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (restricted/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:37 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (universe/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:39 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (universe/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:39 and /etc/apt/sources.list.d/security.list:1
Reading package lists...
Building dependency tree...
Reading state information...
jq is already the newest version (1.6-2.1ubuntu3).
wget is already the newest version (1.21.2-2ubuntu1).
ca-certificates is already the newest version (20230311ubuntu0.22.04.1).
curl is already the newest version (7.81.0-1ubuntu1.16).
dirmngr is already the newest version (2.2.27-3ubuntu2.1).
dirmngr set to manually installed.
iptables is already the newest version (1.8.7-1ubuntu5.2).
iptables set to manually installed.
apt-transport-https is already the newest version (2.4.12).
The following NEW packages will be installed:
  gnupg2 pigz
0 upgraded, 2 newly installed, 0 to remove and 7 not upgraded.
Need to get 69.1 kB of archives.
After this operation, 214 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu jammy/universe amd64 pigz amd64 2.6-1 [63.6 kB]
Get:2 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 gnupg2 all 2.2.27-3ubuntu2.1 [5548 B]
W: Target Packages (main/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:37 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (main/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:37 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (restricted/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:37 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (restricted/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:37 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (universe/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:39 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (universe/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:39 and /etc/apt/sources.list.d/security.list:1
Fetched 69.1 kB in 1s (102 kB/s)
Selecting previously unselected package pigz.
(Reading database ... 130397 files and directories currently installed.)
Preparing to unpack .../archives/pigz_2.6-1_amd64.deb ...
Unpacking pigz (2.6-1) ...
Selecting previously unselected package gnupg2.
Preparing to unpack .../gnupg2_2.2.27-3ubuntu2.1_all.deb ...
Unpacking gnupg2 (2.2.27-3ubuntu2.1) ...
Setting up gnupg2 (2.2.27-3ubuntu2.1) ...
Setting up pigz (2.6-1) ...
Processing triggers for man-db (2.10.2-1) ...
W: Target Packages (main/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:37 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (main/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:37 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (restricted/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:37 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (restricted/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:37 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (universe/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:39 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (universe/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:39 and /etc/apt/sources.list.d/security.list:1
update-alternatives: using /usr/sbin/iptables-legacy to provide /usr/sbin/iptables (iptables) in manual mode
update-alternatives: using /usr/sbin/ip6tables-legacy to provide /usr/sbin/ip6tables (ip6tables) in manual mode
Hit:1 https://download.docker.com/linux/ubuntu jammy InRelease
Hit:2 https://apt.releases.hashicorp.com jammy InRelease
Hit:3 http://security.ubuntu.com/ubuntu jammy-security InRelease
Hit:4 http://archive.ubuntu.com/ubuntu jammy InRelease
Hit:5 https://deb.nodesource.com/node_18.x nodistro InRelease
Hit:6 https://dl.yarnpkg.com/debian stable InRelease
Hit:7 https://dl.google.com/linux/chrome/deb stable InRelease
Get:8 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
Get:9 https://packages.microsoft.com/repos/edge stable InRelease [3590 B]
Hit:10 https://apt.postgresql.org/pub/repos/apt jammy-pgdg InRelease
Hit:11 https://ppa.launchpadcontent.net/ansible/ansible/ubuntu jammy InRelease
Hit:12 https://ppa.launchpadcontent.net/fish-shell/release-3/ubuntu jammy InRelease
Hit:13 https://packages.cloud.google.com/apt cloud-sdk InRelease
Hit:14 https://ppa.launchpadcontent.net/git-core/ppa/ubuntu jammy InRelease
Hit:15 http://archive.ubuntu.com/ubuntu jammy-backports InRelease
Hit:16 https://ppa.launchpadcontent.net/maveonair/helix-editor/ubuntu jammy InRelease
Hit:17 https://ppa.launchpadcontent.net/neovim-ppa/stable/ubuntu jammy InRelease
Fetched 122 kB in 1s (168 kB/s)
Reading package lists...
W: Target Packages (main/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:37 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (main/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:37 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (restricted/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:37 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (restricted/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:37 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (universe/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:39 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (universe/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:39 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (main/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:37 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (main/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:37 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (restricted/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:37 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (restricted/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:37 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (universe/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:39 and /etc/apt/sources.list.d/security.list:1
W: Target Packages (universe/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:39 and /etc/apt/sources.list.d/security.list:1
Docker / Moby CLI and Engine already installed.
Finished installing docker / moby!
compose_version=2.27.0
(*) Installing docker-compose 2.27.0...
/usr/local/bin/docker-compose: OK
(*) Installing compose-switch...
compose_switch_version=1.0.5
update-alternatives: using /usr/local/bin/compose-switch to provide /usr/local/bin/docker-compose (docker-compose) in auto mode
docker-init doesn't exist, adding...
buildx_version=0.14.0
(*) Installing buildx 0.14.0...
--2024-05-05 09:56:22--  https://github.com/docker/buildx/releases/download/v0.14.0/buildx-v0.14.0.linux-amd64
Resolving github.com (github.com)... 140.82.121.3
Connecting to github.com (github.com)|140.82.121.3|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://objects.githubusercontent.com/github-production-release-asset-2e65be/177210627/ad6c9874-6253-441b-b46d-6e68bc7831b4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAVCODYLSA53PQK4ZA%2F20240505%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240505T095622Z&X-Amz-Expires=300&X-Amz-Signature=3360252c24418f35f2253f8167ef7aa70b1f3159d722514839be07ceab81fa0e&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=177210627&response-content-disposition=attachment%3B%20filename%3Dbuildx-v0.14.0.linux-amd64&response-content-type=application%2Foctet-stream [following]
--2024-05-05 09:56:22--  https://objects.githubusercontent.com/github-production-release-asset-2e65be/177210627/ad6c9874-6253-441b-b46d-6e68bc7831b4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAVCODYLSA53PQK4ZA%2F20240505%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240505T095622Z&X-Amz-Expires=300&X-Amz-Signature=3360252c24418f35f2253f8167ef7aa70b1f3159d722514839be07ceab81fa0e&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=177210627&response-content-disposition=attachment%3B%20filename%3Dbuildx-v0.14.0.linux-amd64&response-content-type=application%2Foctet-stream
Resolving objects.githubusercontent.com (objects.githubusercontent.com)... 185.199.109.133, 185.199.111.133, 185.199.108.133, ...
Connecting to objects.githubusercontent.com (objects.githubusercontent.com)|185.199.109.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 56299520 (54M) [application/octet-stream]
Saving to: 'buildx-v0.14.0.linux-amd64'

     0K .......... .......... .......... .......... ..........  0% 1.32M 41s
    50K .......... .......... .......... .......... ..........  0% 9.18M 23s
   100K .......... .......... .......... .......... ..........  0% 3.72M 20s
   150K .......... .......... .......... .......... ..........  0% 11.9M 16s
   200K .......... .......... .......... .......... ..........  0% 14.8M 14s
   250K .......... .......... .......... .......... ..........  0% 18.4M 12s
   300K .......... .......... .......... .......... ..........  0% 5.04M 12s
   350K .......... .......... .......... .......... ..........  0% 25.2M 11s
   400K .......... .......... .......... .......... ..........  0% 27.4M 10s
   450K .......... .......... .......... .......... ..........  0% 21.1M 9s
   500K .......... .......... .......
   550K .......... .......... .......... .......... ..........  1% 42.4M 8s
   600K .......... .......... .......... .......... ..........  1% 6.00M 8s
   650K .......... .......... .......... .......... ..........  1% 51.5M 7s
   700K .......... .......... .......... .......... ..........  1% 42.6M 7s
   750K .......... .......... .......... .......... ..........  1% 30.5M 6s
   800K .......... .......... .......... .......... ..........  1% 55.8M 6s
   850K .......... .......... .......
   900K .......... .......... .......... .......... ..........  1% 40.5M 6s
   950K .......... .......... .......... .......... ..........  1% 92.5M 5s
  1000K .......... .......... .......... .......... ..........  1% 49.4M 5s
  1050K .......... .......... .......... .......... ..........  2% 75.2M 5s
  1100K .......... .......... .......... .......... ..........  2% 33.7M 5s
  1150K .......... .......... .......... .......... ..........  2%  118M 5s
  1200K .......... .......... .......... .......... ..........  2% 73.9M 4s
  1250K .......... .......... .......... .......... ..........  2% 7.16M 5s
  1300K .......... .......... .......... .......... ..........  2% 67.0M 4s
  1350K .......... .......... .......... .......... ..........  2%  123M 4s
  1400K .......... .......... .......... .......... ..........  2% 53.3M 4s
  1450K .......... .......... .......... .......... ..........  2%  101M 4s
  1500K .......... .......... .......... .......... ..........  2% 85.8M 4s
  1550K .......... .......... .......... .......... ..........  2% 54.1M 4s
  1600K .......... .......... .......... .......... ..........  3%  103M 4s
  1650K .......... .......... .......... .......... ..........  3%  102M 4s
  1700K .......... .......... .......... .......... ..........  3% 78.6M 4s
  1750K .......... .......... .......... .......... ..........  3% 99.8M 3s
  1800K .......... .......... .......... .......... ..........  3% 70.4M 3s
  1850K .......... .......... .......... .......... ..........  3% 67.4M 3s
  1900K .......... .......... .......... .......... ..........  3% 98.9M 3s
  1950K .......... .......... .......... .......... ..........  3% 97.7M 3s
  2000K .......... .......... .......... .......... ..........  3%  179M 3s
  2050K .......... .......... .......... .......... ..........  3%  101M 3s
  2100K .......... .......... .......... .......... ..........  3% 95.6M 3s
  2150K .......... .......... .......... .......... ..........  4%  179M 3s
  2200K .......... .......... .......... .......... ..........  4% 58.1M 3s
  2250K .......... .......... .......... .......... ..........  4%  161M 3s
  2300K .......... .......... .......... .......... ..........  4% 69.8M 3s
  2350K .......... .......... .......... .......... ..........  4%  181M 3s
  2400K .......... .......... .......... .......... ..........  4%  100M 3s
  2450K .......... .......... .......... .......... ..........  4% 51.1M 3s
  2500K .......... .......... .......... .......... ..........  4%  492M 3s
  2550K .......... .......... .......... .......... ..........  4%  462M 2s
  2600K .......... .......... .......... .......... ..........  4% 9.95M 3s
  2650K .......... .......... .......... .......... ..........  4% 59.2M 3s
  2700K .......... .......... .......... .......... ..........  5% 63.9M 2s
  2750K .......... .......... .......... .......... ..........  5%  178M 2s
  2800K .......... .......... .......... .......... ..........  5% 99.9M 2s
  2850K .......... .......... .......... .......... ..........  5% 98.1M 2s
  2900K .......... .......... .......... .......... ..........  5%  172M 2s
  2950K .......... .......... .......... .......... ..........  5%  101M 2s
  3000K .......... .......... .......... .......... ..........  5% 96.8M 2s
  3050K .......... .......... .......... .......... ..........  5%  155M 2s
  3100K .......... .......... .......... .......... ..........  5% 98.4M 2s
  3150K .......... .......... .......... .......... ..........  5% 97.1M 2s
  3200K .......... .......... .......... .......... ..........  5%  102M 2s
  3250K .......... .......... .......... .......... ..........  6%  174M 2s
  3300K .......... .......... .......... .......... ..........  6% 2.38M 2s
  3350K .......... .......... .......... .......... ..........  6%  194M 2s
  3400K .......... .......... .......... .......... ..........  6%  715M 2s
  3450K .......... .......... .......... .......... ..........  6%  425M 2s
  3500K .......... .......... .......... .......... ..........  6% 90.3M 2s
  3550K .......... .......... .......... .......... ..........  6% 72.6M 2s
  3600K .......... .......... .......... .......... ..........  6%  649M 2s
  3650K .......... .......... .......... .......... ..........  6%  661M 2s
  3700K .......... .......... .......... .......... ..........  6% 83.0M 2s
  3750K .......... .......... .......... .......... ..........  6%  107M 2s
  3800K .......... .......... .......... .......... ..........  7%  701M 2s
  3850K .......... .......... .......... .......... ..........  7%  737M 2s
  3900K .......... .......... .......... .......... ..........  7%  610M 2s
  3950K .......... .......... .......... .......... ..........  7% 93.2M 2s
  4000K .......... .......... .......... .......... ..........  7%  104M 2s
  4050K .......... .......... .......... .......... ..........  7%  177M 2s
  4100K .......... .......... .......... .......... ..........  7% 95.4M 2s
  4150K .......... .......... .......... .......... ..........  7%  727M 2s
  4200K .......... .......... .......... .......... ..........  7%  750M 2s
  4250K .......... .......... .......... .......... ..........  7%  732M 2s
  4300K .......... .......... .......... .......... ..........  7%  166M 2s
  4350K .......... .......... .......... .......... ..........  8%  105M 2s
  4400K .......... .......... .......... .......... ..........  8% 39.6M 2s
  4450K .......... .......... .......... .......... ..........  8%  176M 2s
  4500K .......... .......... .......... .......... ..........  8%  677M 2s
  4550K .......... .......... .......... .......... ..........  8%  767M 2s
  4600K .......... .......... .......... .......... ..........  8%  747M 2s
  4650K .......... .......... .......... .......... ..........  8% 69.8M 2s
  4700K .......... .......... .......... .......... ..........  8% 78.7M 2s
  4750K .......... .......... .......... .......... ..........  8%  181M 2s
  4800K .......... .......... .......... .......... ..........  8%  744M 2s
  4850K .......... .......... .......... .......... ..........  8%  743M 2s
  4900K .......... .......... .......... .......... ..........  9%  636M 2s
  4950K .......... .......... .......... .......... ..........  9% 36.3M 2s
  5000K .......... .......... .......... .......... ..........  9%  342M 2s
  5050K .......... .......... .......... .......... ..........  9%  582M 2s
  5100K .......... .......... .......... .......... ..........  9%  140M 2s
  5150K .......... .......... .......... .......... ..........  9%  118M 2s
  5200K .......... .......... .......... .......... ..........  9%  147M 2s
  5250K .......... .......... .......... .......... ..........  9%  731M 2s
  5300K .......... .......... .......... .......... ..........  9%  665M 2s
  5350K .......... .......... .......... .......... ..........  9%  750M 2s
  5400K .......... .......... .......... .......... ..........  9%  707M 2s
  5450K .......... .......... .......... .......... .......... 10%  745M 2s
  5500K .......... .......... .......... .......... .......... 10%  624M 1s
  5550K .......... .......... .......... .......... .......... 10%  725M 1s
  5600K .......... .......... .......... .......... .......... 10%  720M 1s
  5650K .......... .......... .......... .......... .......... 10%  771M 1s
  5700K .......... .......... .......... .......... .......... 10%  674M 1s
  5750K .......... .......... .......... .......... .......... 10%  761M 1s
  5800K .......... .......... .......... .......... .......... 10%  745M 1s
  5850K .......... .......... .......... .......... .......... 10% 13.5M 1s
  5900K .......... .......... .......... .......... .......... 10% 95.0M 1s
  5950K .......... .......... .......... .......... .......... 10%  177M 1s
  6000K .......... .......... .......... .......... .......... 11%  720M 1s
  6050K .......... .......... .......... .......... .......... 11%  101M 1s
  6100K .......... .......... .......... .......... .......... 11%  623M 1s
  6150K .......... .......... .......... .......... .......... 11%  736M 1s
  6200K .......... .......... .......... .......... .......... 11%  728M 1s
  6250K .......... .......... .......... .......... .......... 11% 96.3M 1s
  6300K .......... .......... .......... .......... .......... 11% 68.4M 1s
  6350K .......... .......... .......... .......... .......... 11%  180M 1s
  6400K .......... .......... .......... .......... .......... 11%  168M 1s
  6450K .......... .......... .......... .......... .......... 11%  725M 1s
  6500K .......... .......... .......... .......... .......... 11%  335M 1s
  6550K .......... .......... .......... .......... .......... 12%  165M 1s
  6600K .......... .......... .......... .......... .......... 12%  104M 1s
  6650K .......... .......... .......... .......... .......... 12%  127M 1s
  6700K .......... .......... .......... .......... .......... 12%  614M 1s
  6750K .......... .......... .......... .......... .......... 12%  692M 1s
  6800K .......... .......... .......... .......... .......... 12%  736M 1s
  6850K .......... .......... .......... .......... .......... 12%  744M 1s
  6900K .......... .......... .......... .......... .......... 12%  657M 1s
  6950K .......... .......... .......... .......... .......... 12%  754M 1s
  7000K .......... .......... .......... .......... .......... 12%  745M 1s
  7050K .......... .......... .......... .......... .......... 12%  749M 1s
  7100K .......... .......... .......... .......... .......... 13%  611M 1s
  7150K .......... .......... .......... .......... .......... 13%  735M 1s
  7200K .......... .......... .......... .......... .......... 13% 11.1M 1s
  7250K .......... .......... .......... .......... .......... 13%  118M 1s
  7300K .......... .......... .......... .......... .......... 13%  116M 1s
  7350K .......... .......... .......... .......... .......... 13% 90.7M 1s
  7400K .......... .......... .......... .......... .......... 13% 59.0M 1s
  7450K .......... .......... .......... .......... .......... 13%  117M 1s
  7500K .......... .......... .......... .......... .......... 13% 88.2M 1s
  7550K .......... .......... .......... .......... .......... 13%  105M 1s
  7600K .......... .......... .......... .......... .......... 13%  118M 1s
  7650K .......... .......... .......... .......... .......... 14%  126M 1s
  7700K .......... .......... .......... .......... .......... 14% 76.0M 1s
  7750K .......... .......... .......... .......... .......... 14%  178M 1s
  7800K .......... .......... .......... .......... .......... 14% 2.56M 1s
  7850K .......... .......... .......... .......... .......... 14% 36.7M 1s
  7900K .......... .......... .......... .......... .......... 14% 44.2M 1s
  7950K .......... .......... .......... .......... .......... 14%  734M 1s
  8000K .......... .......... .......... .......... .......... 14%  240M 1s
  8050K .......... .......... .......... .......... .......... 14% 36.5M 1s
  8100K .......... .......... .......... .......... .......... 14% 3.35M 1s
  8150K .......... .......... .......... .......... .......... 14%  490M 1s
  8200K .......... .......... .......... .......... .......... 15%  172M 1s
  8250K .......... .......... .......... .......... .......... 15% 45.3M 1s
  8300K .......... .......... .......... .......... .......... 15% 27.5M 1s
  8350K .......... .......... .......... .......... .......... 15% 28.4M 1s
  8400K .......... .......... .......... .......... .......... 15% 3.62M 1s
  8450K .......... .......... .......... .......... .......... 15%  119M 1s
  8500K .......... .......... .......... .......... .......... 15%  115M 1s
  8550K .......... .......... .......... .......... .......... 15%  117M 1s
  8600K .......... .......... .......... .......... .......... 15% 53.5M 1s
  8650K .......... .......... .......... .......... .......... 15%  118M 1s
  8700K .......... .......... .......... .......... .......... 15% 83.1M 1s
  8750K .......... .......... .......... .......... .......... 16% 87.9M 1s
  8800K .......... .......... .......... .......... .......... 16%  176M 1s
  8850K .......... .......... .......... .......... .......... 16% 96.8M 1s
  8900K .......... .......... .......... .......... .......... 16% 99.8M 1s
  8950K .......... .......... .......... .......... .......... 16%  167M 1s
  9000K .......... .......... .......... .......... .......... 16% 97.5M 1s
  9050K .......... .......... .......... .......... .......... 16%  101M 1s
  9100K .......... .......... .......... .......... .......... 16% 97.6M 1s
  9150K .......... .......... .......... .......... .......... 16% 98.9M 1s
  9200K .......... .......... .......... .......... .......... 16%  176M 1s
  9250K .......... .......... .......... .......... .......... 16%  101M 1s
  9300K .......... .......... .......... .......... .......... 17% 95.8M 1s
  9350K .......... .......... .......... .......... .......... 17%  180M 1s
  9400K .......... .......... .......... .......... .......... 17%  101M 1s
  9450K .......... .......... .......... .......... .......... 17% 96.9M 1s
  9500K .......... .......... .......... .......... .......... 17% 97.9M 1s
  9550K .......... .......... .......... .......... .......... 17% 96.4M 1s
  9600K .......... .......... .......... .......... .......... 17%  180M 1s
  9650K .......... .......... .......... .......... .......... 17% 91.8M 1s
  9700K .......... .......... .......... .......... .......... 17% 99.8M 1s
  9750K .......... .......... .......... .......... .......... 17% 95.8M 1s
  9800K .......... .......... .......... .......... .......... 17%  184M 1s
  9850K .......... .......... .......... .......... .......... 18% 99.9M 1s
  9900K .......... .......... .......... .......... .......... 18% 94.7M 1s
  9950K .......... .......... .......... .......... .......... 18%  101M 1s
 10000K .......... .......... .......... .......... .......... 18% 11.6M 1s
 10050K .......... .......... .......... .......... .......... 18%  133M 1s
 10100K .......... .......... .......... .......... .......... 18%  177M 1s
 10150K .......... .......... .......... .......... .......... 18%  101M 1s
 10200K .......... .......... .......... .......... .......... 18% 49.4M 1s
 10250K .......... .......... .......... .......... .......... 18% 92.6M 1s
 10300K .......... .......... .......... .......... .......... 18% 82.5M 1s
 10350K .......... .......... .......... .......... .......... 18%  106M 1s
 10400K .......... .......... .......... .......... .......... 19% 97.1M 1s
 10450K .......... .......... .......... .......... .......... 19%  175M 1s
 10500K .......... .......... .......... .......... .......... 19%  100M 1s
 10550K .......... .......... .......... .......... .......... 19% 96.5M 1s
 10600K .......... .......... .......... .......... .......... 19%  178M 1s
 10650K .......... .......... .......... .......... .......... 19% 83.3M 1s
 10700K .......... .......... .......... .......... .......... 19% 99.4M 1s
 10750K .......... .......... .......... .......... .......... 19% 95.3M 1s
 10800K .......... .......... .......... .......... .......... 19% 99.2M 1s
 10850K .......... .......... .......... .......... .......... 19% 98.0M 1s
 10900K .......... .......... .......... .......... .......... 19%  170M 1s
 10950K .......... .......... .......... .......... .......... 20% 64.5M 1s
 11000K .......... .......... .......... .......... .......... 20%  103M 1s
 11050K .......... .......... .......... .......... .......... 20%  124M 1s
 11100K .......... .......... .......... .......... .......... 20% 99.1M 1s
 11150K .......... .......... .......... .......... .......... 20%  100M 1s
 11200K .......... .......... .......... .......... .......... 20% 95.5M 1s
 11250K .......... .......... .......... .......... .......... 20%  182M 1s
 11300K .......... .......... .......... .......... .......... 20%  100M 1s
 11350K .......... .......... .......... .......... .......... 20% 93.8M 1s
 11400K .......... .......... .......... .......... .......... 20% 97.7M 1s
 11450K .......... .......... .......... .......... .......... 20% 82.2M 1s
 11500K .......... .......... .......... .......... .......... 21% 98.2M 1s
 11550K .......... .......... .......... .......... .......... 21%  160M 1s
 11600K .......... .......... .......... .......... .......... 21% 98.7M 1s
 11650K .......... .......... .......... .......... .......... 21% 16.3M 1s
 11700K .......... .......... .......... .......... .......... 21% 69.1M 1s
 11750K .......... .......... .......... .......... .......... 21%  178M 1s
 11800K .......... .......... .......... .......... .......... 21%  101M 1s
 11850K .......... .......... .......... .......... .......... 21% 38.6M 1s
 11900K .......... .......... .......... .......... .......... 21% 98.8M 1s
 11950K .......... .......... .......... .......... .......... 21%  119M 1s
 12000K .......... .......... .......... .......... .......... 21%  103M 1s
 12050K .......... .......... .......... .......... .......... 22% 96.2M 1s
 12100K .......... .......... .......... .......... .......... 22% 93.7M 1s
 12150K .......... .......... .......... .......... .......... 22%  101M 1s
 12200K .......... .......... .......... .......... .......... 22% 97.1M 1s
 12250K .......... .......... .......... .......... .......... 22% 97.4M 1s
 12300K .......... .......... .......... .......... .......... 22% 1.32M 1s
 12350K .......... .......... .......... .......... .......... 22%  103M 1s
 12400K .......... .......... .......... .......... .......... 22%  141M 1s
 12450K .......... .......... .......... .......... .......... 22% 83.0M 1s
 12500K .......... .......... .......... .......... .......... 22%  163M 1s
 12550K .......... .......... .......... .......... .......... 22%  111M 1s
 12600K .......... .......... .......... .......... .......... 23%  103M 1s
 12650K .......... .......... .......... .......... .......... 23%  180M 1s
 12700K .......... .......... .......... .......... .......... 23% 61.2M 1s
 12750K .......... .......... .......... .......... .......... 23%  107M 1s
 12800K .......... .......... .......... .......... .......... 23%  176M 1s
 12850K .......... .......... .......... .......... .......... 23% 93.3M 1s
 12900K .......... .......... .......... .......... .......... 23% 92.7M 1s
 12950K .......... .......... .......... .......... .......... 23%  101M 1s
 13000K .......... .......... .......... .......... .......... 23% 93.9M 1s
 13050K .......... .......... .......... .......... .......... 23%  177M 1s
 13100K .......... .......... .......... .......... .......... 23% 97.6M 1s
 13150K .......... .......... .......... .......... .......... 24%  101M 1s
 13200K .......... .......... .......... .......... .......... 24% 97.6M 1s
 13250K .......... .......... .......... .......... .......... 24% 95.3M 1s
 13300K .......... .......... .......... .......... .......... 24%  173M 1s
 13350K .......... .......... .......... .......... .......... 24% 73.6M 1s
 13400K .......... .......... .......... .......... .......... 24%  119M 1s
 13450K .......... .......... .......... .......... .......... 24% 96.5M 1s
 13500K .......... .......... .......... .......... .......... 24% 98.9M 1s
 13550K .......... .......... .......... .......... .......... 24% 96.0M 1s
 13600K .......... .......... .......... .......... .......... 24%  135M 1s
 13650K .......... .......... .......... .......... .......... 24% 98.1M 1s
 13700K .......... .......... .......... .......... .......... 25% 98.5M 1s
 13750K .......... .......... .......... .......... .......... 25% 95.3M 1s
 13800K .......... .......... .......... .......... .......... 25%  173M 1s
 13850K .......... .......... .......... .......... .......... 25% 72.4M 1s
 13900K .......... .......... .......... .......... .......... 25%  122M 1s
 13950K .......... .......... .......... .......... .......... 25% 12.7M 1s
 14000K .......... .......... .......... .......... .......... 25% 67.7M 1s
 14050K .......... .......... .......... .......... .......... 25%  102M 1s
 14100K .......... .......... .......... .......... .......... 25% 96.6M 1s
 14150K .......... .......... .......... .......... .......... 25%  177M 1s
 14200K .......... .......... .......... .......... .......... 25% 97.7M 1s
 14250K .......... .......... .......... .......... .......... 26% 93.4M 1s
 14300K .......... .......... .......... .......... .......... 26%  174M 1s
 14350K .......... .......... .......... .......... .......... 26% 93.1M 1s
 14400K .......... .......... .......... .......... .......... 26% 97.2M 1s
 14450K .......... .......... .......... .......... .......... 26%  181M 1s
 14500K .......... .......... .......... .......... .......... 26% 98.6M 1s
 14550K .......... .......... .......... .......... .......... 26% 98.5M 1s
 14600K .......... .......... .......... .......... .......... 26% 95.1M 1s
 14650K .......... .......... .......... .......... .......... 26% 87.1M 1s
 14700K .......... .......... .......... .......... .......... 26%  176M 1s
 14750K .......... .......... .......... .......... .......... 26%  100M 1s
 14800K .......... .......... .......... .......... .......... 27% 96.1M 1s
 14850K .......... .......... .......... .......... .......... 27% 96.8M 1s
 14900K .......... .......... .......... .......... .......... 27% 92.8M 1s
 14950K .......... .......... .......... .......... .......... 27%  177M 1s
 15000K .......... .......... .......... .......... .......... 27% 83.2M 1s
 15050K .......... .......... .......... .......... .......... 27%  101M 1s
 15100K .......... .......... .......... .......... .......... 27% 95.3M 1s
 15150K .......... .......... .......... .......... .......... 27%  180M 1s
 15200K .......... .......... .......... .......... .......... 27% 99.2M 1s
 15250K .......... .......... .......... .......... .......... 27% 88.6M 1s
 15300K .......... .......... .......... .......... .......... 27% 86.0M 1s
 15350K .......... .......... .......... .......... .......... 28%  175M 1s
 15400K .......... .......... .......... .......... .......... 28% 64.8M 1s
 15450K .......... .......... .......... .......... .......... 28%  183M 1s
 15500K .......... .......... .......... .......... .......... 28% 96.8M 1s
 15550K .......... .......... .......... .......... .......... 28% 34.6M 1s
 15600K .......... .......... .......... .......... .......... 28%  118M 1s
 15650K .......... .......... .......... .......... .......... 28% 16.9M 1s
 15700K .......... .......... .......... .......... .......... 28% 76.4M 1s
 15750K .......... .......... .......... .......... .......... 28% 54.1M 1s
 15800K .......... .......... .......... .......... .......... 28%  179M 1s
 15850K .......... .......... .......... .......... .......... 28%  101M 1s
 15900K .......... .......... .......... .......... .......... 29% 95.7M 1s
 15950K .......... .......... .......... .......... .......... 29%  182M 1s
 16000K .......... .......... .......... .......... .......... 29%  100M 1s
 16050K .......... .......... .......... .......... .......... 29% 91.7M 1s
 16100K .......... .......... .......... .......... .......... 29%  175M 1s
 16150K .......... .......... .......... .......... .......... 29% 97.4M 1s
 16200K .......... .......... .......... .......... .......... 29% 87.9M 1s
 16250K .......... .......... .......... .......... .......... 29% 96.0M 1s
 16300K .......... .......... .......... .......... .......... 29% 93.6M 1s
 16350K .......... .......... .......... .......... .......... 29%  102M 1s
 16400K .......... .......... .......... .......... .......... 29%  168M 1s
 16450K .......... .......... .......... .......... .......... 30%  794K 1s
 16500K .......... .......... .......... .......... .......... 30% 77.1M 1s
 16550K .......... .......... .......... .......... .......... 30%  126M 1s
 16600K .......... .......... .......... .......... .......... 30%  114M 1s
 16650K .......... .......... .......... .......... .......... 30%  112M 1s
 16700K .......... .......... .......... .......... .......... 30% 94.8M 1s
 16750K .......... .......... .......... .......... .......... 30% 86.6M 1s
 16800K .......... .......... .......... .......... .......... 30% 96.7M 1s
 16850K .......... .......... .......... .......... .......... 30% 95.6M 1s
 16900K .......... .......... .......... .......... .......... 30% 72.4M 1s
 16950K .......... .......... .......... .......... .......... 30%  153M 1s
 17000K .......... .......... .......... .......... .......... 31% 92.1M 1s
 17050K .......... .......... .......... .......... .......... 31% 97.0M 1s
 17100K .......... .......... .......... .......... .......... 31% 91.0M 1s
 17150K .......... .......... .......... .......... .......... 31%  101M 1s
 17200K .......... .......... .......... .......... .......... 31%  182M 1s
 17250K .......... .......... .......... .......... .......... 31% 95.9M 1s
 17300K .......... .......... .......... .......... .......... 31% 99.6M 1s
 17350K .......... .......... .......... .......... .......... 31%  168M 1s
 17400K .......... .......... .......... .......... .......... 31% 97.8M 1s
 17450K .......... .......... .......... .......... .......... 31% 98.1M 1s
 17500K .......... .......... .......... .......... .......... 31% 98.4M 1s
 17550K .......... .......... .......... .......... .......... 32% 87.0M 1s
 17600K .......... .......... .......... .......... .......... 32%  182M 1s
 17650K .......... .......... .......... .......... .......... 32%  101M 1s
 17700K .......... .......... .......... .......... .......... 32%  177M 1s
 17750K .......... .......... .......... .......... .......... 32% 96.6M 1s
 17800K .......... .......... .......... .......... .......... 32%  100M 1s
 17850K .......... .......... .......... .......... .......... 32% 96.3M 1s
 17900K .......... .......... .......... .......... .......... 32% 86.6M 1s
 17950K .......... .......... .......... .......... .......... 32%  107M 1s
 18000K .......... .......... .......... .......... .......... 32% 93.1M 1s
 18050K .......... .......... .......... .......... .......... 32% 40.5M 1s
 18100K .......... .......... .......... .......... .......... 33% 19.6M 1s
 18150K .......... .......... .......... .......... .......... 33% 51.9M 1s
 18200K .......... .......... .......... .......... .......... 33%  100M 1s
 18250K .......... .......... .......... .......... .......... 33% 82.2M 1s
 18300K .......... .......... .......... .......... .......... 33%  102M 1s
 18350K .......... .......... .......... .......... .......... 33% 69.0M 1s
 18400K .......... .......... .......... .......... .......... 33% 59.1M 1s
 18450K .......... .......... .......... .......... .......... 33% 49.7M 1s
 18500K .......... .......... .......... .......... .......... 33%  165M 1s
 18550K .......... .......... .......... .......... .......... 33%  104M 1s
 18600K .......... .......... .......... .......... .......... 33% 95.9M 1s
 18650K .......... .......... .......... .......... .......... 34%  183M 1s
 18700K .......... .......... .......... .......... .......... 34% 99.0M 1s
 18750K .......... .......... .......... .......... .......... 34% 96.5M 1s
 18800K .......... .......... .......... .......... .......... 34%  101M 1s
 18850K .......... .......... .......... .......... .......... 34% 94.1M 1s
 18900K .......... .......... .......... .......... .......... 34% 74.0M 1s
 18950K .......... .......... .......... .......... .......... 34%  272M 1s
 19000K .......... .......... .......... .......... .......... 34% 90.9M 1s
 19050K .......... .......... .......... .......... .......... 34% 95.7M 1s
 19100K .......... .......... .......... .......... .......... 34% 97.2M 1s
 19150K .......... .......... .......... .......... .......... 34% 85.2M 1s
 19200K .......... .......... .......... .......... .......... 35%  191M 1s
 19250K .......... .......... .......... .......... .......... 35% 98.5M 1s
 19300K .......... .......... .......... .......... .......... 35% 98.6M 1s
 19350K .......... .......... .......... .......... .......... 35%  179M 1s
 19400K .......... .......... .......... .......... .......... 35% 63.6M 1s
 19450K .......... .......... .......... .......... .......... 35%  178M 1s
 19500K .......... .......... .......... .......... .......... 35% 98.1M 1s
 19550K .......... .......... .......... .......... .......... 35% 96.7M 1s
 19600K .......... .......... .......... .......... .......... 35% 97.9M 1s
 19650K .......... .......... .......... .......... .......... 35% 92.4M 1s
 19700K .......... .......... .......... .......... .......... 35%  101M 1s
 19750K .......... .......... .......... .......... .......... 36% 22.5M 1s
 19800K .......... .......... .......... .......... .......... 36% 45.9M 1s
 19850K .......... .......... .......... .......... .......... 36%  186M 1s
 19900K .......... .......... .......... .......... .......... 36% 92.9M 1s
 19950K .......... .......... .......... .......... .......... 36% 99.6M 1s
 20000K .......... .......... .......... .......... .......... 36% 35.8M 1s
 20050K .......... .......... .......... .......... .......... 36% 72.2M 1s
 20100K .......... .......... .......... .......... .......... 36% 87.7M 1s
 20150K .......... .......... .......... .......... .......... 36% 97.1M 1s
 20200K .......... .......... .......... .......... .......... 36%  166M 1s
 20250K .......... .......... .......... .......... .......... 36%  102M 1s
 20300K .......... .......... .......... .......... .......... 37% 98.1M 1s
 20350K .......... .......... .......... .......... .......... 37%  174M 1s
 20400K .......... .......... .......... .......... .......... 37%  101M 1s
 20450K .......... .......... .......... .......... .......... 37% 96.8M 1s
 20500K .......... .......... .......... .......... .......... 37%  101M 1s
 20550K .......... .......... .......... .......... .......... 37%  808K 1s
 20600K .......... .......... .......... .......... .......... 37% 52.7M 1s
 20650K .......... .......... .......... .......... .......... 37%  626M 1s
 20700K .......... .......... .......... .......... .......... 37% 81.1M 1s
 20750K .......... .......... .......... .......... .......... 37%  112M 1s
 20800K .......... .......... .......... .......... .......... 37%  183M 1s
 20850K .......... .......... .......... .......... .......... 38%  106M 1s
 20900K .......... .......... .......... .......... .......... 38% 94.5M 1s
 20950K .......... .......... .......... .......... .......... 38%  101M 1s
 21000K .......... .......... .......... .......... .......... 38%  182M 1s
 21050K .......... .......... .......... .......... .......... 38%  101M 1s
 21100K .......... .......... .......... .......... .......... 38% 94.3M 1s
 21150K .......... .......... .......... .......... .......... 38% 98.4M 1s
 21200K .......... .......... .......... .......... .......... 38% 82.8M 1s
 21250K .......... .......... .......... .......... .......... 38% 98.4M 1s
 21300K .......... .......... .......... .......... .......... 38%  189M 1s
 21350K .......... .......... .......... .......... .......... 38% 99.4M 1s
 21400K .......... .......... .......... .......... .......... 39% 92.2M 1s
 21450K .......... .......... .......... .......... .......... 39% 95.2M 1s
 21500K .......... .......... .......... .......... .......... 39% 86.5M 1s
 21550K .......... .......... .......... .......... .......... 39% 95.0M 1s
 21600K .......... .......... .......... .......... .......... 39%  177M 1s
 21650K .......... .......... .......... .......... .......... 39% 99.5M 1s
 21700K .......... .......... .......... .......... .......... 39% 95.0M 1s
 21750K .......... .......... .......... .......... .......... 39%  181M 1s
 21800K .......... .......... .......... .......... .......... 39% 96.3M 1s
 21850K .......... .......... .......... .......... .......... 39% 98.2M 1s
 21900K .......... .......... .......... .......... .......... 39% 58.4M 1s
 21950K .......... .......... .......... .......... .......... 40%  181M 1s
 22000K .......... .......... .......... .......... .......... 40% 99.9M 1s
 22050K .......... .......... .......... .......... .......... 40%  176M 1s
 22100K .......... .......... .......... .......... .......... 40%  100M 1s
 22150K .......... .......... .......... .......... .......... 40% 67.0M 1s
 22200K .......... .......... .......... .......... .......... 40% 32.8M 1s
 22250K .......... .......... .......... .......... .......... 40% 15.6M 1s
 22300K .......... .......... .......... .......... .......... 40% 96.1M 1s
 22350K .......... .......... .......... .......... .......... 40% 90.2M 1s
 22400K .......... .......... .......... .......... .......... 40% 92.5M 1s
 22450K .......... .......... .......... .......... .......... 40%  117M 1s
 22500K .......... .......... .......... .......... .......... 41%  115M 1s
 22550K .......... .......... .......... .......... .......... 41%  107M 1s
 22600K .......... .......... .......... .......... .......... 41%  112M 1s
 22650K .......... .......... .......... .......... .......... 41% 83.3M 1s
 22700K .......... .......... .......... .......... .......... 41% 68.4M 1s
 22750K .......... .......... .......... .......... .......... 41% 46.4M 1s
 22800K .......... .......... .......... .......... .......... 41% 98.7M 1s
 22850K .......... .......... .......... .......... .......... 41% 99.8M 1s
 22900K .......... .......... .......... .......... .......... 41%  174M 1s
 22950K .......... .......... .......... .......... .......... 41%  101M 1s
 23000K .......... .......... .......... .......... .......... 41% 96.7M 1s
 23050K .......... .......... .......... .......... .......... 42%  179M 1s
 23100K .......... .......... .......... .......... .......... 42% 90.7M 1s
 23150K .......... .......... .......... .......... .......... 42% 98.5M 1s
 23200K .......... .......... .......... .......... .......... 42%  103M 1s
 23250K .......... .......... .......... .......... .......... 42%  177M 1s
 23300K .......... .......... .......... .......... .......... 42% 95.2M 1s
 23350K .......... .......... .......... .......... .......... 42%  101M 1s
 23400K .......... .......... .......... .......... .......... 42% 97.5M 1s
 23450K .......... .......... .......... .......... .......... 42%  180M 1s
 23500K .......... .......... .......... .......... .......... 42% 86.8M 1s
 23550K .......... .......... .......... .......... .......... 42%  101M 1s
 23600K .......... .......... .......... .......... .......... 43% 96.4M 1s
 23650K .......... .......... .......... .......... .......... 43%  178M 1s
 23700K .......... .......... .......... .......... .......... 43% 99.5M 1s
 23750K .......... .......... .......... .......... .......... 43% 93.6M 1s
 23800K .......... .......... .......... .......... .......... 43% 47.5M 1s
 23850K .......... .......... .......... .......... .......... 43%  101M 1s
 23900K .......... .......... .......... .......... .......... 43% 19.4M 1s
 23950K .......... .......... .......... .......... .......... 43% 49.1M 1s
 24000K .......... .......... .......... .......... .......... 43%  103M 1s
 24050K .......... .......... .......... .......... .......... 43% 38.3M 1s
 24100K .......... .......... .......... .......... .......... 43%  174M 1s
 24150K .......... .......... .......... .......... .......... 44%  102M 1s
 24200K .......... .......... .......... .......... .......... 44% 98.2M 1s
 24250K .......... .......... .......... .......... .......... 44%  172M 1s
 24300K .......... .......... .......... .......... .......... 44% 99.1M 1s
 24350K .......... .......... .......... .......... .......... 44% 58.6M 1s
 24400K .......... .......... .......... .......... .......... 44%  175M 1s
 24450K .......... .......... .......... .......... .......... 44% 57.5M 1s
 24500K .......... .......... .......... .......... .......... 44%  162M 1s
 24550K .......... .......... .......... .......... .......... 44% 91.5M 1s
 24600K .......... .......... .......... .......... .......... 44% 74.9M 1s
 24650K .......... .......... .......... .......... .......... 44% 72.4M 1s
 24700K .......... .......... .......... .......... .......... 45%  814K 1s
 24750K .......... .......... .......... .......... .......... 45% 79.2M 1s
 24800K .......... .......... .......... .......... .......... 45%  170M 1s
 24850K .......... .......... .......... .......... .......... 45%  133M 1s
 24900K .......... .......... .......... .......... .......... 45% 88.2M 1s
 24950K .......... .......... .......... .......... .......... 45%  271M 1s
 25000K .......... .......... .......... .......... .......... 45%  102M 1s
 25050K .......... .......... .......... .......... .......... 45% 96.7M 1s
 25100K .......... .......... .......... .......... .......... 45% 92.3M 1s
 25150K .......... .......... .......... .......... .......... 45% 93.8M 1s
 25200K .......... .......... .......... .......... .......... 45%  114M 1s
 25250K .......... .......... .......... .......... .......... 46%  113M 1s
 25300K .......... .......... .......... .......... .......... 46%  101M 1s
 25350K .......... .......... .......... .......... .......... 46%  169M 1s
 25400K .......... .......... .......... .......... .......... 46% 65.8M 1s
 25450K .......... .......... .......... .......... .......... 46%  177M 1s
 25500K .......... .......... .......... .......... .......... 46% 99.5M 1s
 25550K .......... .......... .......... .......... .......... 46% 91.6M 1s
 25600K .......... .......... .......... .......... .......... 46%  104M 1s
 25650K .......... .......... .......... .......... .......... 46% 93.1M 1s
 25700K .......... .......... .......... .......... .......... 46%  159M 1s
 25750K .......... .......... .......... .......... .......... 46%  107M 1s
 25800K .......... .......... .......... .......... .......... 47% 89.8M 1s
 25850K .......... .......... .......... .......... .......... 47%  101M 1s
 25900K .......... .......... .......... .......... .......... 47% 85.1M 1s
 25950K .......... .......... .......... .......... .......... 47% 91.9M 1s
 26000K .......... .......... .......... .......... .......... 47%  179M 1s
 26050K .......... .......... .......... .......... .......... 47% 93.6M 1s
 26100K .......... .......... .......... .......... .......... 47% 99.9M 1s
 26150K .......... .......... .......... .......... .......... 47% 97.6M 1s
 26200K .......... .......... .......... .......... .......... 47%  171M 1s
 26250K .......... .......... .......... .......... .......... 47% 96.3M 1s
 26300K .......... .......... .......... .......... .......... 47% 32.1M 1s
 26350K .......... .......... .......... .......... .......... 48% 17.2M 1s
 26400K .......... .......... .......... .......... .......... 48% 57.8M 1s
 26450K .......... .......... .......... .......... .......... 48%  177M 1s
 26500K .......... .......... .......... .......... .......... 48%  103M 1s
 26550K .......... .......... .......... .......... .......... 48%  167M 1s
 26600K .......... .......... .......... .......... .......... 48% 64.1M 1s
 26650K .......... .......... .......... .......... .......... 48%  173M 1s
 26700K .......... .......... .......... .......... .......... 48%  102M 1s
 26750K .......... .......... .......... .......... .......... 48%  184M 1s
 26800K .......... .......... .......... .......... .......... 48% 96.1M 1s
 26850K .......... .......... .......... .......... .......... 48% 92.6M 1s
 26900K .......... .......... .......... .......... .......... 49% 96.7M 1s
 26950K .......... .......... .......... .......... .......... 49%  176M 1s
 27000K .......... .......... .......... .......... .......... 49% 64.9M 1s
 27050K .......... .......... .......... .......... .......... 49%  169M 1s
 27100K .......... .......... .......... .......... .......... 49% 91.1M 1s
 27150K .......... .......... .......... .......... .......... 49% 95.1M 1s
 27200K .......... .......... .......... .......... .......... 49% 94.6M 1s
 27250K .......... .......... .......... .......... .......... 49% 92.5M 1s
 27300K .......... .......... .......... .......... .......... 49%  151M 1s
 27350K .......... .......... .......... .......... .......... 49%  102M 1s
 27400K .......... .......... .......... .......... .......... 49%  180M 1s
 27450K .......... .......... .......... .......... .......... 50% 97.1M 1s
 27500K .......... .......... .......... .......... .......... 50%  100M 1s
 27550K .......... .......... .......... .......... .......... 50% 97.8M 1s
 27600K .......... .......... .......... .......... .......... 50% 98.0M 1s
 27650K .......... .......... .......... .......... .......... 50% 91.3M 1s
 27700K .......... .......... .......... .......... .......... 50%  184M 1s
 27750K .......... .......... .......... .......... .......... 50% 94.3M 1s
 27800K .......... .......... .......... .......... .......... 50%  100M 1s
 27850K .......... .......... .......... .......... .......... 50% 97.1M 1s
 27900K .......... .......... .......... .......... .......... 50%  109M 1s
 27950K .......... .......... .......... .......... .......... 50% 35.2M 1s
 28000K .......... .......... .......... .......... .......... 51% 20.8M 1s
 28050K .......... .......... .......... .......... .......... 51% 38.2M 1s
 28100K .......... .......... .......... .......... .......... 51%  102M 1s
 28150K .......... .......... .......... .......... .......... 51%  170M 1s
 28200K .......... .......... .......... .......... .......... 51% 91.1M 1s
 28250K .......... .......... .......... .......... .......... 51%  105M 1s
 28300K .......... .......... .......... .......... .......... 51%  101M 1s
 28350K .......... .......... .......... .......... .......... 51% 97.3M 1s
 28400K .......... .......... .......... .......... .......... 51%  177M 1s
 28450K .......... .......... .......... .......... .......... 51%  100M 1s
 28500K .......... .......... .......... .......... .......... 51% 96.4M 1s
 28550K .......... .......... .......... .......... .......... 52%  168M 1s
 28600K .......... .......... .......... .......... .......... 52%  103M 1s
 28650K .......... .......... .......... .......... .......... 52% 96.5M 1s
 28700K .......... .......... .......... .......... .......... 52% 97.1M 1s
 28750K .......... .......... .......... .......... .......... 52% 75.1M 1s
 28800K .......... .......... .......... .......... .......... 52%  795K 1s
 28850K .......... .......... .......... .......... .......... 52% 86.5M 1s
 28900K .......... .......... .......... .......... .......... 52% 99.0M 1s
 28950K .......... .......... .......... .......... .......... 52% 74.4M 1s
 29000K .......... .......... .......... .......... .......... 52%  340M 1s
 29050K .......... .......... .......... .......... .......... 52%  155M 1s
 29100K .......... .......... .......... .......... .......... 53% 65.2M 1s
 29150K .......... .......... .......... .......... .......... 53%  173M 1s
 29200K .......... .......... .......... .......... .......... 53%  100M 1s
 29250K .......... .......... .......... .......... .......... 53% 97.1M 1s
 29300K .......... .......... .......... .......... .......... 53% 96.3M 1s
 29350K .......... .......... .......... .......... .......... 53%  172M 1s
 29400K .......... .......... .......... .......... .......... 53% 87.1M 1s
 29450K .......... .......... .......... .......... .......... 53% 95.0M 1s
 29500K .......... .......... .......... .......... .......... 53% 98.3M 1s
 29550K .......... .......... .......... .......... .......... 53%  181M 1s
 29600K .......... .......... .......... .......... .......... 53% 95.5M 1s
 29650K .......... .......... .......... .......... .......... 54% 96.3M 1s
 29700K .......... .......... .......... .......... .......... 54% 93.7M 1s
 29750K .......... .......... .......... .......... .......... 54%  183M 1s
 29800K .......... .......... .......... .......... .......... 54% 96.7M 1s
 29850K .......... .......... .......... .......... .......... 54% 97.7M 1s
 29900K .......... .......... .......... .......... .......... 54% 90.2M 1s
 29950K .......... .......... .......... .......... .......... 54%  101M 1s
 30000K .......... .......... .......... .......... .......... 54% 95.5M 1s
 30050K .......... .......... .......... .......... .......... 54%  177M 1s
 30100K .......... .......... .......... .......... .......... 54% 91.7M 1s
 30150K .......... .......... .......... .......... .......... 54% 95.0M 1s
 30200K .......... .......... .......... .......... .......... 55% 97.3M 1s
 30250K .......... .......... .......... .......... .......... 55%  175M 1s
 30300K .......... .......... .......... .......... .......... 55% 64.8M 1s
 30350K .......... .......... .......... .......... .......... 55%  176M 1s
 30400K .......... .......... .......... .......... .......... 55% 97.6M 1s
 30450K .......... .......... .......... .......... .......... 55% 13.6M 1s
 30500K .......... .......... .......... .......... .......... 55% 89.8M 1s
 30550K .......... .......... .......... .......... .......... 55%  100M 1s
 30600K .......... .......... .......... .......... .......... 55% 63.2M 1s
 30650K .......... .......... .......... .......... .......... 55%  118M 1s
 30700K .......... .......... .......... .......... .......... 55% 87.1M 1s
 30750K .......... .......... .......... .......... .......... 56%  134M 1s
 30800K .......... .......... .......... .......... .......... 56%  105M 1s
 30850K .......... .......... .......... .......... .......... 56%  118M 1s
 30900K .......... .......... .......... .......... .......... 56%  115M 1s
 30950K .......... .......... .......... .......... .......... 56%  117M 1s
 31000K .......... .......... .......... .......... .......... 56%  119M 1s
 31050K .......... .......... .......... .......... .......... 56% 86.0M 1s
 31100K .......... .......... .......... .......... .......... 56% 87.3M 1s
 31150K .......... .......... .......... .......... .......... 56%  117M 1s
 31200K .......... .......... .......... .......... .......... 56%  118M 1s
 31250K .......... .......... .......... .......... .......... 56%  122M 1s
 31300K .......... .......... .......... .......... .......... 57%  115M 1s
 31350K .......... .......... .......... .......... .......... 57%  118M 1s
 31400K .......... .......... .......... .......... .......... 57%  105M 1s
 31450K .......... .......... .......... .......... .......... 57%  117M 1s
 31500K .......... .......... .......... .......... .......... 57% 75.7M 1s
 31550K .......... .......... .......... .......... .......... 57%  118M 1s
 31600K .......... .......... .......... .......... .......... 57%  104M 1s
 31650K .......... .......... .......... .......... .......... 57%  117M 1s
 31700K .......... .......... .......... .......... .......... 57%  115M 1s
 31750K .......... .......... .......... .......... .......... 57%  118M 1s
 31800K .......... .......... .......... .......... .......... 57%  100M 1s
 31850K .......... .......... .......... .......... .......... 58% 90.6M 1s
 31900K .......... .......... .......... .......... .......... 58% 95.6M 1s
 31950K .......... .......... .......... .......... .......... 58% 92.1M 1s
 32000K .......... .......... .......... .......... .......... 58%  118M 1s
 32050K .......... .......... .......... .......... .......... 58%  116M 1s
 32100K .......... .......... .......... .......... .......... 58% 29.1M 1s
 32150K .......... .......... .......... .......... .......... 58% 28.9M 1s
 32200K .......... .......... .......... .......... .......... 58% 45.1M 1s
 32250K .......... .......... .......... .......... .......... 58% 76.9M 1s
 32300K .......... .......... .......... .......... .......... 58% 72.1M 1s
 32350K .......... .......... .......... .......... .......... 58%  118M 1s
 32400K .......... .......... .......... .......... .......... 59% 89.1M 1s
 32450K .......... .......... .......... .......... .......... 59%  117M 1s
 32500K .......... .......... .......... .......... .......... 59%  116M 1s
 32550K .......... .......... .......... .......... .......... 59%  119M 1s
 32600K .......... .......... .......... .......... .......... 59% 72.6M 1s
 32650K .......... .......... .......... .......... .......... 59%  118M 1s
 32700K .......... .......... .......... .......... .......... 59% 82.5M 1s
 32750K .......... .......... .......... .......... .......... 59%  124M 1s
 32800K .......... .......... .......... .......... .......... 59%  117M 1s
 32850K .......... .......... .......... .......... .......... 59%  114M 1s
 32900K .......... .......... .......... .......... .......... 59%  785K 1s
 32950K .......... .......... .......... .......... .......... 60%  120M 1s
 33000K .......... .......... .......... .......... .......... 60% 95.0M 1s
 33050K .......... .......... .......... .......... .......... 60%  182M 1s
 33100K .......... .......... .......... .......... .......... 60% 61.2M 1s
 33150K .......... .......... .......... .......... .......... 60%  107M 1s
 33200K .......... .......... .......... .......... .......... 60%  162M 1s
 33250K .......... .......... .......... .......... .......... 60%  125M 1s
 33300K .......... .......... .......... .......... .......... 60% 95.3M 1s
 33350K .......... .......... .......... .......... .......... 60%  175M 1s
 33400K .......... .......... .......... .......... .......... 60%  101M 1s
 33450K .......... .......... .......... .......... .......... 60% 96.4M 1s
 33500K .......... .......... .......... .......... .......... 61% 92.1M 1s
 33550K .......... .......... .......... .......... .......... 61% 88.6M 1s
 33600K .......... .......... .......... .......... .......... 61% 97.3M 1s
 33650K .......... .......... .......... .......... .......... 61%  175M 1s
 33700K .......... .......... .......... .......... .......... 61%  100M 1s
 33750K .......... .......... .......... .......... .......... 61%  145M 1s
 33800K .......... .......... .......... .......... .......... 61%  102M 1s
 33850K .......... .......... .......... .......... .......... 61% 94.9M 1s
 33900K .......... .......... .......... .......... .......... 61% 98.1M 1s
 33950K .......... .......... .......... .......... .......... 61% 96.9M 1s
 34000K .......... .......... .......... .......... .......... 61%  143M 1s
 34050K .......... .......... .......... .......... .......... 62%  108M 1s
 34100K .......... .......... .......... .......... .......... 62% 99.8M 1s
 34150K .......... .......... .......... .......... .......... 62% 92.8M 1s
 34200K .......... .......... .......... .......... .......... 62%  131M 1s
 34250K .......... .......... .......... .......... .......... 62%  105M 1s
 34300K .......... .......... .......... .......... .......... 62% 96.3M 1s
 34350K .......... .......... .......... .......... .......... 62%  100M 1s
 34400K .......... .......... .......... .......... .......... 62% 89.2M 1s
 34450K .......... .......... .......... .......... .......... 62% 96.2M 1s
 34500K .......... .......... .......... .......... .......... 62%  176M 1s
 34550K .......... .......... .......... .......... .......... 62% 29.2M 1s
 34600K .......... .......... .......... .......... .......... 63% 19.1M 1s
 34650K .......... .......... .......... .......... .......... 63% 85.9M 1s
 34700K .......... .......... .......... .......... .......... 63% 85.8M 1s
 34750K .......... .......... .......... .......... .......... 63%  116M 1s
 34800K .......... .......... .......... .......... .......... 63% 66.1M 1s
 34850K .......... .......... .......... .......... .......... 63%  118M 1s
 34900K .......... .......... .......... .......... .......... 63%  116M 1s
 34950K .......... .......... .......... .......... .......... 63%  112M 1s
 35000K .......... .......... .......... .......... .......... 63% 63.9M 1s
 35050K .......... .......... .......... .......... .......... 63%  189M 1s
 35100K .......... .......... .......... .......... .......... 63%  132M 1s
 35150K .......... .......... .......... .......... .......... 64% 96.9M 0s
 35200K .......... .......... .......... .......... .......... 64%  101M 0s
 35250K .......... .......... .......... .......... .......... 64%  182M 0s
 35300K .......... .......... .......... .......... .......... 64% 99.1M 0s
 35350K .......... .......... .......... .......... .......... 64% 85.4M 0s
 35400K .......... .......... .......... .......... .......... 64%  100M 0s
 35450K .......... .......... .......... .......... .......... 64%  179M 0s
 35500K .......... .......... .......... .......... .......... 64% 66.4M 0s
 35550K .......... .......... .......... .......... .......... 64%  175M 0s
 35600K .......... .......... .......... .......... .......... 64% 58.1M 0s
 35650K .......... .......... .......... .......... .......... 64%  176M 0s
 35700K .......... .......... .......... .......... .......... 65% 95.5M 0s
 35750K .......... .......... .......... .......... .......... 65% 98.9M 0s
 35800K .......... .......... .......... .......... .......... 65%  189M 0s
 35850K .......... .......... .......... .......... .......... 65%  101M 0s
 35900K .......... .......... .......... .......... .......... 65% 92.5M 0s
 35950K .......... .......... .......... .......... .......... 65%  103M 0s
 36000K .......... .......... .......... .......... .......... 65% 96.7M 0s
 36050K .......... .......... .......... .......... .......... 65%  161M 0s
 36100K .......... .......... .......... .......... .......... 65% 90.8M 0s
 36150K .......... .......... .......... .......... .......... 65%  200M 0s
 36200K .......... .......... .......... .......... .......... 65% 69.9M 0s
 36250K .......... .......... .......... .......... .......... 66% 13.3M 0s
 36300K .......... .......... .......... .......... .......... 66%  100M 0s
 36350K .......... .......... .......... .......... .......... 66% 84.8M 0s
 36400K .......... .......... .......... .......... .......... 66%  180M 0s
 36450K .......... .......... .......... .......... .......... 66% 73.4M 0s
 36500K .......... .......... .......... .......... .......... 66%  116M 0s
 36550K .......... .......... .......... .......... .......... 66% 99.6M 0s
 36600K .......... .......... .......... .......... .......... 66% 94.3M 0s
 36650K .......... .......... .......... .......... .......... 66%  176M 0s
 36700K .......... .......... .......... .......... .......... 66% 99.2M 0s
 36750K .......... .......... .......... .......... .......... 66% 97.5M 0s
 36800K .......... .......... .......... .......... .......... 67%  101M 0s
 36850K .......... .......... .......... .......... .......... 67%  171M 0s
 36900K .......... .......... .......... .......... .......... 67% 94.6M 0s
 36950K .......... .......... .......... .......... .......... 67% 75.3M 0s
 37000K .......... .......... .......... .......... .......... 67%  110M 0s
 37050K .......... .......... .......... .......... .......... 67%  787K 0s
 37100K .......... .......... .......... .......... .......... 67%  115M 0s
 37150K .......... .......... .......... .......... .......... 67%  101M 0s
 37200K .......... .......... .......... .......... .......... 67% 49.8M 0s
 37250K .......... .......... .......... .......... .......... 67%  723M 0s
 37300K .......... .......... .......... .......... .......... 67% 83.7M 0s
 37350K .......... .......... .......... .......... .......... 68%  124M 0s
 37400K .......... .......... .......... .......... .......... 68% 97.9M 0s
 37450K .......... .......... .......... .......... .......... 68%  102M 0s
 37500K .......... .......... .......... .......... .......... 68% 97.3M 0s
 37550K .......... .......... .......... .......... .......... 68% 96.8M 0s
 37600K .......... .......... .......... .......... .......... 68%  181M 0s
 37650K .......... .......... .......... .......... .......... 68%  102M 0s
 37700K .......... .......... .......... .......... .......... 68% 94.3M 0s
 37750K .......... .......... .......... .......... .......... 68%  181M 0s
 37800K .......... .......... .......... .......... .......... 68% 97.0M 0s
 37850K .......... .......... .......... .......... .......... 68%  102M 0s
 37900K .......... .......... .......... .......... .......... 69% 98.0M 0s
 37950K .......... .......... .......... .......... .......... 69% 97.2M 0s
 38000K .......... .......... .......... .......... .......... 69%  178M 0s
 38050K .......... .......... .......... .......... .......... 69% 96.5M 0s
 38100K .......... .......... .......... .......... .......... 69% 99.6M 0s
 38150K .......... .......... .......... .......... .......... 69%  176M 0s
 38200K .......... .......... .......... .......... .......... 69% 95.9M 0s
 38250K .......... .......... .......... .......... .......... 69%  101M 0s
 38300K .......... .......... .......... .......... .......... 69% 93.6M 0s
 38350K .......... .......... .......... .......... .......... 69%  102M 0s
 38400K .......... .......... .......... .......... .......... 69%  180M 0s
 38450K .......... .......... .......... .......... .......... 70%  101M 0s
 38500K .......... .......... .......... .......... .......... 70% 66.2M 0s
 38550K .......... .......... .......... .......... .......... 70%  126M 0s
 38600K .......... .......... .......... .......... .......... 70% 96.1M 0s
 38650K .......... .......... .......... .......... .......... 70% 46.7M 0s
 38700K .......... .......... .......... .......... .......... 70% 14.6M 0s
 38750K .......... .......... .......... .......... .......... 70%  134M 0s
 38800K .......... .......... .......... .......... .......... 70% 82.0M 0s
 38850K .......... .......... .......... .......... .......... 70% 85.7M 0s
 38900K .......... .......... .......... .......... .......... 70% 66.4M 0s
 38950K .......... .......... .......... .......... .......... 70% 99.2M 0s
 39000K .......... .......... .......... .......... .......... 71% 90.0M 0s
 39050K .......... .......... .......... .......... .......... 71%  178M 0s
 39100K .......... .......... .......... .......... .......... 71% 96.4M 0s
 39150K .......... .......... .......... .......... .......... 71%  101M 0s
 39200K .......... .......... .......... .......... .......... 71%  180M 0s
 39250K .......... .......... .......... .......... .......... 71% 96.7M 0s
 39300K .......... .......... .......... .......... .......... 71% 99.5M 0s
 39350K .......... .......... .......... .......... .......... 71%  101M 0s
 39400K .......... .......... .......... .......... .......... 71% 95.6M 0s
 39450K .......... .......... .......... .......... .......... 71%  176M 0s
 39500K .......... .......... .......... .......... .......... 71% 98.3M 0s
 39550K .......... .......... .......... .......... .......... 72% 99.9M 0s
 39600K .......... .......... .......... .......... .......... 72% 83.5M 0s
 39650K .......... .......... .......... .......... .......... 72%  100M 0s
 39700K .......... .......... .......... .......... .......... 72%  179M 0s
 39750K .......... .......... .......... .......... .......... 72% 96.8M 0s
 39800K .......... .......... .......... .......... .......... 72% 99.6M 0s
 39850K .......... .......... .......... .......... .......... 72% 83.1M 0s
 39900K .......... .......... .......... .......... .......... 72% 98.3M 0s
 39950K .......... .......... .......... .......... .......... 72% 95.3M 0s
 40000K .......... .......... .......... .......... .......... 72%  170M 0s
 40050K .......... .......... .......... .......... .......... 72%  106M 0s
 40100K .......... .......... .......... .......... .......... 73% 93.4M 0s
 40150K .......... .......... .......... .......... .......... 73% 84.0M 0s
 40200K .......... .......... .......... .......... .......... 73%  182M 0s
 40250K .......... .......... .......... .......... .......... 73% 91.4M 0s
 40300K .......... .......... .......... .......... .......... 73% 94.7M 0s
 40350K .......... .......... .......... .......... .......... 73% 55.5M 0s
 40400K .......... .......... .......... .......... .......... 73% 19.0M 0s
 40450K .......... .......... .......... .......... .......... 73%  219M 0s
 40500K .......... .......... .......... .......... .......... 73% 73.2M 0s
 40550K .......... .......... .......... .......... .......... 73% 38.4M 0s
 40600K .......... .......... .......... .......... .......... 73%  178M 0s
 40650K .......... .......... .......... .......... .......... 74% 75.3M 0s
 40700K .......... .......... .......... .......... .......... 74% 72.0M 0s
 40750K .......... .......... .......... .......... .......... 74%  180M 0s
 40800K .......... .......... .......... .......... .......... 74%  101M 0s
 40850K .......... .......... .......... .......... .......... 74% 97.5M 0s
 40900K .......... .......... .......... .......... .......... 74%  169M 0s
 40950K .......... .......... .......... .......... .......... 74% 98.6M 0s
 41000K .......... .......... .......... .......... .......... 74%  101M 0s
 41050K .......... .......... .......... .......... .......... 74% 94.7M 0s
 41100K .......... .......... .......... .......... .......... 74% 68.8M 0s
 41150K .......... .......... .......... .......... .......... 74%  798K 0s
 41200K .......... .......... .......... .......... .......... 75% 81.2M 0s
 41250K .......... .......... .......... .......... .......... 75% 97.0M 0s
 41300K .......... .......... .......... .......... .......... 75%  171M 0s
 41350K .......... .......... .......... .......... .......... 75% 72.8M 0s
 41400K .......... .......... .......... .......... .......... 75%  291M 0s
 41450K .......... .......... .......... .......... .......... 75% 96.0M 0s
 41500K .......... .......... .......... .......... .......... 75% 98.3M 0s
 41550K .......... .......... .......... .......... .......... 75%  101M 0s
 41600K .......... .......... .......... .......... .......... 75% 97.4M 0s
 41650K .......... .......... .......... .......... .......... 75%  181M 0s
 41700K .......... .......... .......... .......... .......... 75% 99.7M 0s
 41750K .......... .......... .......... .......... .......... 76% 96.6M 0s
 41800K .......... .......... .......... .......... .......... 76%  176M 0s
 41850K .......... .......... .......... .......... .......... 76% 93.3M 0s
 41900K .......... .......... .......... .......... .......... 76% 94.5M 0s
 41950K .......... .......... .......... .......... .......... 76% 95.1M 0s
 42000K .......... .......... .......... .......... .......... 76%  182M 0s
 42050K .......... .......... .......... .......... .......... 76% 92.9M 0s
 42100K .......... .......... .......... .......... .......... 76% 97.5M 0s
 42150K .......... .......... .......... .......... .......... 76% 96.3M 0s
 42200K .......... .......... .......... .......... .......... 76%  178M 0s
 42250K .......... .......... .......... .......... .......... 76% 96.5M 0s
 42300K .......... .......... .......... .......... .......... 77% 98.6M 0s
 42350K .......... .......... .......... .......... .......... 77% 97.1M 0s
 42400K .......... .......... .......... .......... .......... 77% 92.2M 0s
 42450K .......... .......... .......... .......... .......... 77% 91.0M 0s
 42500K .......... .......... .......... .......... .......... 77%  176M 0s
 42550K .......... .......... .......... .......... .......... 77% 88.1M 0s
 42600K .......... .......... .......... .......... .......... 77%  128M 0s
 42650K .......... .......... .......... .......... .......... 77%  107M 0s
 42700K .......... .......... .......... .......... .......... 77% 95.6M 0s
 42750K .......... .......... .......... .......... .......... 77%  101M 0s
 42800K .......... .......... .......... .......... .......... 77% 33.6M 0s
 42850K .......... .......... .......... .......... .......... 78% 16.5M 0s
 42900K .......... .......... .......... .......... .......... 78%  115M 0s
 42950K .......... .......... .......... .......... .......... 78% 86.0M 0s
 43000K .......... .......... .......... .......... .......... 78%  118M 0s
 43050K .......... .......... .......... .......... .......... 78% 91.8M 0s
 43100K .......... .......... .......... .......... .......... 78% 80.0M 0s
 43150K .......... .......... .......... .......... .......... 78%  182M 0s
 43200K .......... .......... .......... .......... .......... 78% 96.7M 0s
 43250K .......... .......... .......... .......... .......... 78% 57.6M 0s
 43300K .......... .......... .......... .......... .......... 78% 74.9M 0s
 43350K .......... .......... .......... .......... .......... 78%  175M 0s
 43400K .......... .......... .......... .......... .......... 79%  102M 0s
 43450K .......... .......... .......... .......... .......... 79% 96.8M 0s
 43500K .......... .......... .......... .......... .......... 79% 98.3M 0s
 43550K .......... .......... .......... .......... .......... 79% 97.3M 0s
 43600K .......... .......... .......... .......... .......... 79%  172M 0s
 43650K .......... .......... .......... .......... .......... 79%  102M 0s
 43700K .......... .......... .......... .......... .......... 79% 95.6M 0s
 43750K .......... .......... .......... .......... .......... 79%  176M 0s
 43800K .......... .......... .......... .......... .......... 79%  101M 0s
 43850K .......... .......... .......... .......... .......... 79% 97.1M 0s
 43900K .......... .......... .......... .......... .......... 79% 98.0M 0s
 43950K .......... .......... .......... .......... .......... 80%  185M 0s
 44000K .......... .......... .......... .......... .......... 80% 97.0M 0s
 44050K .......... .......... .......... .......... .......... 80%  101M 0s
 44100K .......... .......... .......... .......... .......... 80% 94.9M 0s
 44150K .......... .......... .......... .......... .......... 80%  173M 0s
 44200K .......... .......... .......... .......... .......... 80% 99.9M 0s
 44250K .......... .......... .......... .......... .......... 80%  176M 0s
 44300K .......... .......... .......... .......... .......... 80% 67.9M 0s
 44350K .......... .......... .......... .......... .......... 80%  174M 0s
 44400K .......... .......... .......... .......... .......... 80%  101M 0s
 44450K .......... .......... .......... .......... .......... 80% 95.5M 0s
 44500K .......... .......... .......... .......... .......... 81% 45.6M 0s
 44550K .......... .......... .......... .......... .......... 81% 18.2M 0s
 44600K .......... .......... .......... .......... .......... 81%  136M 0s
 44650K .......... .......... .......... .......... .......... 81% 66.4M 0s
 44700K .......... .......... .......... .......... .......... 81% 87.0M 0s
 44750K .......... .......... .......... .......... .......... 81%  118M 0s
 44800K .......... .......... .......... .......... .......... 81%  107M 0s
 44850K .......... .......... .......... .......... .......... 81% 90.8M 0s
 44900K .......... .......... .......... .......... .......... 81%  107M 0s
 44950K .......... .......... .......... .......... .......... 81% 70.8M 0s
 45000K .......... .......... .......... .......... .......... 81% 52.8M 0s
 45050K .......... .......... .......... .......... .......... 82%  117M 0s
 45100K .......... .......... .......... .......... .......... 82% 65.6M 0s
 45150K .......... .......... .......... .......... .......... 82%  118M 0s
 45200K .......... .......... .......... .......... .......... 82%  105M 0s
 45250K .......... .......... .......... .......... .......... 82% 75.0M 0s
 45300K .......... .......... .......... .......... .......... 82%  799K 0s
 45350K .......... .......... .......... .......... .......... 82%  112M 0s
 45400K .......... .......... .......... .......... .......... 82%  146M 0s
 45450K .......... .......... .......... .......... .......... 82% 75.7M 0s
 45500K .......... .......... .......... .......... .......... 82% 72.7M 0s
 45550K .......... .......... .......... .......... .......... 82% 61.4M 0s
 45600K .......... .......... .......... .......... .......... 83%  561M 0s
 45650K .......... .......... .......... .......... .......... 83%  108M 0s
 45700K .......... .......... .......... .......... .......... 83% 95.9M 0s
 45750K .......... .......... .......... .......... .......... 83%  174M 0s
 45800K .......... .......... .......... .......... .......... 83% 88.9M 0s
 45850K .......... .......... .......... .......... .......... 83%  203M 0s
 45900K .......... .......... .......... .......... .......... 83% 93.6M 0s
 45950K .......... .......... .......... .......... .......... 83% 97.3M 0s
 46000K .......... .......... .......... .......... .......... 83% 99.8M 0s
 46050K .......... .......... .......... .......... .......... 83%  178M 0s
 46100K .......... .......... .......... .......... .......... 83% 93.4M 0s
 46150K .......... .......... .......... .......... .......... 84%  105M 0s
 46200K .......... .......... .......... .......... .......... 84%  166M 0s
 46250K .......... .......... .......... .......... .......... 84% 79.6M 0s
 46300K .......... .......... .......... .......... .......... 84%  116M 0s
 46350K .......... .......... .......... .......... .......... 84%  101M 0s
 46400K .......... .......... .......... .......... .......... 84% 92.8M 0s
 46450K .......... .......... .......... .......... .......... 84% 94.9M 0s
 46500K .......... .......... .......... .......... .......... 84%  140M 0s
 46550K .......... .......... .......... .......... .......... 84% 93.5M 0s
 46600K .......... .......... .......... .......... .......... 84%  105M 0s
 46650K .......... .......... .......... .......... .......... 84%  175M 0s
 46700K .......... .......... .......... .......... .......... 85% 67.2M 0s
 46750K .......... .......... .......... .......... .......... 85%  172M 0s
 46800K .......... .......... .......... .......... .......... 85% 99.1M 0s
 46850K .......... .......... .......... .......... .......... 85%  100M 0s
 46900K .......... .......... .......... .......... .......... 85% 93.7M 0s
 46950K .......... .......... .......... .......... .......... 85% 28.7M 0s
 47000K .......... .......... .......... .......... .......... 85% 19.8M 0s
 47050K .......... .......... .......... .......... .......... 85%  105M 0s
 47100K .......... .......... .......... .......... .......... 85% 40.0M 0s
 47150K .......... .......... .......... .......... .......... 85% 77.4M 0s
 47200K .......... .......... .......... .......... .......... 85%  116M 0s
 47250K .......... .......... .......... .......... .......... 86%  119M 0s
 47300K .......... .......... .......... .......... .......... 86%  116M 0s
 47350K .......... .......... .......... .......... .......... 86%  119M 0s
 47400K .......... .......... .......... .......... .......... 86%  110M 0s
 47450K .......... .......... .......... .......... .......... 86%  118M 0s
 47500K .......... .......... .......... .......... .......... 86% 87.1M 0s
 47550K .......... .......... .......... .......... .......... 86%  118M 0s
 47600K .......... .......... .......... .......... .......... 86%  117M 0s
 47650K .......... .......... .......... .......... .......... 86%  118M 0s
 47700K .......... .......... .......... .......... .......... 86%  117M 0s
 47750K .......... .......... .......... .......... .......... 86%  104M 0s
 47800K .......... .......... .......... .......... .......... 87% 98.7M 0s
 47850K .......... .......... .......... .......... .......... 87%  118M 0s
 47900K .......... .......... .......... .......... .......... 87% 87.4M 0s
 47950K .......... .......... .......... .......... .......... 87%  107M 0s
 48000K .......... .......... .......... .......... .......... 87%  108M 0s
 48050K .......... .......... .......... .......... .......... 87% 98.5M 0s
 48100K .......... .......... .......... .......... .......... 87% 98.7M 0s
 48150K .......... .......... .......... .......... .......... 87% 89.8M 0s
 48200K .......... .......... .......... .......... .......... 87% 97.7M 0s
 48250K .......... .......... .......... .......... .......... 87%  178M 0s
 48300K .......... .......... .......... .......... .......... 87% 98.9M 0s
 48350K .......... .......... .......... .......... .......... 88% 95.5M 0s
 48400K .......... .......... .......... .......... .......... 88%  174M 0s
 48450K .......... .......... .......... .......... .......... 88% 99.2M 0s
 48500K .......... .......... .......... .......... .......... 88% 64.3M 0s
 48550K .......... .......... .......... .......... .......... 88%  180M 0s
 48600K .......... .......... .......... .......... .......... 88%  100M 0s
 48650K .......... .......... .......... .......... .......... 88% 22.5M 0s
 48700K .......... .......... .......... .......... .......... 88% 35.0M 0s
 48750K .......... .......... .......... .......... .......... 88% 75.5M 0s
 48800K .......... .......... .......... .......... .......... 88% 41.2M 0s
 48850K .......... .......... .......... .......... .......... 88%  239M 0s
 48900K .......... .......... .......... .......... .......... 89% 62.2M 0s
 48950K .......... .......... .......... .......... .......... 89%  186M 0s
 49000K .......... .......... .......... .......... .......... 89%  102M 0s
 49050K .......... .......... .......... .......... .......... 89% 96.4M 0s
 49100K .......... .......... .......... .......... .......... 89% 97.3M 0s
 49150K .......... .......... .......... .......... .......... 89%  180M 0s
 49200K .......... .......... .......... .......... .......... 89% 96.9M 0s
 49250K .......... .......... .......... .......... .......... 89%  101M 0s
 49300K .......... .......... .......... .......... .......... 89% 89.2M 0s
 49350K .......... .......... .......... .......... .......... 89%  110M 0s
 49400K .......... .......... .......... .......... .......... 89%  786K 0s
 49450K .......... .......... .......... .......... .......... 90%  222M 0s
 49500K .......... .......... .......... .......... .......... 90% 83.7M 0s
 49550K .......... .......... .......... .......... .......... 90%  206M 0s
 49600K .......... .......... .......... .......... .......... 90% 93.5M 0s
 49650K .......... .......... .......... .......... .......... 90%  183M 0s
 49700K .......... .......... .......... .......... .......... 90% 97.0M 0s
 49750K .......... .......... .......... .......... .......... 90%  100M 0s
 49800K .......... .......... .......... .......... .......... 90% 98.0M 0s
 49850K .......... .......... .......... .......... .......... 90% 96.2M 0s
 49900K .......... .......... .......... .......... .......... 90%  181M 0s
 49950K .......... .......... .......... .......... .......... 90%  101M 0s
 50000K .......... .......... .......... .......... .......... 91% 94.6M 0s
 50050K .......... .......... .......... .......... .......... 91%  179M 0s
 50100K .......... .......... .......... .......... .......... 91%  101M 0s
 50150K .......... .......... .......... .......... .......... 91% 97.9M 0s
 50200K .......... .......... .......... .......... .......... 91% 98.5M 0s
 50250K .......... .......... .......... .......... .......... 91% 94.9M 0s
 50300K .......... .......... .......... .......... .......... 91%  159M 0s
 50350K .......... .......... .......... .......... .......... 91%  101M 0s
 50400K .......... .......... .......... .......... .......... 91%  175M 0s
 50450K .......... .......... .......... .......... .......... 91% 96.0M 0s
 50500K .......... .......... .......... .......... .......... 91% 98.4M 0s
 50550K .......... .......... .......... .......... .......... 92% 96.5M 0s
 50600K .......... .......... .......... .......... .......... 92% 90.4M 0s
 50650K .......... .......... .......... .......... .......... 92%  107M 0s
 50700K .......... .......... .......... .......... .......... 92%  168M 0s
 50750K .......... .......... .......... .......... .......... 92% 98.7M 0s
 50800K .......... .......... .......... .......... .......... 92% 95.9M 0s
 50850K .......... .......... .......... .......... .......... 92%  182M 0s
 50900K .......... .......... .......... .......... .......... 92% 67.6M 0s
 50950K .......... .......... .......... .......... .......... 92%  173M 0s
 51000K .......... .......... .......... .......... .......... 92% 33.7M 0s
 51050K .......... .......... .......... .......... .......... 92% 58.5M 0s
 51100K .......... .......... .......... .......... .......... 93% 16.1M 0s
 51150K .......... .......... .......... .......... .......... 93%  172M 0s
 51200K .......... .......... .......... .......... .......... 93%  101M 0s
 51250K .......... .......... .......... .......... .......... 93% 98.9M 0s
 51300K .......... .......... .......... .......... .......... 93% 98.6M 0s
 51350K .......... .......... .......... .......... .......... 93% 97.1M 0s
 51400K .......... .......... .......... .......... .......... 93%  181M 0s
 51450K .......... .......... .......... .......... .......... 93% 97.7M 0s
 51500K .......... .......... .......... .......... .......... 93% 98.1M 0s
 51550K .......... .......... .......... .......... .......... 93%  180M 0s
 51600K .......... .......... .......... .......... .......... 93%  101M 0s
 51650K .......... .......... .......... .......... .......... 94% 91.6M 0s
 51700K .......... .......... .......... .......... .......... 94% 64.6M 0s
 51750K .......... .......... .......... .......... .......... 94%  175M 0s
 51800K .......... .......... .......... .......... .......... 94%  100M 0s
 51850K .......... .......... .......... .......... .......... 94% 98.9M 0s
 51900K .......... .......... .......... .......... .......... 94% 92.9M 0s
 51950K .......... .......... .......... .......... .......... 94%  176M 0s
 52000K .......... .......... .......... .......... .......... 94%  101M 0s
 52050K .......... .......... .......... .......... .......... 94% 96.7M 0s
 52100K .......... .......... .......... .......... .......... 94% 98.7M 0s
 52150K .......... .......... .......... .......... .......... 94%  177M 0s
 52200K .......... .......... .......... .......... .......... 95% 96.2M 0s
 52250K .......... .......... .......... .......... .......... 95%  100M 0s
 52300K .......... .......... .......... .......... .......... 95%  172M 0s
 52350K .......... .......... .......... .......... .......... 95% 97.6M 0s
 52400K .......... .......... .......... .......... .......... 95%  101M 0s
 52450K .......... .......... .......... .......... .......... 95% 95.9M 0s
 52500K .......... .......... .......... .......... .......... 95% 96.0M 0s
 52550K .......... .......... .......... .......... .......... 95% 93.6M 0s
 52600K .......... .......... .......... .......... .......... 95%  178M 0s
 52650K .......... .......... .......... .......... .......... 95% 94.5M 0s
 52700K .......... .......... .......... .......... .......... 95% 39.9M 0s
 52750K .......... .......... .......... .......... .......... 96%  122M 0s
 52800K .......... .......... .......... .......... .......... 96% 17.2M 0s
 52850K .......... .......... .......... .......... .......... 96% 82.5M 0s
 52900K .......... .......... .......... .......... .......... 96% 87.6M 0s
 52950K .......... .......... .......... .......... .......... 96%  107M 0s
 53000K .......... .......... .......... .......... .......... 96%  118M 0s
 53050K .......... .......... .......... .......... .......... 96% 89.2M 0s
 53100K .......... .......... .......... .......... .......... 96% 97.2M 0s
 53150K .......... .......... .......... .......... .......... 96% 95.8M 0s
 53200K .......... .......... .......... .......... .......... 96%  178M 0s
 53250K .......... .......... .......... .......... .......... 96%  101M 0s
 53300K .......... .......... .......... .......... .......... 97% 83.0M 0s
 53350K .......... .......... .......... .......... .......... 97%  206M 0s
 53400K .......... .......... .......... .......... .......... 97% 54.9M 0s
 53450K .......... .......... .......... .......... .......... 97%  208M 0s
 53500K .......... .......... .......... .......... .......... 97%  783K 0s
 53550K .......... .......... .......... .......... .......... 97% 75.1M 0s
 53600K .......... .......... .......... .......... .......... 97%  143M 0s
 53650K .......... .......... .......... .......... .......... 97%  128M 0s
 53700K .......... .......... .......... .......... .......... 97% 96.0M 0s
 53750K .......... .......... .......... .......... .......... 97%  178M 0s
 53800K .......... .......... .......... .......... .......... 97% 94.7M 0s
 53850K .......... .......... .......... .......... .......... 98% 84.3M 0s
 53900K .......... .......... .......... .......... .......... 98% 97.0M 0s
 53950K .......... .......... .......... .......... .......... 98%  104M 0s
 54000K .......... .......... .......... .......... .......... 98% 97.8M 0s
 54050K .......... .......... .......... .......... .......... 98%  173M 0s
 54100K .......... .......... .......... .......... .......... 98% 98.2M 0s
 54150K .......... .......... .......... .......... .......... 98% 98.4M 0s
 54200K .......... .......... .......... .......... .......... 98%  183M 0s
 54250K .......... .......... .......... .......... .......... 98%  101M 0s
 54300K .......... .......... .......... .......... .......... 98% 92.8M 0s
 54350K .......... .......... .......... .......... .......... 98%  103M 0s
 54400K .......... .......... .......... .......... .......... 99%  176M 0s
 54450K .......... .......... .......... .......... .......... 99% 98.0M 0s
 54500K .......... .......... .......... .......... .......... 99% 99.8M 0s
 54550K .......... .......... .......... .......... .......... 99%  176M 0s
 54600K .......... .......... .......... .......... .......... 99% 78.2M 0s
 54650K .......... .......... .......... .......... .......... 99%  112M 0s
 54700K .......... .......... .......... .......... .......... 99% 98.2M 0s
 54750K .......... .......... .......... .......... .......... 99% 97.3M 0s
 54800K .......... .......... .......... .......... .......... 99%  174M 0s
 54850K .......... .......... .......... .......... .......... 99%  101M 0s
 54900K .......... .......... .......... .......... .......... 99% 93.9M 0s
 54950K .......... .......... ..........                      100%  867M=1.4s

2024-05-05 09:56:24 (37.9 MB/s) - 'buildx-v0.14.0.linux-amd64' saved [56299520/56299520]

docker-in-docker-debian script has completed!
#2: Taking snapshot of files...
#2: USER coder
#2: Cmd: USER
#2: 🏗️ Built image! [2m3.895012704s]
#3: 🔄 Updating the ownership of the workspace...
#3: 👤 Updated the ownership of the workspace! [26.029046ms]
=== Running the init command /bin/sh [-c bash] as the "coder" user...
coder@35449d588c56:/workspaces/coder$ ~docker
bash: ~docker: command not found
coder@35449d588c56:/workspaces/coder$
coder@35449d588c56:/workspaces/coder$ docker

Usage:  docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Common Commands:
  run         Create and run a new container from an image
  exec        Execute a command in a running container
  ps          List containers
  build       Build an image from a Dockerfile
  pull        Download an image from a registry
  push        Upload an image to a registry
  images      List images
  login       Log in to a registry
  logout      Log out from a registry
  search      Search Docker Hub for images
  version     Show the Docker version information
  info        Display system-wide information

Management Commands:
  builder     Manage builds
  buildx*     Docker Buildx
  checkpoint  Manage checkpoints
  compose*    Docker Compose
  container   Manage containers
  context     Manage contexts
  image       Manage images
  manifest    Manage Docker image manifests and manifest lists
  network     Manage networks
  plugin      Manage plugins
  system      Manage Docker
  trust       Manage trust on Docker images
  volume      Manage volumes

Swarm Commands:
  config      Manage Swarm configs
  node        Manage Swarm nodes
  secret      Manage Swarm secrets
  service     Manage Swarm services
  stack       Manage Swarm stacks
  swarm       Manage Swarm

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  import      Import the contents from a tarball to create a filesystem image
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  wait        Block until one or more containers stop, then print their exit codes

Global Options:
      --config string      Location of client config files (default "/.envbuilder")
  -c, --context string     Name of the context to use to connect to the daemon (overrides
                           DOCKER_HOST env var and default context set with "docker
                           context use")
  -D, --debug              Enable debug mode
  -H, --host list          Daemon socket to connect to
  -l, --log-level string   Set the logging level ("debug", "info", "warn", "error",
                           "fatal") (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default "/.envbuilder/ca.pem")
      --tlscert string     Path to TLS certificate file (default "/.envbuilder/cert.pem")
      --tlskey string      Path to TLS key file (default "/.envbuilder/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Run 'docker COMMAND --help' for more information on a command.

For more help on how to use Docker, head to https://docs.docker.com/go/guides/
coder@35449d588c56:/workspaces/coder$ docker info
Client: Docker Engine - Community
 Version:    26.1.0
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.14.0
    Path:     /usr/local/lib/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.27.0
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
errors pretty printing info
coder@35449d588c56:/workspaces/coder$ docker version
Client: Docker Engine - Community
 Version:           26.1.0
 API version:       1.45
 Go version:        go1.21.9
 Git commit:        9714adc
 Built:             Mon Apr 22 17:06:41 2024
 OS/Arch:           linux/amd64
 Context:           default
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
coder@35449d588c56:/workspaces/coder$

Doesn't work if there is no main branch

docker run -it --rm -e GIT_URL=https://github.com/vercel/next.js ghcr.io/coder/envbuilder:0.0.2
envbuilder - Build development environments from repositories in a container
#1: 📦 Cloning https://github.com/vercel/next.js to /workspaces/next.js...
Error: clone "https://github.com/vercel/next.js": couldn't find remote ref "refs/heads/main"
error: clone "https://github.com/vercel/next.js": couldn't find remote ref "refs/heads/main"

Populate vscode specific configurations

The devcontainer spec has a section that covers the support of VS Code specific properties. I am not sure how reasonable the customizations.vscode.settings are for the remote since those are stored in a local user session. (In the case of coder could be in a different volume). This might actually be a better issue for them to solve on that side then. If that is your opinion please feel free to close this issue and I will move it to the coder project.

Confusion regarding cloning repositories

can understand that currently, Coder’s purpose with devcontainers is to clone the team’s repository and set up the environment following the .devcontainer settings, hence cloning the .git folder as well. However, some dev container templates, such as the typescript-node one, are maintained in subdirectories under https://github.com/devcontainers/templates. How should these be handled? If cloning these devcontainer templates, it seems it should not include the .git folder.

envbuilder support for build-time secrets is undocumented

There doesn't seem to be any way to pass build-time secrets when using envbuilder, leaving me with no straight-forward option to include any Dockerfile with commands similar to:

RUN --mount=type=secret,id=test-token poetry config http-basic.test-token-pypi gitlab-ci-token $(cat /run/secrets/test-token)

I'd be willing to drop a patch for this, but I'm curious to hear opinions on whether or not this is something envbuilder can support without violating its design principles.

Trying to build from Gitea / Forgejo fails with `authentication required`

Hello everyone,

I have a public repository on an installation of Forgejo (a fork of Gitea), and if I try to use envbuilder to build from the URL of this repository I get the following output under Coder:

envbuilder - Build development environments from repositories in a container
#1: 📦 Cloning https://git.1in9.net/raider/wroofauth to /workspaces/wroofauth...
Failed to clone repository: clone "https://git.1in9.net/raider/wroofauth": authentication required
Falling back to the default image...
#2: Deleting filesystem...
#2: 🏗️ Building image...
[...]

Cloning with a normal git client works fine. Adding the ".git" at the end of the URL has no effect.

Feel free to reproduce this using my repo at https://git.1in9.net/raider/wroofauth

Kind regards,
Kevin

No cache hits with envbuilder despite setting CACHE_REPO

I am using coder with envbuilder but I seem to be getting 0 cache hits even when restarting the same workspace with 0 changes. I have configured CACHE_REPO to use an empty AWS ECR image repository and I see evbuilder successfully checking for caches and, supposedly, pushing layers as well:

#1: 📦 Cloned repository! [46.039909689s]
#2: Deleting filesystem...
#2: 🏗️ Building image...
#2: Using dockerignore file: /workspaces/project/.dockerignore
#2: Retrieving image manifest python:3.9-slim
#2: Retrieving image python:3.9-slim from registry index.docker.io
#2: Built cross stage deps: map[]
#2: Retrieving image manifest python:3.9-slim
#2: Returning cached image manifest
#2: Executing 0 build triggers
#2: Building stage 'python:3.9-slim' [idx: '0', base-idx: '-1']
#2: Checking for cached layer MYREMOTERPEO/image:d00475f8d556bc445027bebba8d27c1a4efb356acab9e5ecc8aa4b18719d9f6f...
...
#2: Taking snapshot of files...
#2: Pushing layer MYREMOTERPEO/image:d00475f8d556bc445027bebba8d27c1a4efb356acab9e5ecc8aa4b18719d9f6f to cache now
...

Every single Dockerfile step is ran even though I seem to be pushing layers to the cache repo every image build. Am I missing anything?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.