diff --git a/site/themes/pinniped/static/img/kubeapps.svg b/site/themes/pinniped/static/img/kubeapps.svg
new file mode 100644
index 000000000..e2e9a1655
--- /dev/null
+++ b/site/themes/pinniped/static/img/kubeapps.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/site/themes/pinniped/static/img/vmware-tanzu.svg b/site/themes/pinniped/static/img/vmware-tanzu.svg
new file mode 100644
index 000000000..c118d4e52
--- /dev/null
+++ b/site/themes/pinniped/static/img/vmware-tanzu.svg
@@ -0,0 +1,57 @@
+
+
+
diff --git a/test/library/cli.go b/test/library/cli.go
index dac7b8bcb..b27fbed06 100644
--- a/test/library/cli.go
+++ b/test/library/cli.go
@@ -5,6 +5,7 @@ package library
import (
"io/ioutil"
+ "os"
"os/exec"
"path/filepath"
"sync"
@@ -25,6 +26,13 @@ var pinnipedCLIBinaryCache struct {
// PinnipedCLIPath returns the path to the Pinniped CLI binary, built on demand and cached between tests.
func PinnipedCLIPath(t *testing.T) string {
t.Helper()
+
+ // Allow a pre-built binary passed in via $PINNIPED_TEST_CLI. This is how our tests run in CI for efficiency.
+ if ext, ok := os.LookupEnv("PINNIPED_TEST_CLI"); ok {
+ t.Log("using externally provided pinniped CLI binary")
+ return ext
+ }
+
pinnipedCLIBinaryCache.mutex.Lock()
defer pinnipedCLIBinaryCache.mutex.Unlock()
path := filepath.Join(testutil.TempDir(t), "pinniped")