diff --git a/.babelrc b/.babelrc index 2a809d0..12bfe37 100644 --- a/.babelrc +++ b/.babelrc @@ -1,6 +1,6 @@ // THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. // -// Generated on 2021-05-20T11:44:59Z by kres 2cb907a-dirty. +// Generated on 2021-05-21T14:46:38Z by kres c09e0bc-dirty. module.exports = { presets: [ diff --git a/.codecov.yml b/.codecov.yml index c33b7ac..704499c 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -1,18 +1,18 @@ # THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. # -# Generated on 2020-08-30T12:21:44Z by kres latest. +# Generated on 2021-05-20T15:00:42Z by kres adb52e5-dirty. codecov: -require_ci_to_pass: false + require_ci_to_pass: false coverage: -status: - project: - default: - target: 50% - threshold: 0.5% - base: auto - if_ci_failed: success - patch: off + status: + project: + default: + target: 50% + threshold: 0.5% + base: auto + if_ci_failed: success + patch: off comment: false diff --git a/.conform.yaml b/.conform.yaml index 761a797..ad78e96 100644 --- a/.conform.yaml +++ b/.conform.yaml @@ -1,6 +1,6 @@ # THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. # -# Generated on 2021-05-07T15:54:59Z by kres a7a00ec. +# Generated on 2021-05-20T19:53:49Z by kres 3ad58bf-dirty. policies: - type: commit @@ -19,7 +19,7 @@ policies: required: true conventional: types: ["chore","docs","perf","refactor","style","test","release"] - scopes: ["*"] + scopes: [".*"] - type: license spec: skipPaths: diff --git a/.dockerignore b/.dockerignore index 50afa5a..6ada0e2 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,6 +1,6 @@ # THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. # -# Generated on 2021-05-20T11:44:59Z by kres 2cb907a-dirty. +# Generated on 2021-05-20T19:53:49Z by kres 3ad58bf-dirty. ** !frontend/src @@ -19,5 +19,6 @@ !go.mod !go.sum !.golangci.yml +!CHANGELOG.md !README.md !.markdownlint.json diff --git a/.drone.yml b/.drone.yml index fc72bc6..033f927 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,7 +1,7 @@ --- # THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. # -# Generated on 2021-03-30T12:47:15Z by kres 3971480. +# Generated on 2021-05-21T14:46:38Z by kres c09e0bc-dirty. kind: pipeline type: kubernetes @@ -268,6 +268,60 @@ steps: depends_on: - push-theila +- name: release-notes + pull: always + image: autonomy/build-container:latest + commands: + - make release-notes + volumes: + - name: outer-docker-socket + path: /var/outer-run + - name: docker-socket + path: /var/run + - name: buildx + path: /root/.docker/buildx + - name: ssh + path: /root/.ssh + when: + event: + - tag + depends_on: + - unit-tests-frontend + - frontend + - unit-tests + - coverage + - theila + - image-theila + - lint + +- name: release + pull: always + image: plugins/github-release + settings: + api_key: + from_secret: github_token + checksum: + - sha256 + - sha512 + draft: true + files: + - _out/* + note: _out/RELEASE_NOTES.md + volumes: + - name: outer-docker-socket + path: /var/outer-run + - name: docker-socket + path: /var/run + - name: buildx + path: /root/.docker/buildx + - name: ssh + path: /root/.ssh + when: + event: + - tag + depends_on: + - release-notes + services: - name: docker image: docker:19.03-dind diff --git a/.jestrc b/.jestrc index ecf3ec9..afa3a57 100644 --- a/.jestrc +++ b/.jestrc @@ -1,6 +1,6 @@ // THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. // -// Generated on 2021-05-20T11:44:59Z by kres 2cb907a-dirty. +// Generated on 2021-05-21T14:46:38Z by kres c09e0bc-dirty. module.exports = { preset: '@vue/cli-plugin-unit-jest/presets/typescript-and-babel/', diff --git a/.kres.yaml b/.kres.yaml index c69e466..b48b5d5 100644 --- a/.kres.yaml +++ b/.kres.yaml @@ -4,6 +4,29 @@ name: build spec: disableImage: true --- +kind: golang.Build +spec: + outputs: + theila-linux-amd64: + GOOS: linux + GOARCH: amd64 + theila-linux-arm64: + GOOS: linux + GOARCH: arm64 + theila-linux-armv7: + GOOS: linux + GOARCH: arm + GOARM: 7 + theila-darwin-amd64: + GOOS: darwin + GOARCH: amd64 + theila-darwin-arm64: + GOOS: darwin + GOARCH: arm64 + theila-windows-amd64.exe: + GOOS: windows + GOARCH: amd64 +--- kind: golang.Protobuf spec: specs: diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..f3a4d86 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,60 @@ +## [theila 0.1.0-alpha.0](https://github.com/talos-systems/theila/releases/tag/v0.1.0-alpha.0) (2021-05-21) + +Welcome to the v0.1.0-alpha.0 release of theila! +*This is a pre-release of theila* + + + +Please try out the release binaries and report any issues at +https://github.com/talos-systems/theila/issues. + +### The First Release + +This is the very first release of the UI for Talos and Sidero. + +The first iteration is only able to run against the management cluster with Sidero installed. +Theila gets credentials from `~/.kube/config` or from the file defined in `KUBECONFIG` +environment variable. The current context is always used. + +For each Sidero Kubernetes cluster it is possible to: +- get the kubeconfig and talosconfig. +- get the list of nodes and pods. + +For each node in the cluster it is possible to: +- get the list of services and their health. + + +### Contributors + +* Artem Chernyshev +* Andrew Rynhard + +### Changes +
18 commits +

+ +* [`33c7d72`](https://github.com/talos-systems/theila/commit/33c7d72822aa6b7431744396c9f16f4df63ac2a5) release(v0.1.0-alpha.0): prepare release +* [`7bde4c8`](https://github.com/talos-systems/theila/commit/7bde4c8c6e16c197578cbb4e037a05d50194958f) fix: cobra command was initialized but not actually used +* [`04624c9`](https://github.com/talos-systems/theila/commit/04624c95cec587ae0b0d8888d95d484ef8d98cfa) feat: support getting Talos and Kubernetes client configs for a cluster +* [`219b9c8`](https://github.com/talos-systems/theila/commit/219b9c8663fe03af65796b0b6299cff5e66b3efc) feat: implement notifications component +* [`f8b19a0`](https://github.com/talos-systems/theila/commit/f8b19a0585e6e19c0e7da4e4afad5bbd264e0029) feat: decouple watch list from the view +* [`2f8c96e`](https://github.com/talos-systems/theila/commit/2f8c96e44012e7bd0db9869eeb90ab48ff41e162) feat: implement appearance settings modal window +* [`de745d6`](https://github.com/talos-systems/theila/commit/de745d6b7170a9c509cc835a8b675a1c788e80f4) feat: implement Talos runtime backend +* [`af69a0d`](https://github.com/talos-systems/theila/commit/af69a0d58906a86974bc7dbec2c09ca9f78b152f) feat: support getting Kubernetes resource through gRPC gateway +* [`2c50010`](https://github.com/talos-systems/theila/commit/2c50010b0d9f7b168354fedd698600d94123c354) feat: implement breadcrumbs component, add support for table header +* [`3fc1e80`](https://github.com/talos-systems/theila/commit/3fc1e808875f6f502cd2657c4548dd886fbf465d) feat: implement nodes view +* [`961e93a`](https://github.com/talos-systems/theila/commit/961e93a4af430eaa9efcd1e2922af8072fe4cf85) feat: implement clusters view +* [`e8248ff`](https://github.com/talos-systems/theila/commit/e8248ffab89633cae8834631e39cf4dce5e4147a) feat: use plain zap instead of SugaredLogger everywhere +* [`81ba93d`](https://github.com/talos-systems/theila/commit/81ba93dffdc37efdde06557a1c63511a7d61b2f2) chore: generate websocket protocol messages using protobuf +* [`37a878d`](https://github.com/talos-systems/theila/commit/37a878dd396b650df8afaf6730f9afe52d35569c) feat: make JS websocket reconnect on connection loss +* [`23b3281`](https://github.com/talos-systems/theila/commit/23b3281f8880800a9084e1c8a74617fcf966c846) feat: use dynamic watcher to allow listing any kinds of resources +* [`16475f5`](https://github.com/talos-systems/theila/commit/16475f51cc9651736213b36c57381b24dcabdc62) feat: implement real time update server on top of web sockets +* [`76b39ae`](https://github.com/talos-systems/theila/commit/76b39ae563d9f09ecac3451389e3d260abdad48d) feat: create hello world Vue app using Kres +* [`baab493`](https://github.com/talos-systems/theila/commit/baab493f155cbd78c2e8af6ce45268c40ef6aeed) Initial commit +

+
+ +### Dependency Changes + +This release has no dependency changes + diff --git a/Dockerfile b/Dockerfile index 7304d6a..5f774e3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ # THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. # -# Generated on 2021-05-20T11:44:59Z by kres 2cb907a-dirty. +# Generated on 2021-05-21T14:46:38Z by kres c09e0bc-dirty. ARG JS_TOOLCHAIN ARG TOOLCHAIN @@ -24,8 +24,9 @@ RUN npm i -g markdownlint-cli@0.23.2 RUN npm i sentences-per-line@0.2.1 WORKDIR /src COPY .markdownlint.json . +COPY ./CHANGELOG.md ./CHANGELOG.md COPY ./README.md ./README.md -RUN markdownlint --ignore "**/node_modules/**" --ignore '**/hack/chglog/**' --rules /node_modules/sentences-per-line/index.js . +RUN markdownlint --ignore "CHANGELOG.md" --ignore "**/node_modules/**" --ignore '**/hack/chglog/**' --rules /node_modules/sentences-per-line/index.js . # collects proto specs FROM scratch AS proto-specs @@ -175,20 +176,68 @@ FROM base AS unit-tests-run ARG TESTPKGS RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg --mount=type=cache,target=/tmp go test -v -covermode=atomic -coverprofile=coverage.txt -coverpkg=${TESTPKGS} -count 1 ${TESTPKGS} -# builds theila -FROM base AS theila-build +# builds theila-darwin-amd64 +FROM base AS theila-darwin-amd64-build COPY --from=generate / / WORKDIR /src/cmd/theila -RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg go build -ldflags "-s -w" -o /theila +RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg GOOS=darwin GOARCH=amd64 go build -ldflags "-s -w" -o /theila-darwin-amd64 + +# builds theila-darwin-arm64 +FROM base AS theila-darwin-arm64-build +COPY --from=generate / / +WORKDIR /src/cmd/theila +RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg GOARCH=arm64 GOOS=darwin go build -ldflags "-s -w" -o /theila-darwin-arm64 + +# builds theila-linux-amd64 +FROM base AS theila-linux-amd64-build +COPY --from=generate / / +WORKDIR /src/cmd/theila +RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -o /theila-linux-amd64 + +# builds theila-linux-arm64 +FROM base AS theila-linux-arm64-build +COPY --from=generate / / +WORKDIR /src/cmd/theila +RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg GOOS=linux GOARCH=arm64 go build -ldflags "-s -w" -o /theila-linux-arm64 + +# builds theila-linux-armv7 +FROM base AS theila-linux-armv7-build +COPY --from=generate / / +WORKDIR /src/cmd/theila +RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg GOOS=linux GOARCH=arm GOARM=7 go build -ldflags "-s -w" -o /theila-linux-armv7 + +# builds theila-windows-amd64.exe +FROM base AS theila-windows-amd64.exe-build +COPY --from=generate / / +WORKDIR /src/cmd/theila +RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg GOOS=windows GOARCH=amd64 go build -ldflags "-s -w" -o /theila-windows-amd64.exe FROM scratch AS unit-tests COPY --from=unit-tests-run /src/coverage.txt /coverage.txt -FROM scratch AS theila -COPY --from=theila-build /theila /theila +FROM scratch AS theila-darwin-amd64 +COPY --from=theila-darwin-amd64-build /theila-darwin-amd64 /theila-darwin-amd64 + +FROM scratch AS theila-darwin-arm64 +COPY --from=theila-darwin-arm64-build /theila-darwin-arm64 /theila-darwin-arm64 + +FROM scratch AS theila-linux-amd64 +COPY --from=theila-linux-amd64-build /theila-linux-amd64 /theila-linux-amd64 + +FROM scratch AS theila-linux-arm64 +COPY --from=theila-linux-arm64-build /theila-linux-arm64 /theila-linux-arm64 + +FROM scratch AS theila-linux-armv7 +COPY --from=theila-linux-armv7-build /theila-linux-armv7 /theila-linux-armv7 + +FROM scratch AS theila-windows-amd64.exe +COPY --from=theila-windows-amd64.exe-build /theila-windows-amd64.exe /theila-windows-amd64.exe + +FROM theila-linux-${TARGETARCH} AS theila FROM scratch AS image-theila -COPY --from=theila / / +ARG TARGETARCH +COPY --from=theila theila-linux-${TARGETARCH} /theila COPY --from=image-fhs / / COPY --from=image-ca-certificates / / LABEL org.opencontainers.image.source https://github.com/talos-systems/theila diff --git a/Makefile b/Makefile index f1a7ffa..cee1a99 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ # THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. # -# Generated on 2021-04-30T17:29:57Z by kres 392fdcb-dirty. +# Generated on 2021-05-21T14:44:23Z by kres c09e0bc-dirty. # common variables @@ -15,7 +15,7 @@ PROTOBUF_TS_VERSION ?= 1.79.2 PROTOBUF_GRPC_GATEWAY_TS_VERSION ?= 1.1.0 TESTPKGS ?= ./... GOFUMPT_VERSION ?= abc0db2c416aca0f60ea33c23c76665f6e7ba0b6 -GO_VERSION ?= 1.14 +GO_VERSION ?= 1.16 PROTOBUF_GO_VERSION ?= 1.25.0 GRPC_GO_VERSION ?= 1.1.0 GRPC_GATEWAY_VERSION ?= 2.4.0 @@ -147,12 +147,50 @@ unit-tests-race: ## Performs unit tests with race detection enabled. coverage: ## Upload coverage data to codecov.io. bash -c "bash <(curl -s https://codecov.io/bash) -f $(ARTIFACTS)/coverage.txt -X fix" -.PHONY: $(ARTIFACTS)/theila -$(ARTIFACTS)/theila: - @$(MAKE) local-theila DEST=$(ARTIFACTS) +.PHONY: $(ARTIFACTS)/theila-darwin-amd64 +$(ARTIFACTS)/theila-darwin-amd64: + @$(MAKE) local-theila-darwin-amd64 DEST=$(ARTIFACTS) + +.PHONY: theila-darwin-amd64 +theila-darwin-amd64: $(ARTIFACTS)/theila-darwin-amd64 ## Builds executable for theila-darwin-amd64. + +.PHONY: $(ARTIFACTS)/theila-darwin-arm64 +$(ARTIFACTS)/theila-darwin-arm64: + @$(MAKE) local-theila-darwin-arm64 DEST=$(ARTIFACTS) + +.PHONY: theila-darwin-arm64 +theila-darwin-arm64: $(ARTIFACTS)/theila-darwin-arm64 ## Builds executable for theila-darwin-arm64. + +.PHONY: $(ARTIFACTS)/theila-linux-amd64 +$(ARTIFACTS)/theila-linux-amd64: + @$(MAKE) local-theila-linux-amd64 DEST=$(ARTIFACTS) + +.PHONY: theila-linux-amd64 +theila-linux-amd64: $(ARTIFACTS)/theila-linux-amd64 ## Builds executable for theila-linux-amd64. + +.PHONY: $(ARTIFACTS)/theila-linux-arm64 +$(ARTIFACTS)/theila-linux-arm64: + @$(MAKE) local-theila-linux-arm64 DEST=$(ARTIFACTS) + +.PHONY: theila-linux-arm64 +theila-linux-arm64: $(ARTIFACTS)/theila-linux-arm64 ## Builds executable for theila-linux-arm64. + +.PHONY: $(ARTIFACTS)/theila-linux-armv7 +$(ARTIFACTS)/theila-linux-armv7: + @$(MAKE) local-theila-linux-armv7 DEST=$(ARTIFACTS) + +.PHONY: theila-linux-armv7 +theila-linux-armv7: $(ARTIFACTS)/theila-linux-armv7 ## Builds executable for theila-linux-armv7. + +.PHONY: $(ARTIFACTS)/theila-windows-amd64.exe +$(ARTIFACTS)/theila-windows-amd64.exe: + @$(MAKE) local-theila-windows-amd64.exe DEST=$(ARTIFACTS) + +.PHONY: theila-windows-amd64.exe +theila-windows-amd64.exe: $(ARTIFACTS)/theila-windows-amd64.exe ## Builds executable for theila-windows-amd64.exe. .PHONY: theila -theila: $(ARTIFACTS)/theila ## Builds executable for theila. +theila: theila-darwin-amd64 theila-darwin-arm64 theila-linux-amd64 theila-linux-arm64 theila-linux-armv7 theila-windows-amd64.exe .PHONY: lint-markdown lint-markdown: ## Runs markdownlint. @@ -175,3 +213,8 @@ help: ## This help menu. @echo "$$HELP_MENU_HEADER" @grep -E '^[a-zA-Z%_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' +.PHONY: release-notes +release-notes: + mkdir -p $(ARTIFACTS) + @ARTIFACTS=$(ARTIFACTS) ./hack/release.sh $@ $(ARTIFACTS)/RELEASE_NOTES.md $(TAG) + diff --git a/hack/release.sh b/hack/release.sh index df92c08..8df0c2c 100755 --- a/hack/release.sh +++ b/hack/release.sh @@ -2,16 +2,23 @@ # THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. # -# Generated on 2020-08-29T13:20:33Z by kres latest. +# Generated on 2021-05-20T15:00:42Z by kres adb52e5-dirty. +#!/bin/bash + set -e +RELEASE_TOOL_IMAGE="ghcr.io/talos-systems/release-tool:latest" + +function release-tool { + docker pull "${RELEASE_TOOL_IMAGE}" >/dev/null + docker run --rm -w /src -v "${PWD}":/src:ro "${RELEASE_TOOL_IMAGE}" -l -d -n -t "${1}" ./hack/release.toml +} + function changelog { if [ "$#" -eq 1 ]; then - git-chglog --output CHANGELOG.md -c ./hack/git-chglog/config.yaml --tag-filter-pattern "^${1}" "${1}.0-alpha.0.." - elif [ "$#" -eq 0 ]; then - git-chglog --output CHANGELOG.md -c ./hack/git-chglog/config.yaml + (release-tool ${1}; echo; cat CHANGELOG.md) > CHANGELOG.md- && mv CHANGELOG.md- CHANGELOG.md else echo 1>&2 "Usage: $0 changelog [tag]" exit 1 @@ -19,7 +26,7 @@ function changelog { } function release-notes { - git-chglog --output ${1} -c ./hack/git-chglog/config.yaml "${2}" + release-tool "${2}" > "${1}" } function cherry-pick { @@ -51,9 +58,10 @@ then else cat <