From ac97ce6f97b3854d65532fc1a59379a6636f5a99 Mon Sep 17 00:00:00 2001 From: Ammar Bandukwala Date: Tue, 2 Aug 2022 04:29:19 +0000 Subject: [PATCH 01/19] Add dogfood image Before, we were using a separate dogfood image in coder/m that was difficult to update. --- dogfood/Dockerfile | 310 ++++++++++++++++++ dogfood/Makefile | 9 + .../files/etc/apt/apt.conf.d/80-no-recommends | 6 + dogfood/files/etc/apt/apt.conf.d/80-retries | 1 + dogfood/files/etc/apt/preferences.d/docker | 20 ++ .../files/etc/apt/preferences.d/github-cli | 8 + .../files/etc/apt/preferences.d/google-chrome | 16 + .../files/etc/apt/preferences.d/google-cloud | 19 ++ dogfood/files/etc/apt/preferences.d/hashicorp | 14 + dogfood/files/etc/apt/preferences.d/kubic | 32 ++ .../etc/apt/preferences.d/microsoft-edge | 12 + .../files/etc/apt/preferences.d/nodesource | 9 + .../files/etc/apt/preferences.d/postgresql | 14 + dogfood/files/etc/apt/preferences.d/ppa | 19 ++ dogfood/files/etc/apt/preferences.d/yarnpkg | 9 + dogfood/files/etc/apt/sources.list | 3 + .../files/etc/apt/sources.list.d/docker.list | 1 + .../etc/apt/sources.list.d/github-cli.list | 1 + .../etc/apt/sources.list.d/google-chrome.list | 1 + .../etc/apt/sources.list.d/google-cloud.list | 1 + .../etc/apt/sources.list.d/hashicorp.list | 1 + .../files/etc/apt/sources.list.d/kubic.list | 1 + .../apt/sources.list.d/microsoft-edge.list | 1 + .../etc/apt/sources.list.d/nodesource.list | 1 + .../etc/apt/sources.list.d/postgresql.list | 1 + dogfood/files/etc/apt/sources.list.d/ppa.list | 2 + .../etc/apt/sources.list.d/security.list | 1 + .../files/etc/apt/sources.list.d/yarnpkg.list | 1 + dogfood/files/etc/default/google-chrome | 4 + dogfood/files/etc/default/microsoft-edge-beta | 4 + dogfood/files/etc/docker/daemon.json | 3 + dogfood/files/etc/gitconfig | 4 + dogfood/files/etc/sudoers.d/nopasswd | 1 + dogfood/files/usr/share/keyrings/ansible.gpg | Bin 0 -> 1132 bytes dogfood/files/usr/share/keyrings/docker.gpg | Bin 0 -> 2760 bytes .../files/usr/share/keyrings/github-cli.gpg | Bin 0 -> 1795 bytes .../usr/share/keyrings/google-chrome.gpg | Bin 0 -> 9024 bytes .../files/usr/share/keyrings/google-cloud.gpg | Bin 0 -> 2537 bytes .../files/usr/share/keyrings/hashicorp.gpg | Bin 0 -> 2301 bytes dogfood/files/usr/share/keyrings/kubic.gpg | Bin 0 -> 723 bytes .../files/usr/share/keyrings/microsoft.gpg | Bin 0 -> 641 bytes dogfood/files/usr/share/keyrings/neovim.gpg | Bin 0 -> 1134 bytes .../files/usr/share/keyrings/nodesource.gpg | Bin 0 -> 2206 bytes .../files/usr/share/keyrings/postgresql.gpg | Bin 0 -> 3494 bytes dogfood/files/usr/share/keyrings/yarnpkg.gpg | Bin 0 -> 11460 bytes dogfood/main.tf | 6 +- 46 files changed, 533 insertions(+), 3 deletions(-) create mode 100644 dogfood/Dockerfile create mode 100644 dogfood/Makefile create mode 100644 dogfood/files/etc/apt/apt.conf.d/80-no-recommends create mode 100644 dogfood/files/etc/apt/apt.conf.d/80-retries create mode 100644 dogfood/files/etc/apt/preferences.d/docker create mode 100644 dogfood/files/etc/apt/preferences.d/github-cli create mode 100644 dogfood/files/etc/apt/preferences.d/google-chrome create mode 100644 dogfood/files/etc/apt/preferences.d/google-cloud create mode 100644 dogfood/files/etc/apt/preferences.d/hashicorp create mode 100644 dogfood/files/etc/apt/preferences.d/kubic create mode 100644 dogfood/files/etc/apt/preferences.d/microsoft-edge create mode 100644 dogfood/files/etc/apt/preferences.d/nodesource create mode 100644 dogfood/files/etc/apt/preferences.d/postgresql create mode 100644 dogfood/files/etc/apt/preferences.d/ppa create mode 100644 dogfood/files/etc/apt/preferences.d/yarnpkg create mode 100644 dogfood/files/etc/apt/sources.list create mode 100644 dogfood/files/etc/apt/sources.list.d/docker.list create mode 100644 dogfood/files/etc/apt/sources.list.d/github-cli.list create mode 100644 dogfood/files/etc/apt/sources.list.d/google-chrome.list create mode 100644 dogfood/files/etc/apt/sources.list.d/google-cloud.list create mode 100644 dogfood/files/etc/apt/sources.list.d/hashicorp.list create mode 100644 dogfood/files/etc/apt/sources.list.d/kubic.list create mode 100644 dogfood/files/etc/apt/sources.list.d/microsoft-edge.list create mode 100644 dogfood/files/etc/apt/sources.list.d/nodesource.list create mode 100644 dogfood/files/etc/apt/sources.list.d/postgresql.list create mode 100644 dogfood/files/etc/apt/sources.list.d/ppa.list create mode 100644 dogfood/files/etc/apt/sources.list.d/security.list create mode 100644 dogfood/files/etc/apt/sources.list.d/yarnpkg.list create mode 100644 dogfood/files/etc/default/google-chrome create mode 100644 dogfood/files/etc/default/microsoft-edge-beta create mode 100644 dogfood/files/etc/docker/daemon.json create mode 100644 dogfood/files/etc/gitconfig create mode 100644 dogfood/files/etc/sudoers.d/nopasswd create mode 100644 dogfood/files/usr/share/keyrings/ansible.gpg create mode 100644 dogfood/files/usr/share/keyrings/docker.gpg create mode 100644 dogfood/files/usr/share/keyrings/github-cli.gpg create mode 100644 dogfood/files/usr/share/keyrings/google-chrome.gpg create mode 100644 dogfood/files/usr/share/keyrings/google-cloud.gpg create mode 100644 dogfood/files/usr/share/keyrings/hashicorp.gpg create mode 100644 dogfood/files/usr/share/keyrings/kubic.gpg create mode 100644 dogfood/files/usr/share/keyrings/microsoft.gpg create mode 100644 dogfood/files/usr/share/keyrings/neovim.gpg create mode 100644 dogfood/files/usr/share/keyrings/nodesource.gpg create mode 100644 dogfood/files/usr/share/keyrings/postgresql.gpg create mode 100644 dogfood/files/usr/share/keyrings/yarnpkg.gpg diff --git a/dogfood/Dockerfile b/dogfood/Dockerfile new file mode 100644 index 0000000000000..d9e479e0f80e7 --- /dev/null +++ b/dogfood/Dockerfile @@ -0,0 +1,310 @@ +FROM rust:slim AS rust-utils +# Install rust helper programs +# ENV CARGO_NET_GIT_FETCH_WITH_CLI=true +env CARGO_INSTALL_ROOT=/tmp/ +RUN cargo install exa bat ripgrep typos-cli + +FROM ubuntu AS go + +RUN apt-get update && apt-get install --yes curl gcc +# Install Go manually, so that we can control the version +ARG GOBORING_VERSION=1.18b7 +RUN mkdir --parents /usr/local/go /usr/local/goboring + +# Boring Go is needed to build FIPS-compliant binaries. +RUN curl --silent --show-error --location \ + "https://storage.googleapis.com/go-boringcrypto/go${GOBORING_VERSION}.linux-amd64.tar.gz" \ + -o /usr/local/goboring.tar.gz + +RUN tar --extract --gzip --directory=/usr/local/goboring --file=/usr/local/goboring.tar.gz --strip-components=1 && \ + ln -s /usr/local/goboring/bin/go /usr/local/bin/go + +# Install Go utilities. +ARG GOPATH="/tmp/" +RUN mkdir --parents "$GOPATH" && \ + # moq for Go tests. + go install github.com/matryer/moq@v0.2.3 && \ + # swag for Swagger doc generation + go install github.com/swaggo/swag/cmd/swag@v1.7.4 && \ + # go-swagger tool to generate the go coder api client + go install github.com/go-swagger/go-swagger/cmd/swagger@v0.28.0 && \ + # goimports for updating imports + go install golang.org/x/tools/cmd/goimports@v0.1.7 && \ + # protoc-gen-go is needed to build sysbox from source + go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.26 && \ + # drpc support for v2 + go install storj.io/drpc/cmd/protoc-gen-go-drpc@v0.0.26 && \ + # migrate for migration support for v2 + go install github.com/golang-migrate/migrate/v4/cmd/migrate@v4.15.1 && \ + # goreleaser for compiling v2 binaries + go install github.com/goreleaser/goreleaser@v1.6.1 && \ + # Install the latest version of gopls for editors that support + # the language server protocol + go install golang.org/x/tools/gopls@latest && \ + # gotestsum makes test output more readable + go install gotest.tools/gotestsum@v1.7.0 && \ + # goveralls collects code coverage metrics from tests + # and sends to Coveralls + go install github.com/mattn/goveralls@v0.0.11 && \ + # kind for running Kubernetes-in-Docker, needed for tests + go install sigs.k8s.io/kind@v0.10.0 && \ + # helm-docs generates our Helm README based on a template and the + # charts and values files + go install github.com/norwoodj/helm-docs/cmd/helm-docs@v1.5.0 && \ + # sqlc for Go code generation + go install github.com/kyleconroy/sqlc/cmd/sqlc@v1.10.0 && \ + # gcr-cleaner-cli used by CI to prune unused images + go install github.com/sethvargo/gcr-cleaner/cmd/gcr-cleaner-cli@v0.5.1 && \ + # ruleguard for checking custom rules, without needing to run all of + # golangci-lint. Check the go.mod in the release of golangci-lint that + # we're using for the version of go-critic that it embeds, then check + # the version of ruleguard in go-critic for that tag. + go install github.com/quasilyte/go-ruleguard/cmd/ruleguard@v0.3.13 && \ + # go-fuzz for fuzzy testing. they don't publish releases so we rely on latest. + go install github.com/dvyukov/go-fuzz/go-fuzz@latest && \ + go install github.com/dvyukov/go-fuzz/go-fuzz-build@latest && \ + # go-releaser for building 'fat binaries' that work cross-platform + go install github.com/goreleaser/goreleaser@v1.6.1 + +# Ubuntu 20.04 LTS (Focal Fossa) +FROM ubuntu:focal + +SHELL ["/bin/bash", "-c"] + +# Updated certificates are necessary to use the teraswitch mirror. +# This must be ran before copying in configuration since the config replaces +# the default mirror with teraswitch. +RUN apt-get update && apt-get install --yes ca-certificates + +COPY files / + +# Install packages from apt repositories +ARG DEBIAN_FRONTEND="noninteractive" + +RUN apt-get update --quiet && apt-get install --yes \ + apt-transport-https \ + apt-utils \ + bash \ + bash-completion \ + bats \ + bind9-dnsutils \ + build-essential \ + ca-certificates \ + crypto-policies \ + curl \ + fd-find \ + file \ + git \ + gnupg \ + graphviz \ + htop \ + httpie \ + inetutils-tools \ + iproute2 \ + iputils-ping \ + iputils-tracepath \ + jq \ + language-pack-en \ + less \ + lsb-release \ + man \ + meld \ + net-tools \ + openjdk-11-jdk-headless \ + openssh-server \ + openssl \ + pkg-config \ + protobuf-compiler \ + python3 \ + python3-pip \ + rsync \ + shellcheck \ + strace \ + sudo \ + tcptraceroute \ + termshark \ + traceroute \ + vim \ + wget \ + xauth \ + zip \ + ncdu \ + cargo \ + asciinema \ + zsh \ + ansible \ + neovim \ + google-cloud-sdk \ + google-cloud-sdk-datastore-emulator \ + kubectl \ + postgresql-11 \ + containerd.io \ + docker-ce \ + docker-ce-cli \ + packer \ + terraform \ + buildah \ + conmon \ + containernetworking-plugins \ + crun \ + podman \ + skopeo \ + gh && \ + # Delete package cache to avoid consuming space in layer + apt-get clean && \ + # Configure FIPS-compliant policies + update-crypto-policies --set FIPS + +# Install frontend utilities +RUN apt-get update && \ + # Node.js (from nodesource) and Yarn (from yarnpkg) + apt-get install --yes --quiet \ + nodejs yarn \ + # Install browsers for e2e testing + google-chrome-stable microsoft-edge-beta && \ + # Pre-install system dependencies that Playwright needs. npx doesn't work here + # for some reason. See https://github.com/microsoft/playwright-cli/issues/136 + npm i -g playwright@1.19.1 && playwright install-deps + +# Ensure PostgreSQL binaries are in the users $PATH. +RUN update-alternatives --install /usr/local/bin/initdb initdb /usr/lib/postgresql/11/bin/initdb 100 && \ + update-alternatives --install /usr/local/bin/postgres postgres /usr/lib/postgresql/11/bin/postgres 100 + +# Create links for injected dependencies +RUN ln --symbolic /var/tmp/coder/coder-cli/coder /usr/local/bin/coder && \ + ln --symbolic /var/tmp/coder/code-server/bin/code-server /usr/local/bin/code-server + +# Disable the PostgreSQL systemd service. +# Coder uses a custom timescale container to test the database instead. +RUN systemctl disable \ + postgresql + +# Configure systemd services for CVMs +RUN systemctl enable \ + docker \ + ssh + +# Install tools with published releases, where that is the +# preferred/recommended installation method. +ARG CLOUD_SQL_PROXY_VERSION=1.26.0 \ + DIVE_VERSION=0.10.0 \ + DOCKER_GCR_VERSION=2.1.0 \ + GOLANGCI_LINT_VERSION=1.44.2 \ + GRYPE_VERSION=0.24.0 \ + HELM_VERSION=3.8.0 \ + KUBE_LINTER_VERSION=0.2.5 \ + KUBECTX_VERSION=0.9.4 \ + STRIPE_VERSION=1.7.4 \ + TERRAGRUNT_VERSION=0.34.1 \ + TRIVY_VERSION=0.23.0 + +# cloud_sql_proxy, for connecting to cloudsql instances +# the upstream go.mod prevents this from being installed with go install +RUN curl --silent --show-error --location --output /usr/local/bin/cloud_sql_proxy "https://storage.googleapis.com/cloudsql-proxy/v${CLOUD_SQL_PROXY_VERSION}/cloud_sql_proxy.linux.amd64" && \ + chmod a=rx /usr/local/bin/cloud_sql_proxy && \ + # dive for scanning image layer utilization metrics in CI + curl --silent --show-error --location "https://github.com/wagoodman/dive/releases/download/v${DIVE_VERSION}/dive_${DIVE_VERSION}_linux_amd64.tar.gz" | \ + tar --extract --gzip --directory=/usr/local/bin --file=- dive && \ + # docker-credential-gcr is a Docker credential helper for pushing/pulling + # images from Google Container Registry and Artifact Registry + curl --silent --show-error --location "https://github.com/GoogleCloudPlatform/docker-credential-gcr/releases/download/v${DOCKER_GCR_VERSION}/docker-credential-gcr_linux_amd64-${DOCKER_GCR_VERSION}.tar.gz" | \ + tar --extract --gzip --directory=/usr/local/bin --file=- docker-credential-gcr && \ + # golangci-lint performs static code analysis for our Go code + curl --silent --show-error --location "https://github.com/golangci/golangci-lint/releases/download/v${GOLANGCI_LINT_VERSION}/golangci-lint-${GOLANGCI_LINT_VERSION}-linux-amd64.tar.gz" | \ + tar --extract --gzip --directory=/usr/local/bin --file=- --strip-components=1 "golangci-lint-${GOLANGCI_LINT_VERSION}-linux-amd64/golangci-lint" && \ + # Anchore Grype for scanning container images for security issues + curl --silent --show-error --location "https://github.com/anchore/grype/releases/download/v${GRYPE_VERSION}/grype_${GRYPE_VERSION}_linux_amd64.tar.gz" | \ + tar --extract --gzip --directory=/usr/local/bin --file=- grype && \ + # Helm is necessary for deploying Coder + curl --silent --show-error --location "https://get.helm.sh/helm-v${HELM_VERSION}-linux-amd64.tar.gz" | \ + tar --extract --gzip --directory=/usr/local/bin --file=- --strip-components=1 linux-amd64/helm && \ + # kube-linter for linting Kubernetes objects, including those + # that Helm generates from our charts + curl --silent --show-error --location "https://github.com/stackrox/kube-linter/releases/download/${KUBE_LINTER_VERSION}/kube-linter-linux.tar.gz" | \ + tar --extract --gzip --directory=/usr/local/bin --file=- kube-linter && \ + # kubens and kubectx for managing Kubernetes namespaces and contexts + curl --silent --show-error --location "https://github.com/ahmetb/kubectx/releases/download/v${KUBECTX_VERSION}/kubectx_v${KUBECTX_VERSION}_linux_x86_64.tar.gz" | \ + tar --extract --gzip --directory=/usr/local/bin --file=- kubectx && \ + curl --silent --show-error --location "https://github.com/ahmetb/kubectx/releases/download/v${KUBECTX_VERSION}/kubens_v${KUBECTX_VERSION}_linux_x86_64.tar.gz" | \ + tar --extract --gzip --directory=/usr/local/bin --file=- kubens && \ + # stripe for coder.com billing API + curl --silent --show-error --location "https://github.com/stripe/stripe-cli/releases/download/v${STRIPE_VERSION}/stripe_${STRIPE_VERSION}_linux_x86_64.tar.gz" | \ + tar --extract --gzip --directory=/usr/local/bin --file=- stripe && \ + # terragrunt for running Terraform and Terragrunt files + curl --silent --show-error --location --output /usr/local/bin/terragrunt "https://github.com/gruntwork-io/terragrunt/releases/download/v${TERRAGRUNT_VERSION}/terragrunt_linux_amd64" && \ + chmod a=rx /usr/local/bin/terragrunt && \ + # AquaSec Trivy for scanning container images for security issues + curl --silent --show-error --location "https://github.com/aquasecurity/trivy/releases/download/v${TRIVY_VERSION}/trivy_${TRIVY_VERSION}_Linux-64bit.tar.gz" | \ + tar --extract --gzip --directory=/usr/local/bin --file=- trivy + +# Add Vercel globally. We can't install it in packages.json, because it +# includes Go files which make golangci-lint unhappy. +RUN yarn global add --prefix=/usr/local \ + vercel \ + typescript \ + typescript-language-server && \ + yarn cache clean + +# We use yq during "make deploy" to manually substitute out fields in +# our helm values.yaml file. See https://github.com/helm/helm/issues/3141 +# +# TODO: update to 4.x, we can't do this now because it included breaking +# changes (yq w doesn't work anymore) +# RUN curl --silent --show-error --location "https://github.com/mikefarah/yq/releases/download/v4.9.0/yq_linux_amd64.tar.gz" | \ +# tar --extract --gzip --directory=/usr/local/bin --file=- ./yq_linux_amd64 && \ +# mv /usr/local/bin/yq_linux_amd64 /usr/local/bin/yq + +RUN curl --silent --show-error --location --output /usr/local/bin/yq "https://github.com/mikefarah/yq/releases/download/3.3.0/yq_linux_amd64" && \ + chmod a=rx /usr/local/bin/yq + +# Install GoLand. +RUN mkdir --parents /usr/local/goland && \ + curl --silent --show-error --location "https://download.jetbrains.com/go/goland-2021.2.tar.gz" | \ + tar --extract --gzip --directory=/usr/local/goland --file=- --strip-components=1 && \ + ln --symbolic /usr/local/goland/bin/goland.sh /usr/local/bin/goland + +# Install Antlrv4, needed to generate paramlang lexer/parser +RUN curl --silent --show-error --location --output /usr/local/lib/antlr-4.9.2-complete.jar "https://www.antlr.org/download/antlr-4.9.2-complete.jar" +ENV CLASSPATH="/usr/local/lib/antlr-4.9.2-complete.jar:${PATH}" + +# Add coder user and allow use of docker/sudo +RUN useradd coder \ + --create-home \ + --shell=/bin/bash \ + --groups=docker \ + --uid=1000 \ + --user-group + +# Adjust OpenSSH config +RUN echo "PermitUserEnvironment yes" >>/etc/ssh/sshd_config && \ + echo "X11Forwarding yes" >>/etc/ssh/sshd_config && \ + echo "X11UseLocalhost no" >>/etc/ssh/sshd_config + +# We avoid copying the extracted directory since COPY slows to minutes when there +# are a lot of small files. +COPY --from=go /usr/local/goboring.tar.gz /usr/local/goboring.tar.gz +RUN mkdir /usr/local/goboring && \ + tar --extract --gzip --directory=/usr/local/goboring --file=/usr/local/goboring.tar.gz --strip-components=1 && \ + ln -s /usr/local/goboring/bin/go /usr/local/bin/go +COPY --from=go /tmp/bin /usr/local/bin + +COPY --from=rust-utils /tmp/bin /usr/local/bin +RUN mv /usr/local/bin/exa /usr/local/bin/ls +RUN mv /usr/local/bin/bat /usr/local/bin/cat + +USER coder + +# Ensure go bins are in the 'coder' user's path. Note that no go bins are +# installed in this docker file, as they'd be mounted over by the persistent +# home volume. +ENV PATH="/home/coder/go/bin:${PATH}" + +# This setting prevents Go from using the public checksum database for +# our module path prefixes. It is required because these are in private +# repositories that require authentication. +# +# For details, see: https://golang.org/ref/mod#private-modules +ENV GOPRIVATE="coder.com,cdr.dev,go.coder.com,github.com/cdr,github.com/coder" + +# Increase memory allocation to NodeJS +ENV NODE_OPTIONS="--max-old-space-size=8192" diff --git a/dogfood/Makefile b/dogfood/Makefile new file mode 100644 index 0000000000000..b4bea299f7d84 --- /dev/null +++ b/dogfood/Makefile @@ -0,0 +1,9 @@ +.PHONY: docker-build docker-push + +build_tag=codercom/oss-dogfood + +docker-build: + DOCKER_BUILDKIT=1 docker build . -t ${build_tag} + +docker-push: docker-build + docker push ${build_tag} diff --git a/dogfood/files/etc/apt/apt.conf.d/80-no-recommends b/dogfood/files/etc/apt/apt.conf.d/80-no-recommends new file mode 100644 index 0000000000000..8cb79c96386c4 --- /dev/null +++ b/dogfood/files/etc/apt/apt.conf.d/80-no-recommends @@ -0,0 +1,6 @@ +// Do not install recommended packages by default +APT::Install-Recommends "0"; + +// Do not install suggested packages by default (this is already +// the Ubuntu default) +APT::Install-Suggests "0"; diff --git a/dogfood/files/etc/apt/apt.conf.d/80-retries b/dogfood/files/etc/apt/apt.conf.d/80-retries new file mode 100644 index 0000000000000..d7ee5185258ec --- /dev/null +++ b/dogfood/files/etc/apt/apt.conf.d/80-retries @@ -0,0 +1 @@ +APT::Acquire::Retries "3"; diff --git a/dogfood/files/etc/apt/preferences.d/docker b/dogfood/files/etc/apt/preferences.d/docker new file mode 100644 index 0000000000000..1569e645f5607 --- /dev/null +++ b/dogfood/files/etc/apt/preferences.d/docker @@ -0,0 +1,20 @@ +# Ignore all packages from this repository by default +Package: * +Pin: origin download.docker.com +Pin-Priority: 1 + +# Docker Community Edition +Package: docker-ce +Pin: origin download.docker.com +Pin-Priority: 500 + +# Docker command-line tool +Package: docker-ce-cli +Pin: origin download.docker.com +Pin-Priority: 500 + +# containerd runtime +Package: containerd.io +Pin: origin download.docker.com +Pin: version 1.5.11-1 +Pin-Priority: 500 diff --git a/dogfood/files/etc/apt/preferences.d/github-cli b/dogfood/files/etc/apt/preferences.d/github-cli new file mode 100644 index 0000000000000..d2dce9f5f3097 --- /dev/null +++ b/dogfood/files/etc/apt/preferences.d/github-cli @@ -0,0 +1,8 @@ +# Ignore all packages from this repository by default +Package: * +Pin: origin cli.github.com +Pin-Priority: 1 + +Package: gh +Pin: origin cli.github.com +Pin-Priority: 500 diff --git a/dogfood/files/etc/apt/preferences.d/google-chrome b/dogfood/files/etc/apt/preferences.d/google-chrome new file mode 100644 index 0000000000000..4551ec390ff20 --- /dev/null +++ b/dogfood/files/etc/apt/preferences.d/google-chrome @@ -0,0 +1,16 @@ +# Ignore all packages from this repository by default +Package: * +Pin: origin dl.google.com +Pin-Priority: 1 + +Package: google-chrome-stable +Pin: origin dl.google.com +Pin-Priority: 500 + +Package: google-chrome-beta +Pin: origin dl.google.com +Pin-Priority: 500 + +Package: google-chrome-unstable +Pin: origin dl.google.com +Pin-Priority: 500 diff --git a/dogfood/files/etc/apt/preferences.d/google-cloud b/dogfood/files/etc/apt/preferences.d/google-cloud new file mode 100644 index 0000000000000..637b0e9bb3c51 --- /dev/null +++ b/dogfood/files/etc/apt/preferences.d/google-cloud @@ -0,0 +1,19 @@ +# Ignore all packages from this repository by default +Package: * +Pin: origin packages.cloud.google.com +Pin-Priority: 1 + +# Google Cloud SDK for gcloud and gsutil CLI tools +Package: google-cloud-sdk +Pin: origin packages.cloud.google.com +Pin-Priority: 500 + +# Datastore emulator for working with the licensor +Package: google-cloud-sdk-datastore-emulator +Pin: origin packages.cloud.google.com +Pin-Priority: 500 + +# Kubectl for working with Kubernetes (GKE) +Package: kubectl +Pin: origin packages.cloud.google.com +Pin-Priority: 500 diff --git a/dogfood/files/etc/apt/preferences.d/hashicorp b/dogfood/files/etc/apt/preferences.d/hashicorp new file mode 100644 index 0000000000000..4323f331cc722 --- /dev/null +++ b/dogfood/files/etc/apt/preferences.d/hashicorp @@ -0,0 +1,14 @@ +# Ignore all packages from this repository by default +Package: * +Pin: origin apt.releases.hashicorp.com +Pin-Priority: 1 + +# Packer for creating virtual machine disk images +Package: packer +Pin: origin apt.releases.hashicorp.com +Pin-Priority: 500 + +# Terraform for managing infrastructure +Package: terraform +Pin: origin apt.releases.hashicorp.com +Pin-Priority: 500 diff --git a/dogfood/files/etc/apt/preferences.d/kubic b/dogfood/files/etc/apt/preferences.d/kubic new file mode 100644 index 0000000000000..e6cf704680eab --- /dev/null +++ b/dogfood/files/etc/apt/preferences.d/kubic @@ -0,0 +1,32 @@ +# Ignore all packages from this repository by default +Package: * +Pin: origin download.opensuse.org +Pin-Priority: 1 + +# Dependencies of podman and buildah +Package: conmon +Pin: origin download.opensuse.org +Pin-Priority: 500 + +Package: containernetworking-plugins +Pin: origin download.opensuse.org +Pin-Priority: 500 + +Package: crun +Pin: origin download.opensuse.org +Pin-Priority: 500 + +# Buildah for building container images +Package: buildah +Pin: origin download.opensuse.org +Pin-Priority: 500 + +# Podman as a Docker alternative for running containers +Package: podman +Pin: origin download.opensuse.org +Pin-Priority: 500 + +# Skopeo for viewing container configuration and copying images +Package: skopeo +Pin: origin download.opensuse.org +Pin-Priority: 500 diff --git a/dogfood/files/etc/apt/preferences.d/microsoft-edge b/dogfood/files/etc/apt/preferences.d/microsoft-edge new file mode 100644 index 0000000000000..2441961adac38 --- /dev/null +++ b/dogfood/files/etc/apt/preferences.d/microsoft-edge @@ -0,0 +1,12 @@ +# Ignore all packages from this repository by default +Package: * +Pin: origin packages.microsoft.com +Pin-Priority: 1 + +Package: microsoft-edge-beta +Pin: origin packages.microsoft.com +Pin-Priority: 500 + +Package: microsoft-edge-dev +Pin: origin packages.microsoft.com +Pin-Priority: 500 diff --git a/dogfood/files/etc/apt/preferences.d/nodesource b/dogfood/files/etc/apt/preferences.d/nodesource new file mode 100644 index 0000000000000..de55d5553411e --- /dev/null +++ b/dogfood/files/etc/apt/preferences.d/nodesource @@ -0,0 +1,9 @@ +# Ignore all packages from this repository by default +Package: * +Pin: origin deb.nodesource.com +Pin-Priority: 1 + +# Node.js for building the frontend +Package: nodejs +Pin: origin deb.nodesource.com +Pin-Priority: 500 diff --git a/dogfood/files/etc/apt/preferences.d/postgresql b/dogfood/files/etc/apt/preferences.d/postgresql new file mode 100644 index 0000000000000..5d3a76b0694ce --- /dev/null +++ b/dogfood/files/etc/apt/preferences.d/postgresql @@ -0,0 +1,14 @@ +# Ignore all packages from this repository by default +Package: * +Pin: origin apt.postgresql.org +Pin-Priority: 1 + +# PostgreSQL server for local development +Package: postgresql-11 +Pin: origin apt.postgresql.org +Pin-Priority: 500 + +# PostgreSQL client +Package: postgresql-client-11 +Pin: origin apt.postgresql.org +Pin-Priority: 500 diff --git a/dogfood/files/etc/apt/preferences.d/ppa b/dogfood/files/etc/apt/preferences.d/ppa new file mode 100644 index 0000000000000..1dc9da8f9fffc --- /dev/null +++ b/dogfood/files/etc/apt/preferences.d/ppa @@ -0,0 +1,19 @@ +# Ignore all packages from this repository by default +Package: * +Pin: origin ppa.launchpad.net +Pin-Priority: 1 + +# Ansible +Package: ansible-base +Pin: origin ppa.launchpad.net +Pin-Priority: 500 + +# Neovim +Package: neovim +Pin: origin ppa.launchpad.net +Pin-Priority: 500 + +# Neovim Runtime +Package: neovim-runtime +Pin: origin ppa.launchpad.net +Pin-Priority: 500 diff --git a/dogfood/files/etc/apt/preferences.d/yarnpkg b/dogfood/files/etc/apt/preferences.d/yarnpkg new file mode 100644 index 0000000000000..7237fcad5c356 --- /dev/null +++ b/dogfood/files/etc/apt/preferences.d/yarnpkg @@ -0,0 +1,9 @@ +# Ignore all packages from this repository by default +Package: * +Pin: origin dl.yarnpkg.com +Pin-Priority: 1 + +# Yarn for managing Node.js packages +Package: yarn +Pin: origin dl.yarnpkg.com +Pin-Priority: 500 diff --git a/dogfood/files/etc/apt/sources.list b/dogfood/files/etc/apt/sources.list new file mode 100644 index 0000000000000..f717d44b63489 --- /dev/null +++ b/dogfood/files/etc/apt/sources.list @@ -0,0 +1,3 @@ +deb http://mirror.pit.teraswitch.com/ubuntu/ focal main restricted universe +deb http://mirror.pit.teraswitch.com/ubuntu/ focal-updates main restricted universe +deb http://mirror.pit.teraswitch.com/ubuntu/ focal-backports main restricted universe diff --git a/dogfood/files/etc/apt/sources.list.d/docker.list b/dogfood/files/etc/apt/sources.list.d/docker.list new file mode 100644 index 0000000000000..256f965403842 --- /dev/null +++ b/dogfood/files/etc/apt/sources.list.d/docker.list @@ -0,0 +1 @@ +deb [signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu focal stable diff --git a/dogfood/files/etc/apt/sources.list.d/github-cli.list b/dogfood/files/etc/apt/sources.list.d/github-cli.list new file mode 100644 index 0000000000000..3d2c5ee43db37 --- /dev/null +++ b/dogfood/files/etc/apt/sources.list.d/github-cli.list @@ -0,0 +1 @@ +deb [signed-by=/usr/share/keyrings/github-cli.gpg] https://cli.github.com/packages stable main diff --git a/dogfood/files/etc/apt/sources.list.d/google-chrome.list b/dogfood/files/etc/apt/sources.list.d/google-chrome.list new file mode 100644 index 0000000000000..8dd71926f26df --- /dev/null +++ b/dogfood/files/etc/apt/sources.list.d/google-chrome.list @@ -0,0 +1 @@ +deb [signed-by=/usr/share/keyrings/google-chrome.gpg] https://dl.google.com/linux/chrome/deb/ stable main diff --git a/dogfood/files/etc/apt/sources.list.d/google-cloud.list b/dogfood/files/etc/apt/sources.list.d/google-cloud.list new file mode 100644 index 0000000000000..24df98effea28 --- /dev/null +++ b/dogfood/files/etc/apt/sources.list.d/google-cloud.list @@ -0,0 +1 @@ +deb [signed-by=/usr/share/keyrings/google-cloud.gpg] https://packages.cloud.google.com/apt cloud-sdk main diff --git a/dogfood/files/etc/apt/sources.list.d/hashicorp.list b/dogfood/files/etc/apt/sources.list.d/hashicorp.list new file mode 100644 index 0000000000000..b8f005e09f6bc --- /dev/null +++ b/dogfood/files/etc/apt/sources.list.d/hashicorp.list @@ -0,0 +1 @@ +deb [signed-by=/usr/share/keyrings/hashicorp.gpg] https://apt.releases.hashicorp.com focal main diff --git a/dogfood/files/etc/apt/sources.list.d/kubic.list b/dogfood/files/etc/apt/sources.list.d/kubic.list new file mode 100644 index 0000000000000..e91654220a178 --- /dev/null +++ b/dogfood/files/etc/apt/sources.list.d/kubic.list @@ -0,0 +1 @@ +deb [signed-by=/usr/share/keyrings/kubic.gpg] https://plug-mirror.rcac.purdue.edu/opensuse/repositories/devel%3A/kubic%3A/libcontainers%3A/stable/xUbuntu_20.04/ / diff --git a/dogfood/files/etc/apt/sources.list.d/microsoft-edge.list b/dogfood/files/etc/apt/sources.list.d/microsoft-edge.list new file mode 100644 index 0000000000000..f0c036f79a5c5 --- /dev/null +++ b/dogfood/files/etc/apt/sources.list.d/microsoft-edge.list @@ -0,0 +1 @@ +deb [signed-by=/usr/share/keyrings/microsoft.gpg] https://packages.microsoft.com/repos/edge stable main diff --git a/dogfood/files/etc/apt/sources.list.d/nodesource.list b/dogfood/files/etc/apt/sources.list.d/nodesource.list new file mode 100644 index 0000000000000..02b870094dd1e --- /dev/null +++ b/dogfood/files/etc/apt/sources.list.d/nodesource.list @@ -0,0 +1 @@ +deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_14.x focal main diff --git a/dogfood/files/etc/apt/sources.list.d/postgresql.list b/dogfood/files/etc/apt/sources.list.d/postgresql.list new file mode 100644 index 0000000000000..ffa56625fac68 --- /dev/null +++ b/dogfood/files/etc/apt/sources.list.d/postgresql.list @@ -0,0 +1 @@ +deb [signed-by=/usr/share/keyrings/postgresql.gpg] https://apt.postgresql.org/pub/repos/apt focal-pgdg main diff --git a/dogfood/files/etc/apt/sources.list.d/ppa.list b/dogfood/files/etc/apt/sources.list.d/ppa.list new file mode 100644 index 0000000000000..e817c20915cb1 --- /dev/null +++ b/dogfood/files/etc/apt/sources.list.d/ppa.list @@ -0,0 +1,2 @@ +deb [signed-by=/usr/share/keyrings/ansible.gpg] https://ppa.launchpadcontent.net/ansible/ansible/ubuntu focal main +deb [signed-by=/usr/share/keyrings/neovim.gpg] https://ppa.launchpadcontent.net/neovim-ppa/stable/ubuntu focal main diff --git a/dogfood/files/etc/apt/sources.list.d/security.list b/dogfood/files/etc/apt/sources.list.d/security.list new file mode 100644 index 0000000000000..38a566b0932b4 --- /dev/null +++ b/dogfood/files/etc/apt/sources.list.d/security.list @@ -0,0 +1 @@ +deb http://security.ubuntu.com/ubuntu/ focal-security main restricted universe diff --git a/dogfood/files/etc/apt/sources.list.d/yarnpkg.list b/dogfood/files/etc/apt/sources.list.d/yarnpkg.list new file mode 100644 index 0000000000000..ada8a06f7b9b2 --- /dev/null +++ b/dogfood/files/etc/apt/sources.list.d/yarnpkg.list @@ -0,0 +1 @@ +deb [signed-by=/usr/share/keyrings/yarnpkg.gpg] https://dl.yarnpkg.com/debian/ stable main diff --git a/dogfood/files/etc/default/google-chrome b/dogfood/files/etc/default/google-chrome new file mode 100644 index 0000000000000..8620a6054380a --- /dev/null +++ b/dogfood/files/etc/default/google-chrome @@ -0,0 +1,4 @@ +# These settings are required to prevent the postinst script +# from modifying /etc/apt/sources.list.d +repo_add_once="false" +repo_reenable_on_distupgrade="false" diff --git a/dogfood/files/etc/default/microsoft-edge-beta b/dogfood/files/etc/default/microsoft-edge-beta new file mode 100644 index 0000000000000..8620a6054380a --- /dev/null +++ b/dogfood/files/etc/default/microsoft-edge-beta @@ -0,0 +1,4 @@ +# These settings are required to prevent the postinst script +# from modifying /etc/apt/sources.list.d +repo_add_once="false" +repo_reenable_on_distupgrade="false" diff --git a/dogfood/files/etc/docker/daemon.json b/dogfood/files/etc/docker/daemon.json new file mode 100644 index 0000000000000..8e19eeeec15b8 --- /dev/null +++ b/dogfood/files/etc/docker/daemon.json @@ -0,0 +1,3 @@ +{ + "registry-mirrors": ["https://mirror.gcr.io"] +} diff --git a/dogfood/files/etc/gitconfig b/dogfood/files/etc/gitconfig new file mode 100644 index 0000000000000..439b78690c5ca --- /dev/null +++ b/dogfood/files/etc/gitconfig @@ -0,0 +1,4 @@ +# This is required to force SSH authentication for go mod. +# See: https://golang.org/ref/mod#private-module-repo-auth +[url "git@github.com:"] + insteadOf = https://github.com/ diff --git a/dogfood/files/etc/sudoers.d/nopasswd b/dogfood/files/etc/sudoers.d/nopasswd new file mode 100644 index 0000000000000..3283f4455630c --- /dev/null +++ b/dogfood/files/etc/sudoers.d/nopasswd @@ -0,0 +1 @@ +coder ALL=(ALL) NOPASSWD:ALL diff --git a/dogfood/files/usr/share/keyrings/ansible.gpg b/dogfood/files/usr/share/keyrings/ansible.gpg new file mode 100644 index 0000000000000000000000000000000000000000..1731dd2b2fbd7ce251ad1b2a53f7df432f40ba60 GIT binary patch literal 1132 zcmV-y1e5#5!A%5Hmu)Zs5CF<8#y2sBavX?)67L*C?G(=zXq7e@f6Q6auif(;)LZod zJu=nD{xl;si4m1N>|mHxbs=?y#0s%cDFcoXWGuiOPPcBqgGtD(O&)chTnV3O_vTKp zpxjBtjm2l2l)Co$f!&#ZUZx+mr|if+XiX)imRGOaN{wFzF5qf*MMMWR-!r_9)GT8n z9-skmj@@r=PeO_JMTAEoMON^=mLX&{p9PrVXI@k~>Eol0;1Wto(EAo0j!ob9JLZv$ zz{J9ga|)i0iWfLtD7Lfx2pcwfa@C_G1MjY`Lz6(awYWneCUowKp!;(c|LRENDJuV@}J^R10+K>bBPj0 zCcgwPd7G4u#uSnVISiLz>kj2k1P55=&JfyHmd(KqdSL^A$;r(RK;Xi~)S07(S1`Hx zluz`k@CoV<@SfH`dGGH;tTOf>%sFH)iWJCW^83^D=M##Vb)#E2kuO`HOHZMJPPY`) z#rAzJVN>~#YhaCw6qRIee66;(wewmmFwLqfI#xM7Uyj4+Unp~Z9?dnFy^Ep&k9z1@*%FAsQAQg_q^ zZA|2Ax}@E=%BDtciOPD+c(7l!ho;1z9^v?+=mW{bPK7@|z`h3!+#5lH>mC;e zAZw{ca%yxWx*r-8+j=+B_0_#@aD^lrQGYcRci@}xrY_B1bATdXsNhK*{R`_5@Snvl z%@^X(#j_I0E(`LpP@0t-%adrgYf0nv{mkf^m#uEZhfVP0mH+ABM$$9YYGhc7uU_zb zLfwi01ixZuFJvRqgLiooRMNo7-bQbSnxUT8je#Ug{poZ{T)y9ck!Lmb=J$T22%i1(LzY!TWhePHBrdo)WGPY3)h z7C#hPORz)L!-36Ks;a^piJc|8(PTGnSad{%|NB2-0#?2=Ng~I(^p!6?WEWF|1MY|_ yf9W@2In1 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 Vq3;xM{p)VR8fciw*Mont`WIgEFnRz0 literal 0 HcmV?d00001 diff --git a/dogfood/files/usr/share/keyrings/google-chrome.gpg b/dogfood/files/usr/share/keyrings/google-chrome.gpg new file mode 100644 index 0000000000000000000000000000000000000000..acdb00db55c946dffc3836808dcca7b3ce99fa1a GIT binary patch literal 9024 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 Y<7{+(-Dpk!o?NydT^uyO8A|Q{0-*Qf$^ZZW literal 0 HcmV?d00001 diff --git a/dogfood/files/usr/share/keyrings/google-cloud.gpg b/dogfood/files/usr/share/keyrings/google-cloud.gpg new file mode 100644 index 0000000000000000000000000000000000000000..3f0b5a850ba73c4b6d7fe5b206030ee9d0b4da46 GIT binary patch literal 2537 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 A$N&HU literal 0 HcmV?d00001 diff --git a/dogfood/files/usr/share/keyrings/nodesource.gpg b/dogfood/files/usr/share/keyrings/nodesource.gpg new file mode 100644 index 0000000000000000000000000000000000000000..4f3ec4ed793b397c15b9cba46c45cac6315dcc62 GIT binary patch literal 2206 zcmV;P2x0e`0u2OHn zGb2pT0FAJHnQ9LOen#@%F5|z&XQSYC`H_RzY$X#LGtDigk9KP_M=>ehkUPDXTu;B(V3ubAZ5m-sKU^kff*x~ zZ`Cm{)>!{y$rAt(0RRECA5L#%Wm9i;a${v6JZErcKyGhjWpi(Ja${vKV{dIfi2^tT z69EDMA_W3dnMyIxRsH;0PMkg$clS^{YTdUXw+PSWLNu=D0z2yO(O z_L)x-nN}nt%nnbK_KGzgha(e!#vOg#< zDV3pDqn*)=Wy$Atk^4+1CMYk-4;}Z1C+o<{-7M|O=%x6uUWppkB0=VIvbXoDGIP-N zq-m;2y#N%yudo`pz(4g63%S%092Zt2H^_rSC8@r4%OuDm1PL6`jbBvv&sE@N5AEzZy|9o#Den98Na`3}LhG;}Feurl9!o_En{3W5c`HWwC zvSc;MaJ?9&zEC5mh?eByw7&Ppa*vpR17SkBOr1P`{D)bx#<9JOtw?%LWi~MSqr{D{ zNjSP_F1-9@r_I*qq@)UvjrYg^>X!8+E} zMwR_59u1pS&LPPvZk6#cM&0>l7ErehWFIuqaG#&4Ss;8^akyF#TUGg3cgWiK74@o9!uIFErdKdjjITX|v%3 zUsg#~(bn4CnDl)bGku-5sX_4x@XYO}ba)la7GdHy$Y9)s2Tbpjc2)mqec%8wK)oeH zzf1hLr$%$7#PmA*m|+E-0|z^d;WJU%OJiZtIE&iROSaP6d~Rq$Tta(Ayl`-c<|&nfrwbw=OFZp*dq>L1av);N3wE+aeWA@@&(c_& zN2PxK=Q;j}EHb^6r7iLOnpdDXB(?$@3;+rV5EfOSt7unZfP>Hw0GwhUD@R{&F_wRZ1~2By zI%84XB+wDNIiGz3sLe0y#;2Uq6F0%fi_`)PxM*cuSB7^?5x?|R&E{jBF|dT)L!2P; z)Q-A^MBsW8jj{Dwp5ygBlBh3#1Opok&DJ21f%;F@xWJMBAp3s0;Zqb`x1+?$GV+=x zPki{BDcOI}xZGi?mk1f9TeS^apSix1lpg*3{%l*6d2`~ur^_x;oamqi;R^bh#Q5dw=z ze+M&hc}-v|&mj?`V^PuBYxBa+-Mi+nnag z9eQ6NssJ;!_Nnu}AX&>9GxCH~+^$})WE9M0H`$0SR}BL08A;u-$u3-jNK{Z@SnEeO03#02lO?o~>rC*DA4s+0G#EbI&sEr!W(OV literal 0 HcmV?d00001 diff --git a/dogfood/files/usr/share/keyrings/postgresql.gpg b/dogfood/files/usr/share/keyrings/postgresql.gpg new file mode 100644 index 0000000000000000000000000000000000000000..afa15cb1087de3aaad67e6d95989eb21b7501377 GIT binary patch literal 3494 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 E2dI&$`2YX_ literal 0 HcmV?d00001 diff --git a/dogfood/main.tf b/dogfood/main.tf index b8837ca71e415..6a9f578e3fafe 100644 --- a/dogfood/main.tf +++ b/dogfood/main.tf @@ -23,7 +23,7 @@ provider "coder" { data "coder_workspace" "me" { } -resource "coder_agent" "main" { +resource "coder_agent" "dev" { arch = "amd64" os = "linux" startup_script = < Date: Tue, 2 Aug 2022 17:38:58 +0000 Subject: [PATCH 02/19] Add CI --- .github/workflows/dogfood.yaml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 .github/workflows/dogfood.yaml diff --git a/.github/workflows/dogfood.yaml b/.github/workflows/dogfood.yaml new file mode 100644 index 0000000000000..924fe4d9f7fbb --- /dev/null +++ b/.github/workflows/dogfood.yaml @@ -0,0 +1,24 @@ +name: coder + +on: + push: + branches: + - main + tags: + - "*" + paths: + - "dogfood/**" + pull_request: + paths: + - "dogfood/**" + workflow_dispatch: +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: build + run: | + cd dogfood + make build From fad0c021b3083afd1aa55948bd7ba343ae44a3f0 Mon Sep 17 00:00:00 2001 From: Ammar Bandukwala Date: Tue, 2 Aug 2022 17:39:24 +0000 Subject: [PATCH 03/19] fixup! Add CI --- .github/workflows/dogfood.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dogfood.yaml b/.github/workflows/dogfood.yaml index 924fe4d9f7fbb..05dc0c5135f41 100644 --- a/.github/workflows/dogfood.yaml +++ b/.github/workflows/dogfood.yaml @@ -1,4 +1,4 @@ -name: coder +name: dogfood on: push: From b98a06462207b5fd652cd8d091279fdf4c6ed3c1 Mon Sep 17 00:00:00 2001 From: Ammar Bandukwala Date: Tue, 2 Aug 2022 17:41:36 +0000 Subject: [PATCH 04/19] fixup! Add CI --- .github/workflows/dogfood.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dogfood.yaml b/.github/workflows/dogfood.yaml index 05dc0c5135f41..09a00b0097d2d 100644 --- a/.github/workflows/dogfood.yaml +++ b/.github/workflows/dogfood.yaml @@ -21,4 +21,4 @@ jobs: - name: build run: | cd dogfood - make build + make build-docker From 38cbb81588f65a825629bbb0cd1192de5095c872 Mon Sep 17 00:00:00 2001 From: Ammar Bandukwala Date: Tue, 2 Aug 2022 17:46:12 +0000 Subject: [PATCH 05/19] fixup! Add CI --- .github/workflows/dogfood.yaml | 7 +++++++ dogfood/Makefile | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dogfood.yaml b/.github/workflows/dogfood.yaml index 09a00b0097d2d..dea67ef70597c 100644 --- a/.github/workflows/dogfood.yaml +++ b/.github/workflows/dogfood.yaml @@ -18,6 +18,13 @@ jobs: steps: - name: Checkout uses: actions/checkout@v2 + - name: Cache Docker + id: cache-docker + uses: actions/cache@v3 + with: + path: | + /var/lib/docker + key: ${{ hashFiles('dogfood/**') }} - name: build run: | cd dogfood diff --git a/dogfood/Makefile b/dogfood/Makefile index b4bea299f7d84..ecf0ce5d6f346 100644 --- a/dogfood/Makefile +++ b/dogfood/Makefile @@ -1,6 +1,7 @@ .PHONY: docker-build docker-push -build_tag=codercom/oss-dogfood +branch=$(shell git rev-parse --abbrev-ref HEAD) +build_tag=codercom/oss-dogfood:${branch} docker-build: DOCKER_BUILDKIT=1 docker build . -t ${build_tag} From 45db16828ccb013a87bd9b1c7bdb5c2c80e8506e Mon Sep 17 00:00:00 2001 From: Ammar Bandukwala Date: Tue, 2 Aug 2022 17:47:47 +0000 Subject: [PATCH 06/19] fixup! Add CI --- .github/workflows/dogfood.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dogfood.yaml b/.github/workflows/dogfood.yaml index dea67ef70597c..7f3460669c919 100644 --- a/.github/workflows/dogfood.yaml +++ b/.github/workflows/dogfood.yaml @@ -28,4 +28,4 @@ jobs: - name: build run: | cd dogfood - make build-docker + make docker-build From 69f5382f47734f592d56df0d0eb23361a1b22cbf Mon Sep 17 00:00:00 2001 From: Ammar Bandukwala Date: Tue, 2 Aug 2022 18:23:15 +0000 Subject: [PATCH 07/19] fixup! Add CI --- .github/workflows/dogfood.yaml | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/.github/workflows/dogfood.yaml b/.github/workflows/dogfood.yaml index 7f3460669c919..dfbd070e9df0d 100644 --- a/.github/workflows/dogfood.yaml +++ b/.github/workflows/dogfood.yaml @@ -13,19 +13,23 @@ on: - "dogfood/**" workflow_dispatch: jobs: - build: + deploy: runs-on: ubuntu-latest steps: - - name: Checkout - uses: actions/checkout@v2 - - name: Cache Docker - id: cache-docker - uses: actions/cache@v3 + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Login to DockerHub + uses: docker/login-action@v2 with: - path: | - /var/lib/docker - key: ${{ hashFiles('dogfood/**') }} - - name: build - run: | - cd dogfood - make docker-build + username: ammarb + password: ${{ secrets.AMMARB_DOCKERHUB }} + - name: Build and push + uses: docker/build-push-action@v3 + with: + context: "{{defaultContext}}:dogfood" + push: true + tags: codercom/oss-dogfood:${GITHUB_REF##*/} + cache-from: type=registry,ref=codercom/oss-dogfood:latest + cache-to: type=inline From e38905fa10aa8b83b3beebe0e0fe1cd23f1fb66c Mon Sep 17 00:00:00 2001 From: Ammar Bandukwala Date: Tue, 2 Aug 2022 18:25:17 +0000 Subject: [PATCH 08/19] fixup! Add CI --- .github/workflows/dogfood.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dogfood.yaml b/.github/workflows/dogfood.yaml index dfbd070e9df0d..4c844a2452af3 100644 --- a/.github/workflows/dogfood.yaml +++ b/.github/workflows/dogfood.yaml @@ -30,6 +30,6 @@ jobs: with: context: "{{defaultContext}}:dogfood" push: true - tags: codercom/oss-dogfood:${GITHUB_REF##*/} + tags: "codercom/oss-dogfood:${GITHUB_REF##*/}" cache-from: type=registry,ref=codercom/oss-dogfood:latest cache-to: type=inline From 32fa9b78e9a270667ec348884c7733a0de859bdf Mon Sep 17 00:00:00 2001 From: Ammar Bandukwala Date: Tue, 2 Aug 2022 19:15:18 +0000 Subject: [PATCH 09/19] fixup! Add CI --- .github/workflows/dogfood.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dogfood.yaml b/.github/workflows/dogfood.yaml index 4c844a2452af3..d033ad992dd86 100644 --- a/.github/workflows/dogfood.yaml +++ b/.github/workflows/dogfood.yaml @@ -23,13 +23,13 @@ jobs: - name: Login to DockerHub uses: docker/login-action@v2 with: - username: ammarb - password: ${{ secrets.AMMARB_DOCKERHUB }} + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Build and push uses: docker/build-push-action@v3 with: context: "{{defaultContext}}:dogfood" push: true - tags: "codercom/oss-dogfood:${GITHUB_REF##*/}" + tags: "codercom/oss-dogfood:${{ env.GITHUB_REF }}" cache-from: type=registry,ref=codercom/oss-dogfood:latest cache-to: type=inline From 6a7619e3c84784db64d75d626ab2cfa25105e324 Mon Sep 17 00:00:00 2001 From: Ammar Bandukwala Date: Tue, 2 Aug 2022 19:17:28 +0000 Subject: [PATCH 10/19] fixup! Add CI --- .github/workflows/dogfood.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dogfood.yaml b/.github/workflows/dogfood.yaml index d033ad992dd86..cd29be9a0313b 100644 --- a/.github/workflows/dogfood.yaml +++ b/.github/workflows/dogfood.yaml @@ -30,6 +30,6 @@ jobs: with: context: "{{defaultContext}}:dogfood" push: true - tags: "codercom/oss-dogfood:${{ env.GITHUB_REF }}" + tags: "codercom/oss-dogfood:${{ github.ref_name }}" cache-from: type=registry,ref=codercom/oss-dogfood:latest cache-to: type=inline From 2aa54b900b4f9377c4272aa0d32e003310efd578 Mon Sep 17 00:00:00 2001 From: Ammar Bandukwala Date: Tue, 2 Aug 2022 19:22:26 +0000 Subject: [PATCH 11/19] fixup! Add CI --- .github/workflows/dogfood.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dogfood.yaml b/.github/workflows/dogfood.yaml index cd29be9a0313b..b57dcdac1f8bd 100644 --- a/.github/workflows/dogfood.yaml +++ b/.github/workflows/dogfood.yaml @@ -16,6 +16,10 @@ jobs: deploy: runs-on: ubuntu-latest steps: + - name: Checkout + uses: actions/checkout@v3 + - run: | + echo "BRANCH_NAME=${GITHUB_REF##*/}" >> $GITHUB_ENV - name: Set up QEMU uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx @@ -30,6 +34,6 @@ jobs: with: context: "{{defaultContext}}:dogfood" push: true - tags: "codercom/oss-dogfood:${{ github.ref_name }}" + tags: "codercom/oss-dogfood:${{ env.BRANCH_NAME }}" cache-from: type=registry,ref=codercom/oss-dogfood:latest cache-to: type=inline From e89abdff17c79c04fd7919dea0fbaeda32aaf1a1 Mon Sep 17 00:00:00 2001 From: Ammar Bandukwala Date: Tue, 2 Aug 2022 19:26:29 +0000 Subject: [PATCH 12/19] fixup! Add CI --- .github/workflows/dogfood.yaml | 3 ++- dogfood/main.tf | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/dogfood.yaml b/.github/workflows/dogfood.yaml index b57dcdac1f8bd..641db28d993bf 100644 --- a/.github/workflows/dogfood.yaml +++ b/.github/workflows/dogfood.yaml @@ -19,7 +19,7 @@ jobs: - name: Checkout uses: actions/checkout@v3 - run: | - echo "BRANCH_NAME=${GITHUB_REF##*/}" >> $GITHUB_ENV + echo "BRANCH_NAME=$( git rev-parse --abbrev-ref HEAD | tr / - )" >> $GITHUB_ENV - name: Set up QEMU uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx @@ -35,5 +35,6 @@ jobs: context: "{{defaultContext}}:dogfood" push: true tags: "codercom/oss-dogfood:${{ env.BRANCH_NAME }}" + tags: "codercom/oss-dogfood" cache-from: type=registry,ref=codercom/oss-dogfood:latest cache-to: type=inline diff --git a/dogfood/main.tf b/dogfood/main.tf index 6a9f578e3fafe..df07b7f119fe0 100644 --- a/dogfood/main.tf +++ b/dogfood/main.tf @@ -51,7 +51,7 @@ resource "docker_volume" "home_volume" { resource "docker_container" "workspace" { count = data.coder_workspace.me.start_count - image = "docker.io/codercom/oss-dogfood:latest" + image = "docker.io/codercom/oss-dogfood:main" # Uses lower() to avoid Docker restriction on container names. name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}" # Hostname makes the shell more user friendly: coder@my-workspace:~$ From 29dad607bea81b6cb377ea2e2d30123c2e79dd05 Mon Sep 17 00:00:00 2001 From: Ammar Bandukwala Date: Tue, 2 Aug 2022 19:27:19 +0000 Subject: [PATCH 13/19] fixup! Add CI --- .github/workflows/dogfood.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/dogfood.yaml b/.github/workflows/dogfood.yaml index 641db28d993bf..88551c8ac16d0 100644 --- a/.github/workflows/dogfood.yaml +++ b/.github/workflows/dogfood.yaml @@ -34,7 +34,8 @@ jobs: with: context: "{{defaultContext}}:dogfood" push: true - tags: "codercom/oss-dogfood:${{ env.BRANCH_NAME }}" - tags: "codercom/oss-dogfood" + tags: + - "codercom/oss-dogfood:${{ env.BRANCH_NAME }}" + - "codercom/oss-dogfood" cache-from: type=registry,ref=codercom/oss-dogfood:latest cache-to: type=inline From 87df58c3ced08d17ae7b51a73cdd10f9cf96347e Mon Sep 17 00:00:00 2001 From: Ammar Bandukwala Date: Tue, 2 Aug 2022 19:29:15 +0000 Subject: [PATCH 14/19] fixup! Add CI --- .github/workflows/dogfood.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/dogfood.yaml b/.github/workflows/dogfood.yaml index 88551c8ac16d0..747f083df0b77 100644 --- a/.github/workflows/dogfood.yaml +++ b/.github/workflows/dogfood.yaml @@ -35,7 +35,6 @@ jobs: context: "{{defaultContext}}:dogfood" push: true tags: - - "codercom/oss-dogfood:${{ env.BRANCH_NAME }}" - - "codercom/oss-dogfood" + - "codercom/oss-dogfood:${{ env.BRANCH_NAME }},codercom/oss-dogfood" cache-from: type=registry,ref=codercom/oss-dogfood:latest cache-to: type=inline From 03f003563252a457daf1a8beabdfbc1bc97624b2 Mon Sep 17 00:00:00 2001 From: Ammar Bandukwala Date: Tue, 2 Aug 2022 19:29:35 +0000 Subject: [PATCH 15/19] fixup! Add CI --- .github/workflows/dogfood.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/dogfood.yaml b/.github/workflows/dogfood.yaml index 747f083df0b77..82497e8b467de 100644 --- a/.github/workflows/dogfood.yaml +++ b/.github/workflows/dogfood.yaml @@ -34,7 +34,6 @@ jobs: with: context: "{{defaultContext}}:dogfood" push: true - tags: - - "codercom/oss-dogfood:${{ env.BRANCH_NAME }},codercom/oss-dogfood" + tags: "codercom/oss-dogfood:${{ env.BRANCH_NAME }},codercom/oss-dogfood:latest" cache-from: type=registry,ref=codercom/oss-dogfood:latest cache-to: type=inline From cb53a9b2e6399b56621e83c838767bfdd7ee18e1 Mon Sep 17 00:00:00 2001 From: Ammar Bandukwala Date: Tue, 2 Aug 2022 20:07:08 +0000 Subject: [PATCH 16/19] fixup! Add CI --- .github/workflows/dogfood.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/dogfood.yaml b/.github/workflows/dogfood.yaml index 82497e8b467de..d21231611f2cd 100644 --- a/.github/workflows/dogfood.yaml +++ b/.github/workflows/dogfood.yaml @@ -20,6 +20,7 @@ jobs: uses: actions/checkout@v3 - run: | echo "BRANCH_NAME=$( git rev-parse --abbrev-ref HEAD | tr / - )" >> $GITHUB_ENV + source $GITHUB_ENV && echo $BRANCH_NAME - name: Set up QEMU uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx From c702cb76186c638e80ea6269a05e3a08978919e8 Mon Sep 17 00:00:00 2001 From: Ammar Bandukwala Date: Tue, 2 Aug 2022 20:09:09 +0000 Subject: [PATCH 17/19] fixup! Add CI --- .github/workflows/dogfood.yaml | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/.github/workflows/dogfood.yaml b/.github/workflows/dogfood.yaml index d21231611f2cd..738106bfd815c 100644 --- a/.github/workflows/dogfood.yaml +++ b/.github/workflows/dogfood.yaml @@ -16,25 +16,28 @@ jobs: deploy: runs-on: ubuntu-latest steps: - - name: Checkout - uses: actions/checkout@v3 - - run: | - echo "BRANCH_NAME=$( git rev-parse --abbrev-ref HEAD | tr / - )" >> $GITHUB_ENV - source $GITHUB_ENV && echo $BRANCH_NAME + steps: + - name: Get branch name + id: branch-name + uses: tj-actions/branch-names@v5.4 + - name: Set up QEMU uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 + - name: Login to DockerHub uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} + - name: Build and push uses: docker/build-push-action@v3 with: context: "{{defaultContext}}:dogfood" push: true - tags: "codercom/oss-dogfood:${{ env.BRANCH_NAME }},codercom/oss-dogfood:latest" + tags: "codercom/oss-dogfood:${{ steps.branch-name.outputs.current_branch }},codercom/oss-dogfood:latest" cache-from: type=registry,ref=codercom/oss-dogfood:latest cache-to: type=inline From 37db991d896be1df5e7aa8daa69c166c393f1104 Mon Sep 17 00:00:00 2001 From: Ammar Bandukwala Date: Tue, 2 Aug 2022 20:09:42 +0000 Subject: [PATCH 18/19] fixup! Add CI --- .github/workflows/dogfood.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/dogfood.yaml b/.github/workflows/dogfood.yaml index 738106bfd815c..9e09e10bce1a9 100644 --- a/.github/workflows/dogfood.yaml +++ b/.github/workflows/dogfood.yaml @@ -15,7 +15,6 @@ on: jobs: deploy: runs-on: ubuntu-latest - steps: steps: - name: Get branch name id: branch-name From 44b37e109ed60322ad9bd052bcee3007113f4e7f Mon Sep 17 00:00:00 2001 From: Ammar Bandukwala Date: Tue, 2 Aug 2022 20:11:13 +0000 Subject: [PATCH 19/19] fixup! Add CI --- .github/workflows/dogfood.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/dogfood.yaml b/.github/workflows/dogfood.yaml index 9e09e10bce1a9..0e0e294934c57 100644 --- a/.github/workflows/dogfood.yaml +++ b/.github/workflows/dogfood.yaml @@ -12,6 +12,7 @@ on: paths: - "dogfood/**" workflow_dispatch: + jobs: deploy: runs-on: ubuntu-latest