Skip to content

Commit 2709abe

Browse files
committed
Add new cli for ansible plugin
Signed-off-by: chiragkyal <ckyal@redhat.com>
1 parent 87d6d1f commit 2709abe

File tree

4 files changed

+154
-68
lines changed

4 files changed

+154
-68
lines changed

.goreleaser.yml

Lines changed: 82 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -3,84 +3,98 @@ before:
33
- go mod tidy
44
- go mod download
55
builds:
6-
- id: binary
6+
- id: ansible-operator
77
main: ./cmd/ansible-operator/
88
binary: ansible-operator
99
asmflags: "{{ .Env.GO_BUILD_ASMFLAGS }}"
1010
gcflags: "{{ .Env.GO_BUILD_GCFLAGS }}"
1111
ldflags: "{{ .Env.GO_BUILD_LDFLAGS }}"
1212
mod_timestamp: "{{ .CommitTimestamp }}"
1313
goos:
14-
- linux
14+
- linux
1515
goarch:
16-
- amd64
17-
- arm64
18-
- ppc64le
19-
- s390x
16+
- amd64
17+
- arm64
18+
- ppc64le
19+
- s390x
20+
- id: ansible-cli
21+
main: ./cmd/ansible-cli/
22+
binary: ansible-cli
23+
asmflags: "{{ .Env.GO_BUILD_ASMFLAGS }}"
24+
gcflags: "{{ .Env.GO_BUILD_GCFLAGS }}"
25+
ldflags: "{{ .Env.GO_BUILD_LDFLAGS }}"
26+
mod_timestamp: "{{ .CommitTimestamp }}"
27+
goos:
28+
- linux
29+
goarch:
30+
- amd64
31+
- arm64
32+
- ppc64le
33+
- s390x
2034
dockers:
21-
- image_templates:
22-
- "{{ .Env.IMAGE_REPO }}:{{ .Env.IMAGE_TAG }}-amd64"
23-
dockerfile: images/ansible-operator/Dockerfile
24-
goos: linux
25-
goarch: amd64
26-
use: buildx
27-
build_flag_templates:
28-
- "--platform=linux/amd64"
29-
- "--cache-from"
30-
- "type=gha,scope=amd64,token={{ .Env.ACTIONS_RUNTIME_TOKEN }},url={{ .Env.ACTIONS_CACHE_URL }}"
31-
- "--builder={{ .Env.BUILDX_BUILDER }}"
32-
extra_files:
33-
- "images/ansible-operator/Pipfile"
34-
- "images/ansible-operator/Pipfile.lock"
35-
- image_templates:
36-
- "{{ .Env.IMAGE_REPO }}:{{ .Env.IMAGE_TAG }}-arm64"
37-
dockerfile: images/ansible-operator/Dockerfile
38-
goos: linux
39-
goarch: arm64
40-
use: buildx
41-
build_flag_templates:
42-
- "--platform=linux/arm64"
43-
- "--cache-from"
44-
- "type=gha,scope=arm64,token={{ .Env.ACTIONS_RUNTIME_TOKEN }},url={{ .Env.ACTIONS_CACHE_URL }}"
45-
- "--builder={{ .Env.BUILDX_BUILDER }}"
46-
extra_files:
47-
- "images/ansible-operator/Pipfile"
48-
- "images/ansible-operator/Pipfile.lock"
49-
- image_templates:
50-
- "{{ .Env.IMAGE_REPO }}:{{ .Env.IMAGE_TAG }}-ppc64le"
51-
dockerfile: images/ansible-operator/Dockerfile
52-
goos: linux
53-
goarch: ppc64le
54-
use: buildx
55-
build_flag_templates:
56-
- "--platform=linux/ppc64le"
57-
- "--cache-from"
58-
- "type=gha,scope=ppc64le,token={{ .Env.ACTIONS_RUNTIME_TOKEN }},url={{ .Env.ACTIONS_CACHE_URL }}"
59-
- "--builder={{ .Env.BUILDX_BUILDER }}"
60-
extra_files:
61-
- "images/ansible-operator/Pipfile"
62-
- "images/ansible-operator/Pipfile.lock"
63-
- image_templates:
64-
- "{{ .Env.IMAGE_REPO }}:{{ .Env.IMAGE_TAG }}-s390x"
65-
dockerfile: images/ansible-operator/Dockerfile
66-
goos: linux
67-
goarch: s390x
68-
use: buildx
69-
build_flag_templates:
70-
- "--platform=linux/s390x"
71-
- "--cache-from"
72-
- "type=gha,scope=s390x,token={{ .Env.ACTIONS_RUNTIME_TOKEN }},url={{ .Env.ACTIONS_CACHE_URL }}"
73-
- "--builder={{ .Env.BUILDX_BUILDER }}"
74-
extra_files:
75-
- "images/ansible-operator/Pipfile"
76-
- "images/ansible-operator/Pipfile.lock"
35+
- image_templates:
36+
- "{{ .Env.IMAGE_REPO }}:{{ .Env.IMAGE_TAG }}-amd64"
37+
dockerfile: images/ansible-operator/Dockerfile
38+
goos: linux
39+
goarch: amd64
40+
use: buildx
41+
build_flag_templates:
42+
- "--platform=linux/amd64"
43+
- "--cache-from"
44+
- "type=gha,scope=amd64,token={{ .Env.ACTIONS_RUNTIME_TOKEN }},url={{ .Env.ACTIONS_CACHE_URL }}"
45+
- "--builder={{ .Env.BUILDX_BUILDER }}"
46+
extra_files:
47+
- "images/ansible-operator/Pipfile"
48+
- "images/ansible-operator/Pipfile.lock"
49+
- image_templates:
50+
- "{{ .Env.IMAGE_REPO }}:{{ .Env.IMAGE_TAG }}-arm64"
51+
dockerfile: images/ansible-operator/Dockerfile
52+
goos: linux
53+
goarch: arm64
54+
use: buildx
55+
build_flag_templates:
56+
- "--platform=linux/arm64"
57+
- "--cache-from"
58+
- "type=gha,scope=arm64,token={{ .Env.ACTIONS_RUNTIME_TOKEN }},url={{ .Env.ACTIONS_CACHE_URL }}"
59+
- "--builder={{ .Env.BUILDX_BUILDER }}"
60+
extra_files:
61+
- "images/ansible-operator/Pipfile"
62+
- "images/ansible-operator/Pipfile.lock"
63+
- image_templates:
64+
- "{{ .Env.IMAGE_REPO }}:{{ .Env.IMAGE_TAG }}-ppc64le"
65+
dockerfile: images/ansible-operator/Dockerfile
66+
goos: linux
67+
goarch: ppc64le
68+
use: buildx
69+
build_flag_templates:
70+
- "--platform=linux/ppc64le"
71+
- "--cache-from"
72+
- "type=gha,scope=ppc64le,token={{ .Env.ACTIONS_RUNTIME_TOKEN }},url={{ .Env.ACTIONS_CACHE_URL }}"
73+
- "--builder={{ .Env.BUILDX_BUILDER }}"
74+
extra_files:
75+
- "images/ansible-operator/Pipfile"
76+
- "images/ansible-operator/Pipfile.lock"
77+
- image_templates:
78+
- "{{ .Env.IMAGE_REPO }}:{{ .Env.IMAGE_TAG }}-s390x"
79+
dockerfile: images/ansible-operator/Dockerfile
80+
goos: linux
81+
goarch: s390x
82+
use: buildx
83+
build_flag_templates:
84+
- "--platform=linux/s390x"
85+
- "--cache-from"
86+
- "type=gha,scope=s390x,token={{ .Env.ACTIONS_RUNTIME_TOKEN }},url={{ .Env.ACTIONS_CACHE_URL }}"
87+
- "--builder={{ .Env.BUILDX_BUILDER }}"
88+
extra_files:
89+
- "images/ansible-operator/Pipfile"
90+
- "images/ansible-operator/Pipfile.lock"
7791
docker_manifests:
78-
- name_template: "{{ .Env.IMAGE_REPO }}:{{ .Env.IMAGE_TAG }}"
79-
image_templates:
80-
- "{{ .Env.IMAGE_REPO }}:{{ .Env.IMAGE_TAG }}-amd64"
81-
- "{{ .Env.IMAGE_REPO }}:{{ .Env.IMAGE_TAG }}-arm64"
82-
- "{{ .Env.IMAGE_REPO }}:{{ .Env.IMAGE_TAG }}-ppc64le"
83-
- "{{ .Env.IMAGE_REPO }}:{{ .Env.IMAGE_TAG }}-s390x"
92+
- name_template: "{{ .Env.IMAGE_REPO }}:{{ .Env.IMAGE_TAG }}"
93+
image_templates:
94+
- "{{ .Env.IMAGE_REPO }}:{{ .Env.IMAGE_TAG }}-amd64"
95+
- "{{ .Env.IMAGE_REPO }}:{{ .Env.IMAGE_TAG }}-arm64"
96+
- "{{ .Env.IMAGE_REPO }}:{{ .Env.IMAGE_TAG }}-ppc64le"
97+
- "{{ .Env.IMAGE_REPO }}:{{ .Env.IMAGE_TAG }}-s390x"
8498
archives:
8599
- format: binary
86100
name_template: "{{ .Binary }}_{{ .Os }}_{{ .Arch }}"

Makefile

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,11 @@ build: ## Build ansible-operator
8383
build/ansible-operator:
8484
GOOS=$(BUILD_GOOS) GOARCH=$(BUILD_GOARCH) go build $(GO_BUILD_ARGS) -o $(BUILD_DIR)/$(@F) ./cmd/$(@F)
8585

86+
.PHONY: ansible-cli
87+
ansible-cli:
88+
@mkdir -p $(BUILD_DIR)
89+
GOOS=$(BUILD_GOOS) GOARCH=$(BUILD_GOARCH) go build $(GO_BUILD_ARGS) -o $(BUILD_DIR)/ansible-cli ./cmd/ansible-cli
90+
8691
##@ Dev image build
8792

8893
# Convenience wrapper for building all remotely hosted images.

cmd/ansible-cli/main.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package main
2+
3+
import (
4+
"log"
5+
6+
"github.com/operator-framework/ansible-operator-plugins/internal/cmd/ansible-cli/cli"
7+
_ "k8s.io/client-go/plugin/pkg/client/auth"
8+
)
9+
10+
func main() {
11+
if err := cli.Run(); err != nil {
12+
log.Fatal(err)
13+
}
14+
}

internal/cmd/ansible-cli/cli/cli.go

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package cli
2+
3+
import (
4+
"fmt"
5+
"log"
6+
"runtime"
7+
8+
"github.com/operator-framework/ansible-operator-plugins/pkg/plugins/ansible/v1"
9+
10+
ver "github.com/operator-framework/ansible-operator-plugins/internal/version"
11+
"sigs.k8s.io/kubebuilder/v4/pkg/cli"
12+
cfgv3 "sigs.k8s.io/kubebuilder/v4/pkg/config/v3"
13+
"sigs.k8s.io/kubebuilder/v4/pkg/plugin"
14+
kustomizev2 "sigs.k8s.io/kubebuilder/v4/pkg/plugins/common/kustomize/v2"
15+
)
16+
17+
func Run() error {
18+
c := GetPluginsCLI()
19+
return c.Run()
20+
}
21+
22+
func GetPluginsCLI() *cli.CLI {
23+
ansibleBundle, _ := plugin.NewBundleWithOptions(
24+
plugin.WithName(ansible.Plugin{}.Name()),
25+
plugin.WithVersion(ansible.Plugin{}.Version()),
26+
plugin.WithPlugins(
27+
kustomizev2.Plugin{},
28+
ansible.Plugin{},
29+
),
30+
)
31+
32+
c, err := cli.New(
33+
cli.WithCommandName("ansible-cli"),
34+
cli.WithVersion(makeVersionString()),
35+
cli.WithPlugins(
36+
ansibleBundle,
37+
),
38+
cli.WithDefaultPlugins(cfgv3.Version, ansibleBundle),
39+
cli.WithDefaultProjectVersion(cfgv3.Version),
40+
cli.WithCompletion(),
41+
)
42+
43+
if err != nil {
44+
log.Fatal(err)
45+
}
46+
47+
return c
48+
}
49+
50+
func makeVersionString() string {
51+
return fmt.Sprintf("ansible-cli version: %q, commit: %q, kubernetes version: %q, go version: %q, GOOS: %q, GOARCH: %q",
52+
ver.GitVersion, ver.GitCommit, ver.KubernetesVersion, runtime.Version(), runtime.GOOS, runtime.GOARCH)
53+
}

0 commit comments

Comments
 (0)