Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add new GitHub actions #4

Merged
merged 1 commit into from
May 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions .github/workflows/go.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# This workflow will build a golang project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go

name: Go

on:
pull_request:
branches: [main]

jobs:
verify:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.22.3'

- name: Verify Source
run: hack/verify.sh

lint:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.22.3'

- name: Run golangci-lint
uses: golangci/golangci-lint-action@v6
with:
version: v1.58
7 changes: 2 additions & 5 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3

- name: Unshallow
run: git fetch --prune --unshallow
uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v4
uses: actions/setup-go@v5
with:
go-version: '1.22.3'

Expand Down
116 changes: 116 additions & 0 deletions hack/verify.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
#!/usr/bin/env bash

set -euo pipefail
cd $(dirname $0)/..

EXIT_CODE=0

errcho() {
echo $@ >&2
}

try() {
local title="$1"
shift

echo "===================================="
echo "$title"
echo "===================================="
echo

startTime=$(date +%s)

set +e
$@
exitCode=$?
set -e

elapsed=$(($(date +%s) - $startTime))

if [[ $exitCode -eq 0 ]]; then
echo -e "\n[${elapsed}s] SUCCESS :)"
else
echo -e "\n[${elapsed}s] FAILED."
EXIT_CODE=1
fi

git reset --hard --quiet
git clean --force

echo
}

function verify_go_mod_tidy() (
set -e

# bad formatting in go.sum is not automatically fixed by go, for some reason
(set -x; rm go.sum; go mod tidy)

if ! git diff --exit-code; then
echo "::error::Please run go mod tidy."
return 1
fi

echo "go.mod is tidy."
)

function ensure_gimps() {
location=gimps

if ! [ -x "$(command -v gimps)" ]; then
version=0.6.0
arch="$(go env GOARCH)"
os="$(go env GOOS)"
url="https://github.com/xrstf/gimps/releases/download/v${version}/gimps_${version}_${os}_${arch}.tar.gz"
location=/tmp/gimps

errcho "Downloading gimps v$version..."
wget -qO- "$url" | tar xzOf - "gimps_${version}_${os}_${arch}/gimps" > $location
chmod +x $location
fi

echo "$location"
}

function verify_go_imports() (
set -e

gimps="$(ensure_gimps)"

(set -x; $gimps .)

if ! git diff --exit-code; then
echo "::error::Some import statements are not properly grouped. Please run https://github.com/xrstf/gimps or sort them manually."
return 1
fi

echo "Go import statements are properly sorted."
)

function verify_go_build() (
set -e

if ! (set -x; make build); then
echo "::error::Code does not compile."
return 1
fi

echo "Code compiles."
)

function verify_go_lint() (
set -e

if ! (set -x; golangci-lint run ./...); then
echo "::error::Computer says no."
return 1
fi

echo "Code looks sane."
)

try "go.mod tidy?" verify_go_mod_tidy
try "gimpsed?" verify_go_imports
try "Go code builds?" verify_go_build

exit $EXIT_CODE
7 changes: 5 additions & 2 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -147,13 +147,13 @@ func main() {
}

if args[0] == "-" {
watchStdin(rootCtx, log, os.Stdin, printer)
watchStdin(log, os.Stdin, printer)
} else {
watchKubernetes(rootCtx, log, args, &opt, printer)
}
}

func watchStdin(ctx context.Context, log logrus.FieldLogger, input io.Reader, printer *diff.Printer) {
func watchStdin(log logrus.FieldLogger, input io.Reader, printer *diff.Printer) {
decoder := yamlutil.NewYAMLOrJSONDecoder(input, 1024)

for {
Expand Down Expand Up @@ -213,10 +213,13 @@ func watchKubernetes(ctx context.Context, log logrus.FieldLogger, args []string,
if err != nil {
log.Fatalf("Unknown resource kind %q: %v", resourceKind, err)
}

//nolint:staticcheck
if parsed == nil {
log.Fatalf("Unknown resource kind %q", resourceKind)
}

//nolint:staticcheck
gvk := parsed.GroupVersionKind
kinds[gvk.String()] = gvk

Expand Down
14 changes: 0 additions & 14 deletions pkg/maputil/util.go

This file was deleted.