The "go fmt" code style checking tool is something we wish to run on all
Go code, so it is useful to have a common container that can be used by
all relevant projects.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
.gitlab-ci.yml | 5 +++++
containers/go-fmt/Dockerfile | 9 +++++++++
containers/go-fmt/README.rst | 20 ++++++++++++++++++++
containers/go-fmt/go-fmt.sh | 24 ++++++++++++++++++++++++
4 files changed, 58 insertions(+)
create mode 100644 containers/go-fmt/Dockerfile
create mode 100644 containers/go-fmt/README.rst
create mode 100755 containers/go-fmt/go-fmt.sh
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index a1ac31a..080c8d1 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -22,6 +22,11 @@ check-dco-container:
variables:
NAME: check-dco
+go-fmt-container:
+ <<: *build_container_definition
+ variables:
+ NAME: go-fmt
+
# Check that all commits are signed-off for the DCO. Skip
# on master branch and -maint branches, since we only need
# to test developer's personal branches.
diff --git a/containers/go-fmt/Dockerfile b/containers/go-fmt/Dockerfile
new file mode 100644
index 0000000..9079fea
--- /dev/null
+++ b/containers/go-fmt/Dockerfile
@@ -0,0 +1,9 @@
+FROM golang:1.14
+
+RUN export DEBIAN_FRONTEND=noninteractive && \
+ apt-get update && \
+ apt-get install --no-install-recommends -y \
+ diffstat && \
+ apt-get autoclean -y
+
+COPY go-fmt.sh /go-fmt
diff --git a/containers/go-fmt/README.rst b/containers/go-fmt/README.rst
new file mode 100644
index 0000000..0af6998
--- /dev/null
+++ b/containers/go-fmt/README.rst
@@ -0,0 +1,20 @@
+=============================================
+Container for running go fmt code style check
+=============================================
+
+This container provides a simple way to invoke ``go fmt`` to validate code
+style across a Golang codebase. It should be integrated into a CI by adding
+the following snippet to ``.gitlab-ci.yml``
+
+::
+
+ go-fmt:
+ stage: prebuild
+ image: registry.gitlab.com/libvirt/libvirt-ci/go-fmt:master
+ script:
+ - /go-fmt
+ artifacts:
+ paths:
+ - go-fmt.patch
+ expire_in: 1 week
+ when: on_failure
diff --git a/containers/go-fmt/go-fmt.sh b/containers/go-fmt/go-fmt.sh
new file mode 100755
index 0000000..9fda79d
--- /dev/null
+++ b/containers/go-fmt/go-fmt.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+GOFMT=$(go env GOROOT)/bin/gofmt
+
+find -name '*.go' | xargs $GOFMT -d -e > go-fmt.patch
+
+if test -n go-fmt.patch
+then
+ echo
+ echo "❌ ERROR: some files failed go fmt code style check"
+ echo
+ diffstat go-fmt.patch
+ echo
+ echo "See the go-fmt patch artifact for full details of mistakes."
+ echo
+ echo "For guidance on how to configure Emacs or Vim to automatically"
+ echo "run go fmt when saving files read"
+ echo
+ echo " https://blog.golang.org/gofmt"
+ echo
+ exit 1
+fi
+
+echo "✔ OK: all files passed go fmt code style check"
--
2.25.4
On Fri, 2020-05-01 at 11:52 +0100, Daniel P. Berrangé wrote: > +++ b/containers/go-fmt/go-fmt.sh > @@ -0,0 +1,24 @@ > +#!/bin/sh > + > +GOFMT=$(go env GOROOT)/bin/gofmt > + > +find -name '*.go' | xargs $GOFMT -d -e > go-fmt.patch > + > +if test -n go-fmt.patch As pointed out by Martin, this should be "-s". With that fixed, Reviewed-by: Andrea Bolognani <abologna@redhat.com> -- Andrea Bolognani / Red Hat / Virtualization
On Fri, May 01, 2020 at 11:52:32AM +0100, Daniel P. Berrangé wrote: > The "go fmt" code style checking tool is something we wish to run on all > Go code, so it is useful to have a common container that can be used by > all relevant projects. > > Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> > --- > .gitlab-ci.yml | 5 +++++ > containers/go-fmt/Dockerfile | 9 +++++++++ > containers/go-fmt/README.rst | 20 ++++++++++++++++++++ > containers/go-fmt/go-fmt.sh | 24 ++++++++++++++++++++++++ > 4 files changed, 58 insertions(+) > create mode 100644 containers/go-fmt/Dockerfile > create mode 100644 containers/go-fmt/README.rst > create mode 100755 containers/go-fmt/go-fmt.sh > > diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml > index a1ac31a..080c8d1 100644 > --- a/.gitlab-ci.yml > +++ b/.gitlab-ci.yml > @@ -22,6 +22,11 @@ check-dco-container: > variables: > NAME: check-dco > > +go-fmt-container: > + <<: *build_container_definition > + variables: > + NAME: go-fmt > + > # Check that all commits are signed-off for the DCO. Skip > # on master branch and -maint branches, since we only need > # to test developer's personal branches. > diff --git a/containers/go-fmt/Dockerfile b/containers/go-fmt/Dockerfile > new file mode 100644 > index 0000000..9079fea > --- /dev/null > +++ b/containers/go-fmt/Dockerfile > @@ -0,0 +1,9 @@ > +FROM golang:1.14 > + > +RUN export DEBIAN_FRONTEND=noninteractive && \ > + apt-get update && \ > + apt-get install --no-install-recommends -y \ > + diffstat && \ > + apt-get autoclean -y > + > +COPY go-fmt.sh /go-fmt > diff --git a/containers/go-fmt/README.rst b/containers/go-fmt/README.rst > new file mode 100644 > index 0000000..0af6998 > --- /dev/null > +++ b/containers/go-fmt/README.rst > @@ -0,0 +1,20 @@ > +============================================= > +Container for running go fmt code style check > +============================================= > + > +This container provides a simple way to invoke ``go fmt`` to validate code > +style across a Golang codebase. It should be integrated into a CI by adding > +the following snippet to ``.gitlab-ci.yml`` > + > +:: > + > + go-fmt: > + stage: prebuild > + image: registry.gitlab.com/libvirt/libvirt-ci/go-fmt:master > + script: > + - /go-fmt > + artifacts: > + paths: > + - go-fmt.patch > + expire_in: 1 week > + when: on_failure > diff --git a/containers/go-fmt/go-fmt.sh b/containers/go-fmt/go-fmt.sh > new file mode 100755 > index 0000000..9fda79d > --- /dev/null > +++ b/containers/go-fmt/go-fmt.sh > @@ -0,0 +1,24 @@ > +#!/bin/sh > + > +GOFMT=$(go env GOROOT)/bin/gofmt > + > +find -name '*.go' | xargs $GOFMT -d -e > go-fmt.patch > + > +if test -n go-fmt.patch This was supposed to be "-z" not "-n" but I forgot to commit a chunk > +then > + echo > + echo "❌ ERROR: some files failed go fmt code style check" > + echo > + diffstat go-fmt.patch > + echo > + echo "See the go-fmt patch artifact for full details of mistakes." > + echo > + echo "For guidance on how to configure Emacs or Vim to automatically" > + echo "run go fmt when saving files read" > + echo > + echo " https://blog.golang.org/gofmt" > + echo > + exit 1 > +fi > + > +echo "✔ OK: all files passed go fmt code style check" > -- > 2.25.4 > Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
On Fri, May 01, 2020 at 12:03:02PM +0100, Daniel P. Berrangé wrote: >On Fri, May 01, 2020 at 11:52:32AM +0100, Daniel P. Berrangé wrote: >> The "go fmt" code style checking tool is something we wish to run on all >> Go code, so it is useful to have a common container that can be used by >> all relevant projects. >> >> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> >> --- >> .gitlab-ci.yml | 5 +++++ >> containers/go-fmt/Dockerfile | 9 +++++++++ >> containers/go-fmt/README.rst | 20 ++++++++++++++++++++ >> containers/go-fmt/go-fmt.sh | 24 ++++++++++++++++++++++++ >> 4 files changed, 58 insertions(+) >> create mode 100644 containers/go-fmt/Dockerfile >> create mode 100644 containers/go-fmt/README.rst >> create mode 100755 containers/go-fmt/go-fmt.sh >> >> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml >> index a1ac31a..080c8d1 100644 >> --- a/.gitlab-ci.yml >> +++ b/.gitlab-ci.yml >> @@ -22,6 +22,11 @@ check-dco-container: >> variables: >> NAME: check-dco >> >> +go-fmt-container: >> + <<: *build_container_definition >> + variables: >> + NAME: go-fmt >> + >> # Check that all commits are signed-off for the DCO. Skip >> # on master branch and -maint branches, since we only need >> # to test developer's personal branches. >> diff --git a/containers/go-fmt/Dockerfile b/containers/go-fmt/Dockerfile >> new file mode 100644 >> index 0000000..9079fea >> --- /dev/null >> +++ b/containers/go-fmt/Dockerfile >> @@ -0,0 +1,9 @@ >> +FROM golang:1.14 >> + >> +RUN export DEBIAN_FRONTEND=noninteractive && \ >> + apt-get update && \ >> + apt-get install --no-install-recommends -y \ >> + diffstat && \ >> + apt-get autoclean -y >> + >> +COPY go-fmt.sh /go-fmt >> diff --git a/containers/go-fmt/README.rst b/containers/go-fmt/README.rst >> new file mode 100644 >> index 0000000..0af6998 >> --- /dev/null >> +++ b/containers/go-fmt/README.rst >> @@ -0,0 +1,20 @@ >> +============================================= >> +Container for running go fmt code style check >> +============================================= >> + >> +This container provides a simple way to invoke ``go fmt`` to validate code >> +style across a Golang codebase. It should be integrated into a CI by adding >> +the following snippet to ``.gitlab-ci.yml`` >> + >> +:: >> + >> + go-fmt: >> + stage: prebuild >> + image: registry.gitlab.com/libvirt/libvirt-ci/go-fmt:master >> + script: >> + - /go-fmt >> + artifacts: >> + paths: >> + - go-fmt.patch >> + expire_in: 1 week >> + when: on_failure >> diff --git a/containers/go-fmt/go-fmt.sh b/containers/go-fmt/go-fmt.sh >> new file mode 100755 >> index 0000000..9fda79d >> --- /dev/null >> +++ b/containers/go-fmt/go-fmt.sh >> @@ -0,0 +1,24 @@ >> +#!/bin/sh >> + >> +GOFMT=$(go env GOROOT)/bin/gofmt >> + >> +find -name '*.go' | xargs $GOFMT -d -e > go-fmt.patch >> + >> +if test -n go-fmt.patch > >This was supposed to be "-z" not "-n" but I forgot to commit a chunk > You mean `-s`, right? Because `-z` and `-n` operate on strings, not filenames. >> +then >> + echo >> + echo "❌ ERROR: some files failed go fmt code style check" >> + echo >> + diffstat go-fmt.patch >> + echo >> + echo "See the go-fmt patch artifact for full details of mistakes." >> + echo >> + echo "For guidance on how to configure Emacs or Vim to automatically" >> + echo "run go fmt when saving files read" >> + echo >> + echo " https://blog.golang.org/gofmt" >> + echo >> + exit 1 >> +fi >> + >> +echo "✔ OK: all files passed go fmt code style check" >> -- >> 2.25.4 >> > >Regards, >Daniel >-- >|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| >|: https://libvirt.org -o- https://fstop138.berrange.com :| >|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :| >
On Mon, May 04, 2020 at 09:30:53AM +0200, Martin Kletzander wrote: > On Fri, May 01, 2020 at 12:03:02PM +0100, Daniel P. Berrangé wrote: > > On Fri, May 01, 2020 at 11:52:32AM +0100, Daniel P. Berrangé wrote: > > > The "go fmt" code style checking tool is something we wish to run on all > > > Go code, so it is useful to have a common container that can be used by > > > all relevant projects. > > > > > > Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> > > > --- > > > .gitlab-ci.yml | 5 +++++ > > > containers/go-fmt/Dockerfile | 9 +++++++++ > > > containers/go-fmt/README.rst | 20 ++++++++++++++++++++ > > > containers/go-fmt/go-fmt.sh | 24 ++++++++++++++++++++++++ > > > 4 files changed, 58 insertions(+) > > > create mode 100644 containers/go-fmt/Dockerfile > > > create mode 100644 containers/go-fmt/README.rst > > > create mode 100755 containers/go-fmt/go-fmt.sh > > > > > > diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml > > > index a1ac31a..080c8d1 100644 > > > --- a/.gitlab-ci.yml > > > +++ b/.gitlab-ci.yml > > > @@ -22,6 +22,11 @@ check-dco-container: > > > variables: > > > NAME: check-dco > > > > > > +go-fmt-container: > > > + <<: *build_container_definition > > > + variables: > > > + NAME: go-fmt > > > + > > > # Check that all commits are signed-off for the DCO. Skip > > > # on master branch and -maint branches, since we only need > > > # to test developer's personal branches. > > > diff --git a/containers/go-fmt/Dockerfile b/containers/go-fmt/Dockerfile > > > new file mode 100644 > > > index 0000000..9079fea > > > --- /dev/null > > > +++ b/containers/go-fmt/Dockerfile > > > @@ -0,0 +1,9 @@ > > > +FROM golang:1.14 > > > + > > > +RUN export DEBIAN_FRONTEND=noninteractive && \ > > > + apt-get update && \ > > > + apt-get install --no-install-recommends -y \ > > > + diffstat && \ > > > + apt-get autoclean -y > > > + > > > +COPY go-fmt.sh /go-fmt > > > diff --git a/containers/go-fmt/README.rst b/containers/go-fmt/README.rst > > > new file mode 100644 > > > index 0000000..0af6998 > > > --- /dev/null > > > +++ b/containers/go-fmt/README.rst > > > @@ -0,0 +1,20 @@ > > > +============================================= > > > +Container for running go fmt code style check > > > +============================================= > > > + > > > +This container provides a simple way to invoke ``go fmt`` to validate code > > > +style across a Golang codebase. It should be integrated into a CI by adding > > > +the following snippet to ``.gitlab-ci.yml`` > > > + > > > +:: > > > + > > > + go-fmt: > > > + stage: prebuild > > > + image: registry.gitlab.com/libvirt/libvirt-ci/go-fmt:master > > > + script: > > > + - /go-fmt > > > + artifacts: > > > + paths: > > > + - go-fmt.patch > > > + expire_in: 1 week > > > + when: on_failure > > > diff --git a/containers/go-fmt/go-fmt.sh b/containers/go-fmt/go-fmt.sh > > > new file mode 100755 > > > index 0000000..9fda79d > > > --- /dev/null > > > +++ b/containers/go-fmt/go-fmt.sh > > > @@ -0,0 +1,24 @@ > > > +#!/bin/sh > > > + > > > +GOFMT=$(go env GOROOT)/bin/gofmt > > > + > > > +find -name '*.go' | xargs $GOFMT -d -e > go-fmt.patch > > > + > > > +if test -n go-fmt.patch > > > > This was supposed to be "-z" not "-n" but I forgot to commit a chunk > > > > You mean `-s`, right? Because `-z` and `-n` operate on strings, not filenames. Sigh. Yes. Non-zero file size is what it is supposed to be checking. > > > > +then > > > + echo > > > + echo "❌ ERROR: some files failed go fmt code style check" > > > + echo > > > + diffstat go-fmt.patch > > > + echo > > > + echo "See the go-fmt patch artifact for full details of mistakes." > > > + echo > > > + echo "For guidance on how to configure Emacs or Vim to automatically" > > > + echo "run go fmt when saving files read" > > > + echo > > > + echo " https://blog.golang.org/gofmt" > > > + echo > > > + exit 1 > > > +fi > > > + > > > +echo "✔ OK: all files passed go fmt code style check" > > > -- > > > 2.25.4 > > > > > > > Regards, > > Daniel > > -- > > |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| > > |: https://libvirt.org -o- https://fstop138.berrange.com :| > > |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :| > > Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
© 2016 - 2026 Red Hat, Inc.