# Copyright 2021 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. name: Go implementation (CI) on: push: pull_request: jobs: ci: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@master - name: Setup Go uses: actions/setup-go@v6 with: go-version: '1.25' - id: go-cache-paths run: | echo "::set-output name=go-build::$(go env GOCACHE)" echo "::set-output name=go-mod::$(go env GOMODCACHE)" - name: Go Build Cache uses: actions/cache@v5 with: path: ${{ steps.go-cache-paths.outputs.go-build }} key: ${{ runner.os }}-go-build-${{ hashFiles('**/go.sum') }} - name: Go Mod Cache uses: actions/cache@v5 with: path: ${{ steps.go-cache-paths.outputs.go-mod }} key: ${{ runner.os }}-go-mod-${{ hashFiles('**/go.sum') }} - name: Ensure gofmt run: test -z "$(gofmt -s -d .)" - name: Ensure go.mod is already tidied run: go mod tidy && git diff --exit-code - name: Run unit tests run: go test ./... - name: Build with Goreleaser uses: goreleaser/goreleaser-action@v7 with: version: latest args: release --snapshot --skip publish,snapcraft --clean - name: Setup BATS framework run: sudo npm install -g bats - name: kubectx (Go) integration tests run: COMMAND=./dist/kubectx_linux_amd64_v1/kubectx bats test/kubectx.bats - name: kubens (Go) integration tests run: COMMAND=./dist/kubens_linux_amd64_v1/kubens bats test/kubens.bats