[PATCH] gnu: Add actionlint.

  • Done
  • quality assurance status badge
Details
3 participants
  • Timo Wilken
  • Leo Famulari
  • Ludovic Courtès
Owner
unassigned
Submitted by
Timo Wilken
Severity
normal
T
T
Timo Wilken wrote on 24 Feb 2023 23:35
(address . guix-patches@gnu.org)(name . Timo Wilken)(address . guix@twilken.net)
20230224223537.23194-1-guix@twilken.net
Actionlint is a linter for GitHub Action workflow files.

* gnu/packages/check.scm (actionlint, go-github-com-robfig-cron-1.2): New variable.
* gnu/packages/golang.scm (go-golang.org-x-sync-semaphore): New variable.
---
gnu/packages/check.scm | 71 +++++++++++++++++++++++++++++++++++++++++
gnu/packages/golang.scm | 12 +++++++
2 files changed, 83 insertions(+)

Toggle diff (121 lines)
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 0866558ac2..4e907afeb6 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -42,6 +42,7 @@
;;; Copyright © 2022 Sharlatan Hellseher <sharlatanus@gmail.com>
;;; Copyright © 2022 jgart <jgart@dismail.de>
;;; Copyright © 2023 Luis Felipe López Acevedo <luis.felipe.la@protonmail.com>
+;;; Copyright © 2023 Timo Wilken <guix@twilken.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1028,6 +1029,76 @@ (define-public cpputest
but it works for any C/C++ project.")
(license license:bsd-3)))
+;; Required by actionlint. The version of `go-github-com-robfig-cron'
+;; packaged in Guix is newer and changed some error messages, causing
+;; unit tests in actionlint to fail.
+(define-public go-github-com-robfig-cron-1.2
+ (package
+ (inherit go-github-com-robfig-cron)
+ (name "go-github-com-robfig-cron")
+ (version "1.2.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/robfig/cron")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0nv31m3940d9kf38lw2zs4hpj435bdi9mmim098rb3n4l07qrvva"))))))
+
+(define-public actionlint
+ (package
+ (name "actionlint")
+ (version "1.6.23")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/rhysd/actionlint")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "07is4920a40zrl7mfldg0az2pisi7f6dv4vh3ijn3nzb4i7fqbni"))))
+ (build-system go-build-system)
+ (arguments
+ '(#:import-path "github.com/rhysd/actionlint/cmd/actionlint"
+ #:unpack-path "github.com/rhysd/actionlint"
+ #:install-source? #f))
+ (inputs (list go-github-com-fatih-color
+ go-github-com-mattn-go-colorable
+ go-github-com-mattn-go-runewidth
+ go-github-com-robfig-cron-1.2
+ go-golang.org-x-sync-errgroup
+ go-golang.org-x-sync-semaphore
+ go-gopkg-in-yaml-v3))
+ (native-inputs (list go-github-com-google-go-cmp-cmp))
+ (home-page "https://rhysd.github.io/actionlint/")
+ (synopsis "Static checker for GitHub Actions workflow files")
+ (description
+ "actionlint is a static checker for GitHub Actions
+workflow files. Features include:
+
+@itemize
+@item Syntax check for workflow files to check unexpected or missing
+keys following workflow syntax
+@item Strong type check for @code{$@{@{ @}@}} expressions to catch
+several semantic errors like access to not existing property, type
+mismatches, ...
+@item Actions usage check to check that inputs at @code{with:} and
+outputs in @code{steps.@{id@}.outputs} are correct
+@item Reusable workflow check to check inputs/outputs/secrets of
+reusable workflows and workflow calls
+@item shellcheck and pyflakes integrations for scripts at @code{run:}
+@item Security checks; script injection by untrusted inputs,
+hard-coded credentials
+@item Other several useful checks; glob syntax validation,
+dependencies check for @code{needs:}, runner label validation, cron
+syntax validation, ...
+@end itemize
+")
+ (license license:expat)))
+
(define-public python-parameterized
(package
(name "python-parameterized")
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index c4b6bcd874..7268b661cf 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -39,6 +39,7 @@
;;; Copyright © 2022 Nicolas Graves <ngraves@ngraves.fr>
;;; Copyright © 2022 ( <paren@disroot.org>
;;; Copyright © 2023 Hilton Chain <hako@ultrarare.space>
+;;; Copyright © 2023 Timo Wilken <guix@twilken.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -7409,6 +7410,17 @@ (define-public go-golang.org-x-sync-errgroup
(home-page "https://godoc.org/golang.org/x/sync/errgroup")
(license license:bsd-3))))
+(define-public go-golang.org-x-sync-semaphore
+ (package
+ (inherit go-golang.org-x-sync-errgroup)
+ (name "go-golang.org-x-sync-semaphore")
+ (arguments
+ '(#:import-path "golang.org/x/sync/semaphore"
+ #:unpack-path "golang.org/x/sync"))
+ (synopsis "Weighted semaphore implementation in Go")
+ (description "Weighted semaphore implementation in Go.")
+ (home-page "https://godoc.org/golang.org/x/sync/semaphore")))
+
(define (go-gotest-tools-source version sha256-base32-hash)
(origin
(method git-fetch)
--
2.39.1
L
L
Leo Famulari wrote on 26 Feb 2023 18:43
(name . Timo Wilken)(address . guix@twilken.net)(address . 61773@debbugs.gnu.org)
Y/uaOU0b4c/b4F2I@jasmine.lan
On Fri, Feb 24, 2023 at 11:35:37PM +0100, Timo Wilken wrote:
Toggle quote (5 lines)
> Actionlint is a linter for GitHub Action workflow files.
>
> * gnu/packages/check.scm (actionlint, go-github-com-robfig-cron-1.2): New variable.
> * gnu/packages/golang.scm (go-golang.org-x-sync-semaphore): New variable.

I know it's annoying, but can you split this up into 3 patches? This is
our standard workflow for adding new packages. Thank you!
T
T
Timo Wilken wrote on 26 Feb 2023 20:13
[PATCH 0/3] gnu: Add actionlint.
(address . 61773@debbugs.gnu.org)(name . Timo Wilken)(address . guix@twilken.net)
20230226191321.13521-1-guix@twilken.net
Hi Leo, I hope this is better!

Timo Wilken (3):
gnu: Add go-golang.org-x-sync-semaphore.
gnu: Add go-github-com-robfig-cron-1.2.
gnu: Add actionlint.

gnu/packages/check.scm | 71 +++++++++++++++++++++++++++++++++++++++++
gnu/packages/golang.scm | 12 +++++++
2 files changed, 83 insertions(+)

--
2.39.1
T
T
Timo Wilken wrote on 26 Feb 2023 20:13
[PATCH 1/3] gnu: Add go-golang.org-x-sync-semaphore.
(address . 61773@debbugs.gnu.org)(name . Timo Wilken)(address . guix@twilken.net)
20230226191321.13521-2-guix@twilken.net
* gnu/packages/golang.scm (go-golang.org-x-sync-semaphore):
New variable.
---
gnu/packages/golang.scm | 12 ++++++++++++
1 file changed, 12 insertions(+)

Toggle diff (32 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index c4b6bcd874..7268b661cf 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -39,6 +39,7 @@
;;; Copyright © 2022 Nicolas Graves <ngraves@ngraves.fr>
;;; Copyright © 2022 ( <paren@disroot.org>
;;; Copyright © 2023 Hilton Chain <hako@ultrarare.space>
+;;; Copyright © 2023 Timo Wilken <guix@twilken.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -7409,6 +7410,17 @@ (define-public go-golang.org-x-sync-errgroup
(home-page "https://godoc.org/golang.org/x/sync/errgroup")
(license license:bsd-3))))
+(define-public go-golang.org-x-sync-semaphore
+ (package
+ (inherit go-golang.org-x-sync-errgroup)
+ (name "go-golang.org-x-sync-semaphore")
+ (arguments
+ '(#:import-path "golang.org/x/sync/semaphore"
+ #:unpack-path "golang.org/x/sync"))
+ (synopsis "Weighted semaphore implementation in Go")
+ (description "Weighted semaphore implementation in Go.")
+ (home-page "https://godoc.org/golang.org/x/sync/semaphore")))
+
(define (go-gotest-tools-source version sha256-base32-hash)
(origin
(method git-fetch)
--
2.39.1
T
T
Timo Wilken wrote on 26 Feb 2023 20:13
[PATCH 2/3] gnu: Add go-github-com-robfig-cron-1.2.
(address . 61773@debbugs.gnu.org)(name . Timo Wilken)(address . guix@twilken.net)
20230226191321.13521-3-guix@twilken.net
* gnu/packages/check.scm (go-github-com-robfig-cron-1.2):
New variable.
---
gnu/packages/check.scm | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)

Toggle diff (39 lines)
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 0866558ac2..c928d11f64 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -42,6 +42,7 @@
;;; Copyright © 2022 Sharlatan Hellseher <sharlatanus@gmail.com>
;;; Copyright © 2022 jgart <jgart@dismail.de>
;;; Copyright © 2023 Luis Felipe López Acevedo <luis.felipe.la@protonmail.com>
+;;; Copyright © 2023 Timo Wilken <guix@twilken.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1028,6 +1029,24 @@ (define-public cpputest
but it works for any C/C++ project.")
(license license:bsd-3)))
+;; Required by actionlint. The version of `go-github-com-robfig-cron'
+;; packaged in Guix is newer and changed some error messages, causing
+;; unit tests in actionlint to fail.
+(define-public go-github-com-robfig-cron-1.2
+ (package
+ (inherit go-github-com-robfig-cron)
+ (name "go-github-com-robfig-cron")
+ (version "1.2.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/robfig/cron")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0nv31m3940d9kf38lw2zs4hpj435bdi9mmim098rb3n4l07qrvva"))))))
+
(define-public python-parameterized
(package
(name "python-parameterized")
--
2.39.1
T
T
Timo Wilken wrote on 26 Feb 2023 20:13
[PATCH 3/3] gnu: Add actionlint.
(address . 61773@debbugs.gnu.org)(name . Timo Wilken)(address . guix@twilken.net)
20230226191321.13521-4-guix@twilken.net
Actionlint is a linter for GitHub Action workflow files.

* gnu/packages/check.scm (actionlint): New variable.
---
gnu/packages/check.scm | 52 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)

Toggle diff (65 lines)
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index c928d11f64..4e907afeb6 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -1047,6 +1047,58 @@ (define-public go-github-com-robfig-cron-1.2
(base32
"0nv31m3940d9kf38lw2zs4hpj435bdi9mmim098rb3n4l07qrvva"))))))
+(define-public actionlint
+ (package
+ (name "actionlint")
+ (version "1.6.23")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/rhysd/actionlint")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "07is4920a40zrl7mfldg0az2pisi7f6dv4vh3ijn3nzb4i7fqbni"))))
+ (build-system go-build-system)
+ (arguments
+ '(#:import-path "github.com/rhysd/actionlint/cmd/actionlint"
+ #:unpack-path "github.com/rhysd/actionlint"
+ #:install-source? #f))
+ (inputs (list go-github-com-fatih-color
+ go-github-com-mattn-go-colorable
+ go-github-com-mattn-go-runewidth
+ go-github-com-robfig-cron-1.2
+ go-golang.org-x-sync-errgroup
+ go-golang.org-x-sync-semaphore
+ go-gopkg-in-yaml-v3))
+ (native-inputs (list go-github-com-google-go-cmp-cmp))
+ (home-page "https://rhysd.github.io/actionlint/")
+ (synopsis "Static checker for GitHub Actions workflow files")
+ (description
+ "actionlint is a static checker for GitHub Actions
+workflow files. Features include:
+
+@itemize
+@item Syntax check for workflow files to check unexpected or missing
+keys following workflow syntax
+@item Strong type check for @code{$@{@{ @}@}} expressions to catch
+several semantic errors like access to not existing property, type
+mismatches, ...
+@item Actions usage check to check that inputs at @code{with:} and
+outputs in @code{steps.@{id@}.outputs} are correct
+@item Reusable workflow check to check inputs/outputs/secrets of
+reusable workflows and workflow calls
+@item shellcheck and pyflakes integrations for scripts at @code{run:}
+@item Security checks; script injection by untrusted inputs,
+hard-coded credentials
+@item Other several useful checks; glob syntax validation,
+dependencies check for @code{needs:}, runner label validation, cron
+syntax validation, ...
+@end itemize
+")
+ (license license:expat)))
+
(define-public python-parameterized
(package
(name "python-parameterized")
--
2.39.1
L
L
Leo Famulari wrote on 26 Feb 2023 20:30
Re: [bug#61773] [PATCH 0/3] gnu: Add actionlint.
(name . Timo Wilken)(address . guix@twilken.net)(address . 61773@debbugs.gnu.org)
Y/uzbje6dN0F7FZh@jasmine.lan
On Sun, Feb 26, 2023 at 08:13:18PM +0100, Timo Wilken wrote:
Toggle quote (7 lines)
> Hi Leo, I hope this is better!
>
> Timo Wilken (3):
> gnu: Add go-golang.org-x-sync-semaphore.
> gnu: Add go-github-com-robfig-cron-1.2.
> gnu: Add actionlint.

Thanks! Pushed as eb87d2c4a0b5d817e50a43d9f16d204650dc02e8
L
L
Ludovic Courtès wrote on 30 Mar 2023 23:09
control message for bug #61773
(address . control@debbugs.gnu.org)
874jq2hrpp.fsf@gnu.org
close 61773
quit
?
Your comment

This issue is archived.

To comment on this conversation send an email to 61773@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 61773
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch