Age | Commit message (Collapse) | Author |
|
derivation-job-gexp is less verbose. Besides, this function accepts
forge projects and forge laminar jobs. So, there is no point
pretending that this is a generic gexp function.
* forge/forge.scm (gexp-producer->derivation-output): Rename to
derivation-job-gexp.
|
|
We need not suffix every record name with "configuration". Besides,
<forge-project> is not directly a service configuration record.
* forge/forge.scm (forge)[<forge-project-configuration>]: Rename to
<forge-project>.
Update all invocations of <forge-project> accessors.
|
|
* forge/forge.scm (<forge-derivation-job>): Delete record type.
(<forge-configuration>)[guix-daemon-uri]: Delete field.
(forge-project-configuration-laminar-jobs): Delete function.
(forge-activation, forge-service-type): Use
forge-project-configuration-ci-jobs instead of
forge-project-configuration-laminar-jobs.
(gexp-producer->job-script): Delete function.
|
|
gexp-producer->derivation-output will allow us to deprecate
<forge-derivation-job> and enable users to construct laminar jobs that
build derivations with just <forge-laminar-job>.
* forge/forge.scm (gexp-producer->derivation-output): New public
function.
|
|
These fields need to be thunked to allow the user access to
this-record accessors when describing jobs.
* forge/forge.scm (<forge-project-configuration>)[ci-jobs]: Thunk
field.
* forge/laminar.scm (<forge-laminar-job>)[run]: Thunk field.
|
|
Predicates are also a part of the public interface of a record type
and are sometimes required.
* forge/forge.scm: Export predicates forge-configuration?,
forge-project-configuration? and forge-derivation-job?.
* forge/laminar.scm: Export predicate forge-laminar-configuration?.
|
|
* forge/forge.scm: Export forge-project-configuration-name.
|
|
These this-record accessors will be required in thunked fields.
* forge/forge.scm (<forge-project-configuration>): Add
this-forge-project-configuration accessor and export it. Use it
instead of this-record in the default value of the ci-jobs-trigger
field.
* forge/laminar.scm (<forge-laminar-job>): Add this-forge-laminar-job
accessor and export it.
|
|
* forge/forge.scm (forge-service-type): Expand comment stating that
jobs are grouped by project.
|
|
* forge/forge.scm (forge-service-type): Allow extension of
forge-service-type.
|
|
* forge/build/git.scm (download-git-to-store): Remove git-fetch:
prefix in error message.
|
|
* forge/forge.scm: Import (forge utils).
|
|
This aids debugging especially when a job fails.
* forge/build/git.scm (hline): New function.
(download-git-to-store): Add #:show-commit? keyword argument. When
show-commit? is #t, print current commit.
* forge/forge.scm (gexp-producer->job-script): Pass #t as
#:show-commit? to latest-git-checkout.
|
|
Implement our own git downloader independent of that provided by
Guix. This is required for better control of the output, and to later
print the current git commit.
* forge/build/git.scm: Do not import (guix build git). Import (rnrs
exceptions).
(download-git-to-store): Do not accept #:git-command argument. Expect
git and nss-certs to be in the environment. Do not call git-fetch
from (guix build git).
* forge/forge.scm: Import nss-certs from (gnu packages certs).
(gexp-producer->job-script): Run in environment with the git-minimal
and nss-certs packages. Do not pass #:git-command to
latest-git-checkout.
|
|
* forge/forge.scm (ci-jobs-trigger-gexp): Ungexp reason argument.
|
|
* forge/forge.scm (ci-jobs-trigger-gexp): Accept #:reason keyword
argument and set LAMINAR_REASON.
(forge-activation, forge-service-type): Pass #:reason keyword
argument.
|
|
* forge/forge.scm (ci-jobs-trigger-gexp): Accept <forge-laminar-job>
objects.
(forge-activation, forge-service-type): Pass <forge-laminar-job>
objects.
|
|
* forge/forge.scm: Import (forge webhook).
(<forge-project-configuration>)[ci-jobs-trigger]: Allow 'webhook.
(forge-service-type): Extend webhook-service-type.
|
|
* forge/webhook.scm: New file.
|
|
G-expressions are more versatile than file-like objects and compose
cleanly under different circumstances.
* forge/forge.scm (ci-jobs-trigger-script): Rename to
ci-jobs-trigger-gexp and return a G-expression.
(forge-activation, forge-service-type): Invoke ci-jobs-trigger-gexp
instead of ci-jobs-trigger-script and pass its output to program-file.
|
|
Allow explicitly specifying the CI jobs trigger mechanism. This will
enable us to later introduce the webhook trigger mechanism.
* forge/forge.scm: Export forge-project-configuration-ci-jobs-trigger.
(<forge-project-configuration>)[ci-jobs-trigger]: New field.
(forge-activation): Use the ci-jobs-trigger field to decide whether to
install the post receive hook.
(forge-service-type): Use the ci-jobs-trigger field to decide whether
to set up a cron job.
|
|
ci-jobs-trigger is a more generic term, and better reflects its
use not only as a post-receive hook, but also as a cron job. Later,
ci-jobs-trigger will also be used as a webhook command.
* forge/forge.scm (post-receive-hook): Rename to
ci-jobs-trigger-script.
(forge-activation, forge-service-type): Invoke ci-jobs-trigger-script
instead of post-receive-hook.
|
|
* forge/build/git.scm: New file.
|
|
Prior to this commit, group regular expressions could match parts of
job names. After this commit, they will only match the entire job
name.
* forge/forge.scm (forge-service-type): Surround regex in a
non-capturing group, and ^ and $ for exact matches.
|
|
* forge/forge.scm: Import (srfi srfi-26). Export
forge-configuration-guix-daemon-uri.
(<forge-configuration>)[guix-daemon-uri]: New field.
(forge-project-configuration-laminar-jobs): Accept forge configuration
as argument and pass on guix-daemon-uri to gexp-producer->job-script.
(forge-activation, forge-service-type): Pass forge configuration to
forge-project-configuration-laminar-jobs.
(gexp-producer->job-script): Accept guix-daemon-uri as argument and
parameterize store accesses with it.
|
|
* forge/forge.scm: Import guile-gcrypt from (gnu packages gnupg),
guile-3.0 and guile-zlib from (gnu packages guile), git-minimal
from (gnu packages version-control), (guix gexp), (guix
modules), (guix packages), and (guix store). Export
forge-derivation-job, forge-derivation-job-name,
forge-derivation-job-run and forge-derivation-job-after.
(<forge-derivation-job>): New type.
(forge-project-configuration-laminar-jobs, import-module?,
gexp-producer->job-script): New function.
(forge-activation, forge-service-type): Call
forge-project-configuration-laminar-jobs instead of
forge-project-configuration-ci-jobs.
|
|
* forge/forge.scm (<forge-project-configuration>)[repository-branch]:
New field.
Export forge-project-configuration-repository-branch.
|
|
with-packages allows for easy creation of G-expressions where a list
of specified packages are available. It is to G-expressions what `guix
shell' is to the shell. with-packages is frequently used in the
definition of CI jobs.
* forge/utils.scm: New file.
|
|
I forgot to bump the copyright year in an earlier commit.
* forge/forge.scm: Bump copyright year.
|
|
* forge/laminar.scm (forge-laminar-activation): Create laminar
configuration directory if it does not exist.
|
|
* forge/forge.scm (<forge-project-configuration>)[user]: Set default
value to #f.
|
|
* forge/laminar.scm: Rename all guix-laminar-* names to
forge-laminar-*.
* forge/forge.scm (forge-activation, forge-service-type): Replace
guix-laminar-job-name with forge-laminar-job-name.
(forge-service-type): Replace guix-laminar-service-type with
forge-laminar-service-type and guix-laminar-group with
forge-laminar-group.
|
|
(gnu packages ci) is required for the laminar package.
* forge/forge.scm: Import (gnu packages ci).
|
|
|