aboutsummaryrefslogtreecommitdiff
path: root/forge/forge.scm
AgeCommit message (Collapse)Author
2022-02-28forge: Remove unnecessary (guix gexp) import.Arun Isaac
* forge/forge.scm: Remove (guix gexp) import.
2022-02-28forge: Clone the default branch, not any specific branch.Arun Isaac
* forge/build/git.scm (download-git-to-store): Demote branch to optional keyword argument. * forge/forge.scm (derivation-job-gexp): Do not pass the branch argument to download-git-to-store. * doc/forge.skb (Reference)[<forge-project>]: Document that the repository-branch field is unused.
2022-02-28forge: Do not use use-modules in derivation-job-gexp.Arun Isaac
This composes better. * forge/forge.scm (derivation-job-gexp): Do not use use-modules.
2022-02-28forge: Rename gexp-producer->derivation-output to derivation-job-gexp.Arun Isaac
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.
2022-02-28forge: Rename <forge-project-configuration> to <forge-project>.Arun Isaac
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.
2022-02-28forge: Deprecate <forge-derivation-job>.Arun Isaac
* 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.
2022-02-28forge: Introduce gexp-producer->derivation-output.Arun Isaac
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.
2022-02-28forge: Thunk ci-jobs and run fields.Arun Isaac
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.
2022-02-28forge: Export record type predicates.Arun Isaac
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?.
2022-02-28forge: Export forge-project-configuration-name.Arun Isaac
* forge/forge.scm: Export forge-project-configuration-name.
2022-02-28forge: Add this-record accessors.Arun Isaac
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.
2022-02-18forge: Expand comment on grouping jobs in laminar.Arun Isaac
* forge/forge.scm (forge-service-type): Expand comment stating that jobs are grouped by project.
2022-02-18forge: Allow extension of forge-service-type.Arun Isaac
* forge/forge.scm (forge-service-type): Allow extension of forge-service-type.
2022-02-10forge: Import (forge utils) for with-packages.Arun Isaac
* forge/forge.scm: Import (forge utils).
2022-02-10forge: Print current commit before running CI job.Arun Isaac
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.
2022-02-09forge: Implement our own git downloader.Arun Isaac
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.
2022-02-09forge: Ungexp reason argument.Arun Isaac
* forge/forge.scm (ci-jobs-trigger-gexp): Ungexp reason argument.
2022-02-09forge: Set LAMINAR_REASON.Arun Isaac
* forge/forge.scm (ci-jobs-trigger-gexp): Accept #:reason keyword argument and set LAMINAR_REASON. (forge-activation, forge-service-type): Pass #:reason keyword argument.
2022-02-09forge: Pass <forge-laminar-job> objects to ci-jobs-trigger-gexp.Arun Isaac
* forge/forge.scm (ci-jobs-trigger-gexp): Accept <forge-laminar-job> objects. (forge-activation, forge-service-type): Pass <forge-laminar-job> objects.
2022-02-09forge: Support triggering jobs with a webhook.Arun Isaac
* forge/forge.scm: Import (forge webhook). (<forge-project-configuration>)[ci-jobs-trigger]: Allow 'webhook. (forge-service-type): Extend webhook-service-type.
2022-02-09forge: Return ci-jobs-trigger as G-expression.Arun Isaac
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.
2022-02-09forge: Introduce ci-jobs-trigger field.Arun Isaac
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.
2022-02-09forge: Rename post-receive-hook to ci-jobs-trigger-script.Arun Isaac
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.
2022-02-08forge: Match only exact matches with group regex.Arun Isaac
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.
2022-02-08forge: Support explicit specification of Guix daemon URI.Arun Isaac
* 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.
2022-02-08forge: Add derivation jobs to be executed by the Guix daemon.Arun Isaac
* 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.
2022-02-07forge: Add repository branch field to forge-project-configuration.Arun Isaac
* forge/forge.scm (<forge-project-configuration>)[repository-branch]: New field. Export forge-project-configuration-repository-branch.
2022-01-24forge: Bump copyright year.Arun Isaac
I forgot to bump the copyright year in an earlier commit. * forge/forge.scm: Bump copyright year.
2022-01-21forge: Make user field of <forge-project-configuration> optional.Arun Isaac
* forge/forge.scm (<forge-project-configuration>)[user]: Set default value to #f.
2022-01-09forge: Rename guix-laminar-* to forge-laminar-*.Arun Isaac
* 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.
2022-01-09forge: Import (gnu packages ci).Arun Isaac
(gnu packages ci) is required for the laminar package. * forge/forge.scm: Import (gnu packages ci).
2021-12-21Initial commitArun Isaac