From 66acadf86d3df6b149e4ebdd8369bd7ea2b88c31 Mon Sep 17 00:00:00 2001 From: Jeff McCune <jeff@openinfrastructure.co> Date: Thu, 14 Nov 2024 13:53:55 -0700 Subject: [PATCH] docs: support brew install (#327) --- .cspell.json | 4 +++ .github/workflows/release.yaml | 13 +++++++- .goreleaser.yaml | 38 +++++++++++++++++++++++- doc/md/tutorial/setup.mdx | 54 ++++++++++++++++++++++++++++------ version/embedded/patch | 2 +- 5 files changed, 99 insertions(+), 12 deletions(-) diff --git a/.cspell.json b/.cspell.json index 42bf9a1d..ff0e4bf8 100644 --- a/.cspell.json +++ b/.cspell.json @@ -11,6 +11,7 @@ "admissionregistration", "alertmanager", "alertmanagers", + "anchore", "anthos", "apiextensions", "apimachinery", @@ -75,6 +76,7 @@ "deploymentruntimeconfig", "destinationrule", "destinationrules", + "devel", "devicecode", "dnsmasq", "dscacheutil", @@ -137,6 +139,7 @@ "httproute", "httproutes", "iampolicygenerator", + "incpatch", "Infima", "intstr", "isatty", @@ -256,6 +259,7 @@ "rolebinding", "rootfs", "ropc", + "sboms", "seccomp", "secretargs", "SECRETKEY", diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 0c659a4f..f2548f30 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -35,6 +35,9 @@ jobs: with: go-version: stable + - name: Setup Syft + uses: anchore/sbom-action/download-syft@1ca97d9028b51809cf6d3c934c3e160716e1b605 # v0.17.5 + # Necessary to run these outside of goreleaser, otherwise # /home/runner/_work/holos/holos/internal/frontend/node_modules/.bin/protoc-gen-connect-query is not in PATH - name: Install Tools @@ -54,11 +57,19 @@ jobs: - name: Git diff run: git diff + - uses: actions/create-github-app-token@v1 + id: app-token + with: + owner: ${{ github.repository_owner }} + app-id: ${{ vars.GORELEASER_APP_ID }} + private-key: ${{ secrets.GORELEASER_APP_PRIVATE_KEY }} + - name: Run GoReleaser uses: goreleaser/goreleaser-action@v5 with: distribution: goreleaser - version: latest + version: '~> v2' args: release --clean env: + HOMEBREW_TAP_GITHUB_TOKEN: ${{ steps.app-token.outputs.token }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 3e4d6226..546847bf 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -6,7 +6,7 @@ # yaml-language-server: $schema=https://goreleaser.com/static/schema.json # vim: set ts=2 sw=2 tw=0 fo=cnqoj -version: 1 +version: 2 before: hooks: @@ -50,3 +50,39 @@ changelog: exclude: - "^docs:" - "^test:" + +source: + enabled: true + name_template: '{{ .ProjectName }}_{{ .Version }}_source_code' + +sboms: + - id: source + artifacts: source + documents: + - "{{ .ProjectName }}_{{ .Version }}_sbom.spdx.json" + +brews: + - name: holos + repository: + owner: holos-run + name: homebrew-tap + branch: main + token: "{{ .Env.HOMEBREW_TAP_GITHUB_TOKEN }}" + directory: Formula + homepage: "https://holos.run" + description: "Holos CLI" + dependencies: + - name: helm + type: optional + - name: kubectl + type: optional + install: | + bin.install "holos" + bash_output = Utils.safe_popen_read(bin/"holos", "completion", "bash") + (bash_completion/"holos").write bash_output + zsh_output = Utils.safe_popen_read(bin/"holos", "completion", "zsh") + (zsh_completion/"_holos").write zsh_output + fish_output = Utils.safe_popen_read(bin/"holos", "completion", "fish") + (fish_completion/"holos.fish").write fish_output + test: | + system "#{bin}/holos version" diff --git a/doc/md/tutorial/setup.mdx b/doc/md/tutorial/setup.mdx index 488d7ac2..9a6d25b8 100644 --- a/doc/md/tutorial/setup.mdx +++ b/doc/md/tutorial/setup.mdx @@ -17,22 +17,54 @@ This tutorial will guide you through the installation of Holos and its dependencies, as well as the initialization of a minimal Platform that you can extend to meet your specific needs. -## Installing Holos +## Installing Holos is distributed as a single file executable that can be installed in a couple of ways. +<Tabs groupId="FE2C74C8-B3A3-4AEA-BBD3-F57FAA654B6F"> + <TabItem value="brew" label="Install with brew"> +```bash +brew install holos-run/tap/holos +``` + </TabItem> + <TabItem value="go" label="Go"> +```bash +go install github.com/holos-run/holos/cmd/holos@latest +``` + </TabItem> +</Tabs> + +### Completion + +<Tabs groupId="65F79D28-2E57-4A90-8EBA-3D8758C80233"> + <TabItem value="zsh" label="zsh"> +```bash +source <(holos completion zsh) +``` + </TabItem> + <TabItem value="bash" label="bash"> +```bash +source <(holos completion bash) +``` + </TabItem> + <TabItem value="fish" label="fish"> +```bash +source <(holos completion fish) +``` + </TabItem> + <TabItem value="ksh" label="ksh"> +```bash +source <(holos completion ksh) +``` + </TabItem> +</Tabs> + ### Releases Download `holos` from the [releases] page and place the executable into your shell path. -### Go Install - -```shell -go install github.com/holos-run/holos/cmd/holos@latest -``` - ### Dependencies Holos integrates with the following tools that should be installed to enable @@ -41,8 +73,12 @@ their functionality. - [Helm] to fetch and render Helm chart Components. - [Kubectl] to [kustomize] components. -Holos is tested with Helm version `v3.16.2`. Please try upgrading helm if you -encounter `Error: chart requires kubeVersion ...` errors. +:::note +Holos is tested with Helm version `v3.16.2`. +::: + +Please try upgrading helm if you encounter `Error: chart requires kubeVersion +...` errors. ## Next Steps diff --git a/version/embedded/patch b/version/embedded/patch index d00491fd..0cfbf088 100644 --- a/version/embedded/patch +++ b/version/embedded/patch @@ -1 +1 @@ -1 +2