From 2abd00edb47d726f2bb3bceff80f9fc861083ab8 Mon Sep 17 00:00:00 2001 From: Bryan Phelps Date: Mon, 7 Feb 2022 18:23:28 +0000 Subject: [PATCH 01/13] Initial dockerfile + make step --- Makefile | 7 ++++++- deploy/images/coderv2docker/Dockerfile | 6 ++++++ 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 deploy/images/coderv2docker/Dockerfile diff --git a/Makefile b/Makefile index 4e2fa04949ce5..d5dc6f81ba06a 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,8 @@ bin/coderd: bin/provisionerd: mkdir -p bin - go build -o bin/provisionerd cmd/provisionerd/main.go +# TODO: Looks like this is broken? +# go build -o bin/provisionerd cmd/provisionerd/main.go .PHONY: bin/provisionerd build: site/out bin/coderd bin/provisionerd @@ -22,6 +23,10 @@ database/generate: fmt/sql database/dump.sql database/query.sql cd database && gofmt -w -r 'Queries -> sqlQuerier' *.go .PHONY: database/generate +docker/build: build + docker build --network=host -t todo/v2/test -f deploy/images/coderv2docker/Dockerfile . +.PHONY: docker/build + fmt/prettier: @echo "--- prettier" # Avoid writing files in CI to reduce file write activity diff --git a/deploy/images/coderv2docker/Dockerfile b/deploy/images/coderv2docker/Dockerfile new file mode 100644 index 0000000000000..635611bc92b9e --- /dev/null +++ b/deploy/images/coderv2docker/Dockerfile @@ -0,0 +1,6 @@ +FROM postgres:14.0 + +COPY bin/coderd /coderd +RUN chmod +x /coderd + +ENTRYPOINT ["/coderd"] From 277e60249c35d2ef3a6bf9c1b7c83cfd8a80d76b Mon Sep 17 00:00:00 2001 From: Bryan Phelps Date: Mon, 7 Feb 2022 18:24:55 +0000 Subject: [PATCH 02/13] Add comment for provisionerd --- deploy/images/coderv2docker/Dockerfile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/deploy/images/coderv2docker/Dockerfile b/deploy/images/coderv2docker/Dockerfile index 635611bc92b9e..159f3a3a3af09 100644 --- a/deploy/images/coderv2docker/Dockerfile +++ b/deploy/images/coderv2docker/Dockerfile @@ -3,4 +3,9 @@ FROM postgres:14.0 COPY bin/coderd /coderd RUN chmod +x /coderd +# Once `provisionerd` is available, we'll also need that binary +# COPY bin/provisionerd /provisionerd +# RUN chmod +x /provisionerd + +# TODO: Do we need a specific port for coderd? Default is 3000 ENTRYPOINT ["/coderd"] From f97ea9af0bbf5a91938a81d507c0ff143d7d060d Mon Sep 17 00:00:00 2001 From: Bryan Phelps Date: Mon, 7 Feb 2022 18:28:41 +0000 Subject: [PATCH 03/13] Dockerfile tweaks --- deploy/images/coderv2docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/images/coderv2docker/Dockerfile b/deploy/images/coderv2docker/Dockerfile index 159f3a3a3af09..243a4c1148868 100644 --- a/deploy/images/coderv2docker/Dockerfile +++ b/deploy/images/coderv2docker/Dockerfile @@ -7,5 +7,5 @@ RUN chmod +x /coderd # COPY bin/provisionerd /provisionerd # RUN chmod +x /provisionerd -# TODO: Do we need a specific port for coderd? Default is 3000 ENTRYPOINT ["/coderd"] +CMD ["--address", "127.0.0.1:8000"] \ No newline at end of file From 704ed1045c61c903ff676ef49b0d4903d1339e13 Mon Sep 17 00:00:00 2001 From: Bryan Phelps Date: Mon, 7 Feb 2022 22:41:22 +0000 Subject: [PATCH 04/13] Remove init script for now --- Makefile | 4 ++-- {deploy/images/coderv2docker => images/coder}/Dockerfile | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) rename {deploy/images/coderv2docker => images/coder}/Dockerfile (76%) diff --git a/Makefile b/Makefile index d5dc6f81ba06a..8399438e1508a 100644 --- a/Makefile +++ b/Makefile @@ -23,8 +23,8 @@ database/generate: fmt/sql database/dump.sql database/query.sql cd database && gofmt -w -r 'Queries -> sqlQuerier' *.go .PHONY: database/generate -docker/build: build - docker build --network=host -t todo/v2/test -f deploy/images/coderv2docker/Dockerfile . +docker/image/coder: build + docker build --network=host -t todo/v2/test -f images/coder/Dockerfile ./bin .PHONY: docker/build fmt/prettier: diff --git a/deploy/images/coderv2docker/Dockerfile b/images/coder/Dockerfile similarity index 76% rename from deploy/images/coderv2docker/Dockerfile rename to images/coder/Dockerfile index 243a4c1148868..8d8bb35d24862 100644 --- a/deploy/images/coderv2docker/Dockerfile +++ b/images/coder/Dockerfile @@ -1,6 +1,6 @@ FROM postgres:14.0 -COPY bin/coderd /coderd +COPY coderd /coderd RUN chmod +x /coderd # Once `provisionerd` is available, we'll also need that binary @@ -8,4 +8,4 @@ RUN chmod +x /coderd # RUN chmod +x /provisionerd ENTRYPOINT ["/coderd"] -CMD ["--address", "127.0.0.1:8000"] \ No newline at end of file +CMD ["--address", "127.0.0.1:8000"] From 1eb62aa356e4719cc05138aed332bb617e3e2240 Mon Sep 17 00:00:00 2001 From: Bryan Phelps Date: Mon, 7 Feb 2022 22:42:16 +0000 Subject: [PATCH 05/13] Fix missed docker/build -> docker/image/coder --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 8399438e1508a..ec390b35d5627 100644 --- a/Makefile +++ b/Makefile @@ -25,7 +25,7 @@ database/generate: fmt/sql database/dump.sql database/query.sql docker/image/coder: build docker build --network=host -t todo/v2/test -f images/coder/Dockerfile ./bin -.PHONY: docker/build +.PHONY: docker/image/coder fmt/prettier: @echo "--- prettier" From 584a231b3d3f20191fe1e9d862f1cdc0549de041 Mon Sep 17 00:00:00 2001 From: Bryan Phelps Date: Mon, 7 Feb 2022 22:55:05 +0000 Subject: [PATCH 06/13] Tweak tag name, add SHA version --- Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index ec390b35d5627..fe422c87bb0b9 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,5 @@ +VERSION:=$(shell git rev-parse HEAD) + bin/coderd: mkdir -p bin go build -o bin/coderd cmd/coderd/main.go @@ -24,7 +26,7 @@ database/generate: fmt/sql database/dump.sql database/query.sql .PHONY: database/generate docker/image/coder: build - docker build --network=host -t todo/v2/test -f images/coder/Dockerfile ./bin + docker build --network=host -t ci/coder:$(VERSION) -t ci/coder -f images/coder/Dockerfile ./bin .PHONY: docker/image/coder fmt/prettier: From b9d8d45c20d3c4f074fca244ca7ae980bfdba187 Mon Sep 17 00:00:00 2001 From: Jonathan Yu Date: Mon, 7 Feb 2022 22:59:54 +0000 Subject: [PATCH 07/13] add run script --- Makefile | 15 ++++++++++----- images/coder/Dockerfile | 12 +++++++----- images/coder/run.sh | 30 ++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 10 deletions(-) create mode 100755 images/coder/run.sh diff --git a/Makefile b/Makefile index 359f40ad09600..f070ae35b6c9c 100644 --- a/Makefile +++ b/Makefile @@ -1,11 +1,15 @@ -VERSION:=$(shell git rev-parse HEAD) - bin/coderd: mkdir -p bin go build -o bin/coderd cmd/coderd/main.go .PHONY: bin/coderd -build: site/out bin/coderd +bin/provisionerd: + mkdir -p bin +# TODO: Looks like this is broken? +# go build -o bin/provisionerd cmd/provisionerd/main.go +.PHONY: bin/provisionerd + +build: site/out bin/coderd bin/provisionerd .PHONY: build # Runs migrations to output a dump of the database. @@ -20,8 +24,9 @@ database/generate: fmt/sql database/dump.sql database/query.sql .PHONY: database/generate docker/image/coder: build - docker build --network=host -t ci/coder:$(VERSION) -t ci/coder -f images/coder/Dockerfile ./bin -.PHONY: docker/image/coder + cp ./images/coder/run.sh ./bin + docker build --network=host -t us-docker.pkg.dev/coder-blacktriangle-dev/ci/coder:latest -f images/coder/Dockerfile ./bin +.PHONY: docker/build fmt/prettier: @echo "--- prettier" diff --git a/images/coder/Dockerfile b/images/coder/Dockerfile index 8d8bb35d24862..382ca7e195b8a 100644 --- a/images/coder/Dockerfile +++ b/images/coder/Dockerfile @@ -1,11 +1,13 @@ -FROM postgres:14.0 +FROM registry.access.redhat.com/ubi8/ubi:latest -COPY coderd /coderd -RUN chmod +x /coderd +COPY coderd /coder/coderd +RUN chmod +x /coder/coderd + +COPY run.sh /coder/run.sh +RUN chmod +x /coder/run.sh # Once `provisionerd` is available, we'll also need that binary # COPY bin/provisionerd /provisionerd # RUN chmod +x /provisionerd -ENTRYPOINT ["/coderd"] -CMD ["--address", "127.0.0.1:8000"] +ENTRYPOINT ["/coder/run.sh"] diff --git a/images/coder/run.sh b/images/coder/run.sh new file mode 100755 index 0000000000000..411e83b2b7dcf --- /dev/null +++ b/images/coder/run.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + +set -euo pipefail + +EMAIL=${EMAIL:-admin@coder.com} +USERNAME=${USERNAME:-admin} +ORGANIZATION=${ORGANIZATION:-ACME-Corp} +PASSWORD=${PASSWORD:-password} +PORT=${PORT:-8000} + +# Helper to create an initial user +function create_initial_user() { + # TODO: We need to wait for `coderd` to spin up - + # need to replace with a deterministic strategy + sleep 5s + + curl -X POST \ + -d '{"email": "'"$EMAIL"'", "username": "'"$USERNAME"'", "organization": "'"$ORGANIZATION"'", "password": "'"$PASSWORD"'"}' \ + -H 'Content-Type:application/json' \ + "http://localhost:$PORT/api/v2/user" +} + +# This is a way to run multiple processes in parallel, and have Ctrl-C work correctly +# to kill both at the same time. For more details, see: +# https://stackoverflow.com/questions/3004811/how-do-you-run-multiple-programs-in-parallel-from-a-bash-script +( + trap 'kill 0' SIGINT + create_initial_user & + /coder/coderd --address=":$PORT" +) From bed54b213c7b5b2d8542af13fba101284e6b1451 Mon Sep 17 00:00:00 2001 From: Bryan Phelps Date: Mon, 7 Feb 2022 23:04:34 +0000 Subject: [PATCH 08/13] Remove bin/provisionerd from Makefile --- Makefile | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/Makefile b/Makefile index f070ae35b6c9c..7afdc25f4f206 100644 --- a/Makefile +++ b/Makefile @@ -3,13 +3,7 @@ bin/coderd: go build -o bin/coderd cmd/coderd/main.go .PHONY: bin/coderd -bin/provisionerd: - mkdir -p bin -# TODO: Looks like this is broken? -# go build -o bin/provisionerd cmd/provisionerd/main.go -.PHONY: bin/provisionerd - -build: site/out bin/coderd bin/provisionerd +build: site/out bin/coderd .PHONY: build # Runs migrations to output a dump of the database. From e392b3c1c607decfcce8a5d5fb032246c7222d62 Mon Sep 17 00:00:00 2001 From: Jonathan Yu Date: Mon, 7 Feb 2022 23:07:34 +0000 Subject: [PATCH 09/13] try this --- .github/workflows/coder.yaml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/.github/workflows/coder.yaml b/.github/workflows/coder.yaml index 86dda496008c5..14e0b2b689a5f 100644 --- a/.github/workflows/coder.yaml +++ b/.github/workflows/coder.yaml @@ -189,6 +189,22 @@ jobs: flags: unittest-go-${{ matrix.os }} fail_ci_if_error: true + deploy: + name: "deploy" + runs-on: ubuntu-latest + #if: github.event_name == 'pull_request' + steps: + - uses: actions/checkout@v2 + + - uses: actions/setup-node@v2 + with: + node-version: "14" + + - run: yarn install + working-directory: site + + - run: make docker/image/coder + test-js: name: "test/js" runs-on: ubuntu-latest From 222049e7c55d4aa88c1b3b187e3b11e4ebf6ace1 Mon Sep 17 00:00:00 2001 From: Jonathan Yu Date: Mon, 7 Feb 2022 23:10:42 +0000 Subject: [PATCH 10/13] setup go --- .github/workflows/coder.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/coder.yaml b/.github/workflows/coder.yaml index 14e0b2b689a5f..dde6db77eefa7 100644 --- a/.github/workflows/coder.yaml +++ b/.github/workflows/coder.yaml @@ -203,6 +203,10 @@ jobs: - run: yarn install working-directory: site + - uses: actions/setup-go@v2 + with: + go-version: "^1.17" + - run: make docker/image/coder test-js: From ee69dc57eadc5662746096e76ad55c043952f499 Mon Sep 17 00:00:00 2001 From: Jonathan Yu Date: Mon, 7 Feb 2022 23:16:39 +0000 Subject: [PATCH 11/13] push image --- .github/workflows/coder.yaml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/workflows/coder.yaml b/.github/workflows/coder.yaml index dde6db77eefa7..e2219b62b9fae 100644 --- a/.github/workflows/coder.yaml +++ b/.github/workflows/coder.yaml @@ -196,6 +196,18 @@ jobs: steps: - uses: actions/checkout@v2 + - name: Authenticate to Google Cloud + uses: google-github-actions/auth@v0 + with: + workload_identity_provider: projects/477254869654/locations/global/workloadIdentityPools/github/providers/github + service_account: github@coder-ci.iam.gserviceaccount.com + + - name: Set up Google Cloud SDK + uses: google-github-actions/setup-gcloud@v0 + + - name: Configure Docker for Google Artifact Registry + run: gcloud auth configure-docker us-docker.pkg.dev + - uses: actions/setup-node@v2 with: node-version: "14" @@ -209,6 +221,8 @@ jobs: - run: make docker/image/coder + - run: docker push us-docker.pkg.dev/coder-blacktriangle-dev/ci/coder:latest + test-js: name: "test/js" runs-on: ubuntu-latest From 5153c06ff884fdaf3dba8a963f9d09a3fb7038dd Mon Sep 17 00:00:00 2001 From: Jonathan Yu Date: Mon, 7 Feb 2022 23:18:41 +0000 Subject: [PATCH 12/13] add permissions --- .github/workflows/coder.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/coder.yaml b/.github/workflows/coder.yaml index e2219b62b9fae..efb303c9af93b 100644 --- a/.github/workflows/coder.yaml +++ b/.github/workflows/coder.yaml @@ -193,6 +193,9 @@ jobs: name: "deploy" runs-on: ubuntu-latest #if: github.event_name == 'pull_request' + permissions: + contents: read + id-token: write steps: - uses: actions/checkout@v2 From 25ec9ec758b71bde16d245bd98fee68ce6ed44ae Mon Sep 17 00:00:00 2001 From: Jonathan Yu Date: Mon, 7 Feb 2022 23:20:37 +0000 Subject: [PATCH 13/13] style fmt --- .github/workflows/coder.yaml | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/.github/workflows/coder.yaml b/.github/workflows/coder.yaml index efb303c9af93b..e9b81bcf7215c 100644 --- a/.github/workflows/coder.yaml +++ b/.github/workflows/coder.yaml @@ -88,14 +88,9 @@ jobs: - run: "make --output-sync -j gen" - run: ./scripts/check_unstaged.sh - style: - name: "style/${{ matrix.style }}" + style-fmt: + name: "style/fmt" runs-on: ubuntu-latest - strategy: - matrix: - style: - - fmt - fail-fast: false steps: - name: Checkout uses: actions/checkout@v2 @@ -116,8 +111,8 @@ jobs: run: yarn install working-directory: site - - name: "make ${{ matrix.style }}" - run: "make --output-sync -j ${{ matrix.style }}" + - name: "make fmt" + run: "make --output-sync -j fmt" test-go: name: "test/go"