The 40ants-ci Reference Manual

Table of Contents

Next: , Previous: , Up: (dir)   [Contents][Index]

The 40ants-ci Reference Manual

This is the 40ants-ci Reference Manual, version 0.1.0, generated automatically by Declt version 3.0 "Montgomery Scott" on Sun May 15 03:32:30 2022 GMT+0.


Next: , Previous: , Up: Top   [Contents][Index]

1 Introduction

40Ants-CI - Github Workflow Generator

This is a small utility, which can generate GitHub workflows for Common Lisp projects.

It generates workflow for running tests and building docs. These workflows use 40ants/run-tests and 40ants/build-docs actions and SBLint to check code for compilation errors.

40ANTS-CI ASDF System Details

Reasons to Use

Quickstart

This system allows you to define workflows in the lisp code. The best way is to make these definitions a part of your ASDF system. This way 40ants-ci will be able to automatically understand for which system it builds a workflow.

Each workflow consists of jobs and each job is a number of steps.

There are three predefine types of jobs and you can create your own. Predefined jobs allows to reuse steps in multiple CL libraries.

In next examples, I'll presume you are writing code in a file which is the part of the package inferred ASDF system EXAMPLE/CI. A file should have the following header:

(defpackage #:example/ci
  (:use #:cl)
  (:import-from #:40ants-ci/workflow
                #:defworkflow)
  (:import-from #:40ants-ci/jobs/linter)
  (:import-from #:40ants-ci/jobs/run-tests)
  (:import-from #:40ants-ci/jobs/docs))

Job Types

Linter

The simplest job type is linter. It loads a

(defworkflow linter
  :on-pull-request t
  :jobs ((40ants-ci/jobs/linter:linter)))

When you'll hit C-c C-c on this definition, it will generate .github/workflows/linter.yml with following content:

{
  "name": "LINTER",
  "on": {
    "pull_request": null
  },
  "jobs": {
    "linter": {
      "runs-on": "ubuntu-latest",
      "env": {
        "OS": "ubuntu-latest",
        "QUICKLISP_DIST": "quicklisp",
        "LISP": "sbcl-bin"
      },
      "steps": [
        {
          "name": "Checkout Code",
          "uses": "actions/checkout@v1"
        },
        {
          "name": "Setup Common Lisp Environment",
          "uses": "40ants/setup-lisp@v2",
          "with": {
            "asdf-system": "example"
          }
        },
        {
          "name": "Install SBLint",
          "run": "qlot exec ros install cxxxr/sblint",
          "shell": "bash"
        },
        {
          "name": "Run Linter",
          "run": "qlot exec sblint example.asd",
          "shell": "bash"
        }
      ]
    }
  }
}

Here you can see, a few steps in the job:

  1. Checkout the code.

  2. Install Roswell & Qlot using 40ants/setup-lisp action.

  3. Install SBLint.

  4. Run linter for example.asd.

Another interesting thing is that this workflow automatically uses ubuntu-latest OS, Quicklisp and sbcl-bin Lisp implementation. Later I'll show you how to redefine these settings.

Critic

This job is similar to linter, but instead of SBLint it runs Lisp Critic.

Lisp Critic is a program which advices how to make you Common Lisp code more idiomatic, readable and performant. Also, sometimes it might catch logical errors in the code.

Here is how you can add this job type in your workflow:

(defworkflow ci
  :on-pull-request t
  :jobs ((40ants-ci/jobs/critic:critic)))

Also, you might combine this job together with others, for example, with linter:

(defworkflow ci
  :on-pull-request t
  :jobs ((40ants-ci/jobs/linter:linter)
         (40ants-ci/jobs/critic:critic)))

and they will be executed in parallel. See docs on 40ants-ci/jobs/critic:critic function to learn about supported arguments.

Running Tests

Another interesting job type is 40ants-ci/jobs/run-tests:run-tests (1 2).

When using this job type, make sure, your system runs tests on (ASDF:TEST-SYSTEM :system-name) call and signals error if something went wrong.


(defworkflow ci
  :on-push-to "master"
  :by-cron "0 10 * * 1"
  :on-pull-request t
  :jobs ((40ants-ci/jobs/run-tests:run-tests
          :coverage t)))

Here I've added a few options to the workflow:

It will generate .github/workflows/ci.yml with following content:

{
  "name": "CI",
  "on": {
    "push": {
      "branches": [
        "master"
      ]
    },
    "pull_request": null,
    "schedule": [
      {
        "cron": "0 10 * * 1"
      }
    ]
  },
  "jobs": {

    "run-tests": {
      "runs-on": "ubuntu-latest",
      "env": {
        "OS": "ubuntu-latest",
        "QUICKLISP_DIST": "quicklisp",
        "LISP": "sbcl-bin"
      },
      "steps": [
        {
          "name": "Checkout Code",
          "uses": "actions/checkout@v1"
        },
        {
          "name": "Setup Common Lisp Environment",
          "uses": "40ants/setup-lisp@v2",
          "with": {
            "asdf-system": "example"
          }
        },
        {
          "name": "Run Tests",
          "uses": "40ants/run-tests@v2",
          "with": {
            "asdf-system": "example",
            "coveralls-token": "${{ secrets.github_token }}"
          }
        }
      ]
    }
  }
}

The result is similar to the workflow generated for Linter, but uses 40ants/setup-lisp action at the final step.

Also, I've passed an option :coverage t to the job. Thus coverage report will be uploaded to Coveralls.io automatically.

Defining a test Matrix

Lisp has many implementations and can be used on multiple platforms. Thus it is a good idea to test our software on many combinations of OS and lisp implementations. Workflow generator makes this very easy.

Here is an example of workflow definition with three dimentional matrix. It not only tests a library under different lisps and OS, but also checks if it works with the latest Quicklisp and Ultralisp distributions:

(defworkflow ci
  :on-pull-request t
  :jobs ((run-tests
          :os ("ubuntu-latest"
               "macos-latest")
          :quicklisp ("quicklisp"
                      "ultralisp")
          :lisp ("sbcl-bin"
                 "ccl-bin"
                 "allegro"
                 "clisp"
                 "cmucl")
          :exclude (;; Seems allegro is does not support 64bit OSX.
                    ;; Unable to install it using Roswell:
                    ;; alisp is not executable. Missing 32bit glibc?
                    (:os "macos-latest" :lisp "allegro")))))

Multiple jobs

Besides a build matrix, you might specify a multiple jobs of the same type, but with different parameters:

(defworkflow ci
  :on-push-to "master"
  :on-pull-request t
  :jobs ((run-tests
          :lisp "sbcl-bin")
         (run-tests
          :lisp "ccl-bin")
         (run-tests
          :lisp "allegro")))

This will generate a workflow with three jobs: "run-tests", "run-tests-2" and "run-tests-3".

Meaningful names might be specified as well:

(defworkflow ci
  :on-push-to "master"
  :on-pull-request t
  :jobs ((run-tests
          :name "test-on-sbcl"
          :lisp "sbcl-bin")
         (run-tests
          :name "test-on-ccl"
          :lisp "ccl-bin")
         (run-tests
          :name "test-on-allegro"
          :lisp "allegro")))

Here is how these jobs will look like in the GitHub interface:

Building Docs

Third predefined job type is 40ants-ci/jobs/docs:build-docs (1 2). It uses 40ants/build-docs action and will work only if your ASDF system uses a documentation builder supported by 40ants/docs-builder.

To build docs on every push to master, just use this code:


(defworkflow docs
  :on-push-to "master"
  :jobs ((40ants-ci/jobs/docs:build-docs)))

It will generate .github/workflows/docs.yml with following content:


{
  "name": "DOCS",
  "on": {
    "push": {
      "branches": [
        "master"
      ]
    }
  },
  "jobs": {
    "build-docs": {
      "runs-on": "ubuntu-latest",
      "env": {
        "OS": "ubuntu-latest",
        "QUICKLISP_DIST": "quicklisp",
        "LISP": "sbcl-bin"
      },
      "steps": [
        {
          "name": "Checkout Code",
          "uses": "actions/checkout@v1"
        },
        {
          "name": "Setup Common Lisp Environment",
          "uses": "40ants/setup-lisp@v2",
          "with": {
            "asdf-system": "example",
            "qlfile-template": ""
          }
        },
        {
          "name": "Build Docs",
          "uses": "40ants/build-docs@v1",
          "with": {
            "asdf-system": "example"
          }
        }
      ]
    }
  }
}

Caching

To significantly speed up our tests, we can cache installed Roswell, Qlot and Common Lisp fasl files.

To accomplish this task, you don't need to dig into GitHub's docs anymore! Just add one line :cache t to your workflow definition:

(defworkflow docs
  :on-push-to "master"
  :cache t
  :jobs ((40ants-ci/jobs/docs:build-docs)))

Here is the diff of the generated workflow file. It shows steps, added automatically:

modified   .github/workflows/docs.yml
@@ -20,13 +20,40 @@
           "name": "Checkout Code",
           "uses": "actions/checkout@v1"
         },
+        {
+          "name": "Grant All Perms to Make Cache Restoring Possible",
+          "run": "sudo mkdir -p /usr/local/etc/roswell\n                 sudo chown \"${USER}\" /usr/local/etc/roswell\n                 # Here the ros binary will be restored:\n                 sudo chown \"${USER}\" /usr/local/bin",
+          "shell": "bash"
+        },
+        {
+          "name": "Get Current Month",
+          "id": "current-month",
+          "run": "echo \"::set-output name=value::$(date -u \"+%Y-%m\")\"",
+          "shell": "bash"
+        },
+        {
+          "name": "Cache Roswell Setup",
+          "id": "cache",
+          "uses": "actions/cache@v2",
+          "with": {
+            "path": "qlfile\n                           qlfile.lock\n                           /usr/local/bin/ros\n                           ~/.cache/common-lisp/\n                           ~/.roswell\n                           /usr/local/etc/roswell\n                           .qlot",
+            "key": "${{ steps.current-month.outputs.value }}-${{ env.cache-name }}-ubuntu-latest-quicklisp-sbcl-bin-${{ hashFiles('qlfile.lock') }}"
+          }
+        },
+        {
+          "name": "Restore Path To Cached Files",
+          "run": "echo $HOME/.roswell/bin >> $GITHUB_PATH\n                 echo .qlot/bin >> $GITHUB_PATH",
+          "shell": "bash",
+          "if": "steps.cache.outputs.cache-hit == 'true'"
+        },
         {
           "name": "Setup Common Lisp Environment",
           "uses": "40ants/setup-lisp@v2",
           "with": {
             "asdf-system": "40ants-ci",
             "qlfile-template": ""
-          }
+          },
+          "if": "steps.cache.outputs.cache-hit != 'true'"
         },
         {

Details

TODO: I have to write a few chapters with details on additional job's parameters and a way how to create new job types.

function 40ants-ci:generate system &key path

Generates GitHub workflow for given ASDF system.

This function searches workflow definitions in all packages of the given ASDF system.

If PATH argument is not given, workflow files will be written to .github/workflow/ relarive to the SYSTEM.

function 40ants-ci/jobs/run-tests:run-tests &rest rest &key coverage qlfile asdf-system asdf-version os quicklisp lisp exclude custom

Creates a job step of class run-tests.

class 40ants-ci/jobs/run-tests:run-tests (lisp-job)

This job test runs tests for a given ASDF system.

function 40ants-ci/jobs/docs:build-docs &key asdf-system asdf-version (error-on-warnings t)

Creates a job of class build-docs.

class 40ants-ci/jobs/docs:build-docs (lisp-job)

Builds documentation and uploads it to GitHub using "40ants/build-docs" github action.

function 40ants-ci/jobs/linter:linter &key asdf-systems asdf-version

Creates a job which will run SBLint for given ASDF systems.

If no ASD files given, it will use all ASD files from the current ASDF system.

function 40ants-ci/jobs/linter:linter &key asdf-systems asdf-version

Creates a job which will run SBLint for given ASDF systems.

If no ASD files given, it will use all ASD files from the current ASDF system.

class 40ants-ci/jobs/critic:critic (lisp-job)

function 40ants-ci/jobs/critic:critic &key asdf-systems asdf-version ignore-critiques

Creates a job which will run Lisp Critic for given ASDF systems.

If argument ASDF-SYSTEMS is NIL, it will use ASDF system to which current lisp file is belong.

You may also provide ASDF-VERSION argument. It should be a string. By default, the latest ASDF version will be used.


[generated by 40ANTS-DOC]

Next: , Previous: , Up: Top   [Contents][Index]

2 Systems

The main system appears first, followed by any subsystem dependency.


Next: , Previous: , Up: Systems   [Contents][Index]

2.1 40ants-ci

Author

Alexander Artemenko

Home Page

https://40ants.com/ci/

Source Control

(:git "https://github.com/40ants/ci")

License

BSD

Description

A tool simplify continuous deployment for Common Lisp projects.

Long Description

<a id="x-2840ANTS-CI-3A-40README-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

# 40Ants-CI - Github Workflow Generator

[![](https://github-actions.40ants.com/40ants/ci/matrix.svg)][de0b]

This is a small utility, which can generate GitHub workflows for Common Lisp
projects.

It generates workflow for running tests and building docs. These workflows
use [40ants/run-tests][8469] and [40ants/build-docs][b882]
actions and [‘SBLint‘][2f94] to check code for compilation errors.

<a id="40-ants-ci-asdf-system-details"></a>

## 40ANTS-CI ASDF System Details

* Version: 0.1.0

* Description: A tool simplify continuous deployment for Common Lisp projects.

* Licence: ‘BSD‘

* Author: Alexander Artemenko

* Homepage: [https://40ants.com/ci/][3f72]

* Source control: [GIT][e681]

<a id="x-2840ANTS-CI-3A-3A-40REASONS-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

## Reasons to Use

* This system hides all entrails related to caching.

* Includes a few ready to use job types.

* Custom job types can be defined and distributed as separate ‘ASDF‘ systems.

* You don’t have to write ‘YAML‘ anymore!

<a id="x-2840ANTS-CI-3A-3A-40QUICKSTART-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

## Quickstart

This system allows you to define workflows in the lisp code. The best way is to make these
definitions a part of your ‘ASDF‘ system. This way [‘40ants-ci‘][b171] will be able to
automatically understand for which system it builds a workflow.

Each workflow consists of jobs and each job is a number of steps.

There are three predefine types of jobs and you can create your own. Predefined jobs
allows to reuse steps in multiple ‘CL‘ libraries.

In next examples, I’ll presume you are writing code in a file which is the part
of the package inferred ‘ASDF‘ system ‘EXAMPLE/CI‘. A file should have the following header:

“‘lisp
(defpackage #:example/ci
(:use #:cl)
(:import-from #:40ants-ci/workflow
#:defworkflow)
(:import-from #:40ants-ci/jobs/linter)
(:import-from #:40ants-ci/jobs/run-tests)
(:import-from #:40ants-ci/jobs/docs))
“‘
<a id="x-2840ANTS-CI-3A-3A-40JOB-TYPES-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

### Job Types

<a id="x-2840ANTS-CI-3A-3A-40LINTER-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

#### Linter

The simplest job type is linter. It loads a

“‘lisp
(defworkflow linter
:on-pull-request t
:jobs ((40ants-ci/jobs/linter:linter)))
“‘
When you’ll hit ‘C-c C-c‘ on this definition,
it will generate ‘.github/workflows/linter.yml‘ with following content:

“‘json
{
"name": "LINTER",
"on": {
"pull_request": null
},
"jobs": {
"linter": {
"runs-on": "ubuntu-latest",
"env": {
"OS": "ubuntu-latest",
"QUICKLISP_DIST": "quicklisp",
"LISP": "sbcl-bin"
},
"steps": [
{
"name": "Checkout Code",
"uses": "actions/checkout@v1"
},
{
"name": "Setup Common Lisp Environment",
"uses": "40ants/setup-lisp@v2",
"with": {
"asdf-system": "example"
}
},
{
"name": "Install SBLint",
"run": "qlot exec ros install cxxxr/sblint",
"shell": "bash"
},
{
"name": "Run Linter",
"run": "qlot exec sblint example.asd",
"shell": "bash"
}
]
}
}
}
“‘
Here you can see, a few steps in the job:

1. Checkout the code.

2. Install Roswell & Qlot using [40ants/setup-lisp][8de1] action.

3. Install [‘SBLint‘][2f94].

4. Run linter for ‘example.asd‘.

Another interesting thing is that this workflow automatically uses ‘ubuntu-latest‘ ‘OS‘,
‘Quicklisp‘ and ‘sbcl-bin‘ Lisp implementation. Later I’ll show you how to redefine these settings.

<a id="x-2840ANTS-CI-3A-3A-40CRITIC-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

#### Critic

This job is similar to linter, but instead of ‘SBL‘int it runs
[Lisp Critic][2100].

Lisp Critic is a program which advices how to make you Common Lisp code more
idiomatic, readable and performant. Also, sometimes it might catch logical
errors in the code.

Here is how you can add this job type in your workflow:

“‘lisp
(defworkflow ci
:on-pull-request t
:jobs ((40ants-ci/jobs/critic:critic)))
“‘
Also, you might combine this job together with others, for example,
with linter:

“‘lisp
(defworkflow ci
:on-pull-request t
:jobs ((40ants-ci/jobs/linter:linter)
(40ants-ci/jobs/critic:critic)))
“‘
and they will be executed in parallel. See docs on [‘40ants-ci/jobs/critic:critic‘][484a] function
to learn about supported arguments.

<a id="x-2840ANTS-CI-3A-3A-40RUN-TESTS-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

#### Running Tests

Another interesting job type is ‘40ants-ci/jobs/run-tests:run-tests‘ ([‘1‘][6cb7] [‘2‘][e35d]).

When using this job type, make sure, your system
runs tests on ‘(ASDF:TEST-SYSTEM :system-name)‘ call
and signals error if something went wrong.

“‘lisp

(defworkflow ci
:on-push-to "master"
:by-cron "0 10 * * 1"
:on-pull-request t
:jobs ((40ants-ci/jobs/run-tests:run-tests
:coverage t)))
“‘
Here I’ve added a few options to the workflow:

* ‘by-cron‘ - sets a schedule.

* ‘on-push-to‘ - defines a branch or branches to track.

It will generate ‘.github/workflows/ci.yml‘ with following content:

“‘json
{
"name": "CI",
"on": {
"push": {
"branches": [
"master"
]
},
"pull_request": null,
"schedule": [
{
"cron": "0 10 * * 1"
}
]
},
"jobs": {

"run-tests": {
"runs-on": "ubuntu-latest",
"env": {
"OS": "ubuntu-latest",
"QUICKLISP_DIST": "quicklisp",
"LISP": "sbcl-bin"
},
"steps": [
{
"name": "Checkout Code",
"uses": "actions/checkout@v1"
},
{
"name": "Setup Common Lisp Environment",
"uses": "40ants/setup-lisp@v2",
"with": {
"asdf-system": "example"
}
},
{
"name": "Run Tests",
"uses": "40ants/run-tests@v2",
"with": {
"asdf-system": "example",
"coveralls-token": "${{ secrets.github_token }}"
}
}
]
}
}
}
“‘
The result is similar to the workflow generated for Linter,
but uses [40ants/setup-lisp][59d7] action
at the final step.

Also, I’ve passed an option ‘:coverage t‘ to the job. Thus coverage
report will be uploaded to [Coveralls.io][b60c] automatically.

<a id="x-2840ANTS-CI-3A-3A-40MATRIX-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

##### Defining a test Matrix

Lisp has many implementations and can be used on multiple platforms. Thus
it is a good idea to test our software on many combinations of ‘OS‘ and lisp
implementations. Workflow generator makes this very easy.

Here is an example of workflow definition with three dimentional matrix.
It not only tests a library under different lisps and ‘OS‘, but also checks
if it works with the latest Quicklisp and Ultralisp distributions:

“‘lisp
(defworkflow ci
:on-pull-request t
:jobs ((run-tests
:os ("ubuntu-latest"
"macos-latest")
:quicklisp ("quicklisp"
"ultralisp")
:lisp ("sbcl-bin"
"ccl-bin"
"allegro"
"clisp"
"cmucl")
:exclude (;; Seems allegro is does not support 64bit OSX.
;; Unable to install it using Roswell:
;; alisp is not executable. Missing 32bit glibc?
(:os "macos-latest" :lisp "allegro")))))
“‘
<a id="x-2840ANTS-CI-3A-3A-40MULTIPLE-JOBS-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

##### Multiple jobs

Besides a build matrix, you might specify a multiple jobs of the same type,
but with different parameters:

“‘lisp
(defworkflow ci
:on-push-to "master"
:on-pull-request t
:jobs ((run-tests
:lisp "sbcl-bin")
(run-tests
:lisp "ccl-bin")
(run-tests
:lisp "allegro")))
“‘
This will generate a workflow with three jobs: "run-tests", "run-tests-2" and "run-tests-3".

Meaningful names might be specified as well:

“‘lisp
(defworkflow ci
:on-push-to "master"
:on-pull-request t
:jobs ((run-tests
:name "test-on-sbcl"
:lisp "sbcl-bin")
(run-tests
:name "test-on-ccl"
:lisp "ccl-bin")
(run-tests
:name "test-on-allegro"
:lisp "allegro")))
“‘
Here is how these jobs will look like in the GitHub interface:

![](https://user-images.githubusercontent.com/24827/151619261-2d49e2a6-bc5c-42db-aec5-674d9229a1b0.png)

<a id="x-2840ANTS-CI-3A-3A-40BUILD-DOCS-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

#### Building Docs

Third predefined job type is ‘40ants-ci/jobs/docs:build-docs‘ ([‘1‘][1ddb] [‘2‘][13b8]).
It uses [40ants/build-docs][613f]
action and will work only if your ‘ASDF‘ system uses a documentation builder supported by
[40ants/docs-builder][f2be].

To build docs on every push to master, just use this code:

“‘lisp

(defworkflow docs
:on-push-to "master"
:jobs ((40ants-ci/jobs/docs:build-docs)))
“‘
It will generate ‘.github/workflows/docs.yml‘ with following content:

“‘json

{
"name": "DOCS",
"on": {
"push": {
"branches": [
"master"
]
}
},
"jobs": {
"build-docs": {
"runs-on": "ubuntu-latest",
"env": {
"OS": "ubuntu-latest",
"QUICKLISP_DIST": "quicklisp",
"LISP": "sbcl-bin"
},
"steps": [
{
"name": "Checkout Code",
"uses": "actions/checkout@v1"
},
{
"name": "Setup Common Lisp Environment",
"uses": "40ants/setup-lisp@v2",
"with": {
"asdf-system": "example",
"qlfile-template": ""
}
},
{
"name": "Build Docs",
"uses": "40ants/build-docs@v1",
"with": {
"asdf-system": "example"
}
}
]
}
}
}
“‘
<a id="x-2840ANTS-CI-3A-3A-40CACHING-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

### Caching

To significantly speed up our tests, we can cache installed Roswell,
Qlot and Common Lisp fasl files.

To accomplish this task, you don’t need to dig into GitHub’s docs anymore!
Just add one line ‘:cache t‘ to your workflow definition:

“‘lisp
(defworkflow docs
:on-push-to "master"
:cache t
:jobs ((40ants-ci/jobs/docs:build-docs)))
“‘
Here is the diff of the generated workflow file. It shows steps, added automatically:

“‘diff
modified .github/workflows/docs.yml
@@ -20,13 +20,40 @@
"name": "Checkout Code",
"uses": "actions/checkout@v1"
},
+ {
+ "name": "Grant All Perms to Make Cache Restoring Possible",
+ "run": "sudo mkdir -p /usr/local/etc/roswell\n sudo chown \"${USER}\" /usr/local/etc/roswell\n # Here the ros binary will be restored:\n sudo chown \"${USER}\" /usr/local/bin",
+ "shell": "bash"
+ },
+ {
+ "name": "Get Current Month",
+ "id": "current-month",
+ "run": "echo \"::set-output name=value::$(date -u \"+%Y-%m\")\"",
+ "shell": "bash"
+ },
+ {
+ "name": "Cache Roswell Setup",
+ "id": "cache",
+ "uses": "actions/cache@v2",
+ "with": {
+ "path": "qlfile\n qlfile.lock\n /usr/local/bin/ros\n ~/.cache/common-lisp/\n ~/.roswell\n /usr/local/etc/roswell\n .qlot", + "key": "${{ steps.current-month.outputs.value }}-${{ env.cache-name }}-ubuntu-latest-quicklisp-sbcl-bin-${{ hashFiles(’qlfile.lock’) }}"
+ }
+ },
+ {
+ "name": "Restore Path To Cached Files",
+ "run": "echo $HOME/.roswell/bin >> $GITHUB_PATH\n echo .qlot/bin >> $GITHUB_PATH",
+ "shell": "bash",
+ "if": "steps.cache.outputs.cache-hit == ’true’"
+ },
{
"name": "Setup Common Lisp Environment",
"uses": "40ants/setup-lisp@v2",
"with": {
"asdf-system": "40ants-ci",
"qlfile-template": ""
- }
+ },
+ "if": "steps.cache.outputs.cache-hit != ’true’"
},
{
“‘
<a id="x-2840ANTS-CI-3A-3A-40DETAILS-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

## Details

‘TODO‘: I have to write a few chapters with details on additional job’s parameters
and a way how to create new job types.

<a id="x-2840ANTS-CI-3AGENERATE-20FUNCTION-29"></a>

### [function](b4a6) ‘40ants-ci:generate‘ system &key path

Generates GitHub workflow for given ‘ASDF‘ system.

This function searches workflow definitions in all packages
of the given ‘ASDF‘ system.

If ‘PATH‘ argument is not given, workflow files will be written
to .github/workflow/ relarive to the ‘SYSTEM‘.

<a id="x-2840ANTS-CI-2FJOBS-2FRUN-TESTS-3ARUN-TESTS-20FUNCTION-29"></a>

### [function](b562) ‘40ants-ci/jobs/run-tests:run-tests‘ &rest rest &key coverage qlfile asdf-system asdf-version os quicklisp lisp exclude custom

Creates a job step of class [‘run-tests‘][6cb7].

<a id="x-2840ANTS-CI-2FJOBS-2FRUN-TESTS-3ARUN-TESTS-20CLASS-29"></a>

### [class](6107) ‘40ants-ci/jobs/run-tests:run-tests‘ (lisp-job)

This job test runs tests for a given ‘ASDF‘ system.

<a id="x-2840ANTS-CI-2FJOBS-2FDOCS-3ABUILD-DOCS-20FUNCTION-29"></a>

### [function](0ab0) ‘40ants-ci/jobs/docs:build-docs‘ &key asdf-system asdf-version (error-on-warnings t)

Creates a job of class [‘build-docs‘][1ddb].

<a id="x-2840ANTS-CI-2FJOBS-2FDOCS-3ABUILD-DOCS-20CLASS-29"></a>

### [class](cd8d) ‘40ants-ci/jobs/docs:build-docs‘ (lisp-job)

Builds documentation and uploads it to GitHub using ["40ants/build-docs" github action][613f].

<a id="x-2840ANTS-CI-2FJOBS-2FLINTER-3ALINTER-20FUNCTION-29"></a>

### [function](f490) ‘40ants-ci/jobs/linter:linter‘ &key asdf-systems asdf-version

Creates a job which will run ‘SBL‘int for given ‘ASDF‘ systems.

If no ‘ASD‘ files given, it will use all ‘ASD‘ files from
the current ‘ASDF‘ system.

<a id="x-2840ANTS-CI-2FJOBS-2FLINTER-3ALINTER-20FUNCTION-29"></a>

### [function](f490) ‘40ants-ci/jobs/linter:linter‘ &key asdf-systems asdf-version

Creates a job which will run ‘SBL‘int for given ‘ASDF‘ systems.

If no ‘ASD‘ files given, it will use all ‘ASD‘ files from
the current ‘ASDF‘ system.

<a id="x-2840ANTS-CI-2FJOBS-2FCRITIC-3ACRITIC-20CLASS-29"></a>

### [class](91ec) ‘40ants-ci/jobs/critic:critic‘ (lisp-job)

<a id="x-2840ANTS-CI-2FJOBS-2FCRITIC-3ACRITIC-20FUNCTION-29"></a>

### [function](0696) ‘40ants-ci/jobs/critic:critic‘ &key asdf-systems asdf-version ignore-critiques

Creates a job which will run Lisp Critic for given ‘ASDF‘ systems.

If argument ‘ASDF-SYSTEMS‘ is ‘NIL‘, it will use ‘ASDF‘ system
to which current lisp file is belong.

You may also provide ‘ASDF-VERSION‘ argument. It should be
a string. By default, the latest ‘ASDF‘ version will be used.

[2100]: https://40ants.com/40ants-critic
[b882]: https://40ants.com/build-doc
[613f]: https://40ants.com/build-docs/
[3f72]: https://40ants.com/ci/
[b171]: https://40ants.com/ci/#x-28-23A-28-289-29-20BASE-CHAR-20-2E-20-2240ants-ci-22-29-20ASDF-2FSYSTEM-3ASYSTEM-29
[484a]: https://40ants.com/ci/#x-2840ANTS-CI-2FJOBS-2FCRITIC-3ACRITIC-20FUNCTION-29
[1ddb]: https://40ants.com/ci/#x-2840ANTS-CI-2FJOBS-2FDOCS-3ABUILD-DOCS-20CLASS-29
[13b8]: https://40ants.com/ci/#x-2840ANTS-CI-2FJOBS-2FDOCS-3ABUILD-DOCS-20FUNCTION-29
[6cb7]: https://40ants.com/ci/#x-2840ANTS-CI-2FJOBS-2FRUN-TESTS-3ARUN-TESTS-20CLASS-29
[e35d]: https://40ants.com/ci/#x-2840ANTS-CI-2FJOBS-2FRUN-TESTS-3ARUN-TESTS-20FUNCTION-29
[f2be]: https://40ants.com/docs-builder/
[8469]: https://40ants.com/run-tests
[59d7]: https://40ants.com/run-tests/
[8de1]: https://40ants.com/setup-lisp/
[b60c]: https://coveralls.io/
[e681]: https://github.com/40ants/ci
[de0b]: https://github.com/40ants/ci/actions
[b4a6]: https://github.com/40ants/ci/blob/6aff2a91d4b9b1d93af06382ce36dc6ea5c7530f/src/core.lisp#L523
[91ec]: https://github.com/40ants/ci/blob/6aff2a91d4b9b1d93af06382ce36dc6ea5c7530f/src/jobs/critic.lisp#L13
[0696]: https://github.com/40ants/ci/blob/6aff2a91d4b9b1d93af06382ce36dc6ea5c7530f/src/jobs/critic.lisp#L23
[cd8d]: https://github.com/40ants/ci/blob/6aff2a91d4b9b1d93af06382ce36dc6ea5c7530f/src/jobs/docs.lisp#L13
[0ab0]: https://github.com/40ants/ci/blob/6aff2a91d4b9b1d93af06382ce36dc6ea5c7530f/src/jobs/docs.lisp#L20
[f490]: https://github.com/40ants/ci/blob/6aff2a91d4b9b1d93af06382ce36dc6ea5c7530f/src/jobs/linter.lisp#L19
[6107]: https://github.com/40ants/ci/blob/6aff2a91d4b9b1d93af06382ce36dc6ea5c7530f/src/jobs/run-tests.lisp#L19
[b562]: https://github.com/40ants/ci/blob/6aff2a91d4b9b1d93af06382ce36dc6ea5c7530f/src/jobs/run-tests.lisp#L29
[2f94]: https://github.com/cxxxr/sblint

* * *
###### [generated by [40ANTS-DOC](https://40ants.com/doc/)]

Version

0.1.0

Dependencies
Source

40ants-ci.asd (file)


Next: , Previous: , Up: Systems   [Contents][Index]

2.2 40ants-ci/core

Author

Alexander Artemenko

Home Page

https://40ants.com/ci/

Source Control

(:git "https://github.com/40ants/ci")

License

BSD

Dependencies
Source

40ants-ci.asd (file)

Component

file-type.lisp (file)


Next: , Previous: , Up: Systems   [Contents][Index]

2.3 40ants-ci/ci

Author

Alexander Artemenko

Home Page

https://40ants.com/ci/

Source Control

(:git "https://github.com/40ants/ci")

License

BSD

Dependencies
Source

40ants-ci.asd (file)

Component

file-type.lisp (file)


Next: , Previous: , Up: Systems   [Contents][Index]

2.4 40ants-ci/jobs/linter

Author

Alexander Artemenko

Home Page

https://40ants.com/ci/

Source Control

(:git "https://github.com/40ants/ci")

License

BSD

Dependencies
Source

40ants-ci.asd (file)

Component

file-type.lisp (file)


Next: , Previous: , Up: Systems   [Contents][Index]

2.5 40ants-ci/jobs/critic

Author

Alexander Artemenko

Home Page

https://40ants.com/ci/

Source Control

(:git "https://github.com/40ants/ci")

License

BSD

Dependencies
Source

40ants-ci.asd (file)

Component

file-type.lisp (file)


Next: , Previous: , Up: Systems   [Contents][Index]

2.6 40ants-ci/jobs/run-tests

Author

Alexander Artemenko

Home Page

https://40ants.com/ci/

Source Control

(:git "https://github.com/40ants/ci")

License

BSD

Dependencies
Source

40ants-ci.asd (file)

Component

file-type.lisp (file)


Next: , Previous: , Up: Systems   [Contents][Index]

2.7 40ants-ci/jobs/docs

Author

Alexander Artemenko

Home Page

https://40ants.com/ci/

Source Control

(:git "https://github.com/40ants/ci")

License

BSD

Dependencies
Source

40ants-ci.asd (file)

Component

file-type.lisp (file)


Next: , Previous: , Up: Systems   [Contents][Index]

2.8 40ants-ci/jobs/lisp-job

Author

Alexander Artemenko

Home Page

https://40ants.com/ci/

Source Control

(:git "https://github.com/40ants/ci")

License

BSD

Dependencies
Source

40ants-ci.asd (file)

Component

file-type.lisp (file)


Next: , Previous: , Up: Systems   [Contents][Index]

2.9 40ants-ci/steps/action

Author

Alexander Artemenko

Home Page

https://40ants.com/ci/

Source Control

(:git "https://github.com/40ants/ci")

License

BSD

Dependencies
Source

40ants-ci.asd (file)

Component

file-type.lisp (file)


Next: , Previous: , Up: Systems   [Contents][Index]

2.10 40ants-ci/workflow

Author

Alexander Artemenko

Home Page

https://40ants.com/ci/

Source Control

(:git "https://github.com/40ants/ci")

License

BSD

Dependencies
Source

40ants-ci.asd (file)

Component

file-type.lisp (file)


Next: , Previous: , Up: Systems   [Contents][Index]

2.11 40ants-ci/jobs/job

Author

Alexander Artemenko

Home Page

https://40ants.com/ci/

Source Control

(:git "https://github.com/40ants/ci")

License

BSD

Dependency

40ants-ci/utils (system)

Source

40ants-ci.asd (file)

Component

file-type.lisp (file)


Next: , Previous: , Up: Systems   [Contents][Index]

2.12 40ants-ci/steps/sh

Author

Alexander Artemenko

Home Page

https://40ants.com/ci/

Source Control

(:git "https://github.com/40ants/ci")

License

BSD

Dependencies
Source

40ants-ci.asd (file)

Component

file-type.lisp (file)


Next: , Previous: , Up: Systems   [Contents][Index]

2.13 40ants-ci/steps/step

Author

Alexander Artemenko

Home Page

https://40ants.com/ci/

Source Control

(:git "https://github.com/40ants/ci")

License

BSD

Dependencies
Source

40ants-ci.asd (file)

Component

file-type.lisp (file)


Next: , Previous: , Up: Systems   [Contents][Index]

2.14 40ants-ci/github

Author

Alexander Artemenko

Home Page

https://40ants.com/ci/

Source Control

(:git "https://github.com/40ants/ci")

License

BSD

Dependencies
Source

40ants-ci.asd (file)

Component

file-type.lisp (file)


Next: , Previous: , Up: Systems   [Contents][Index]

2.15 40ants-ci/utils

Author

Alexander Artemenko

Home Page

https://40ants.com/ci/

Source Control

(:git "https://github.com/40ants/ci")

License

BSD

Dependencies
Source

40ants-ci.asd (file)

Component

file-type.lisp (file)


Next: , Previous: , Up: Systems   [Contents][Index]

2.16 40ants-ci/vars

Author

Alexander Artemenko

Home Page

https://40ants.com/ci/

Source Control

(:git "https://github.com/40ants/ci")

License

BSD

Source

40ants-ci.asd (file)

Component

file-type.lisp (file)


Previous: , Up: Systems   [Contents][Index]

2.17 40ants-ci/changelog

Author

Alexander Artemenko

Home Page

https://40ants.com/ci/

Source Control

(:git "https://github.com/40ants/ci")

License

BSD

Dependency

40ants-doc/changelog

Source

40ants-ci.asd (file)

Component

file-type.lisp (file)


Next: , Previous: , Up: Top   [Contents][Index]

3 Files

Files are sorted by type and then listed depth-first from the systems components trees.


Previous: , Up: Files   [Contents][Index]

3.1 Lisp


Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.1 40ants-ci.asd

Location

/home/quickref/quicklisp/dists/quicklisp/software/ci-20220331-git/40ants-ci.asd

Systems

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.2 40ants-ci/core/file-type.lisp

Parent

40ants-ci/core (system)

Location

core.lisp

Packages

40ants-ci

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.3 40ants-ci/ci/file-type.lisp

Parent

40ants-ci/ci (system)

Location

ci.lisp

Packages

40ants-ci/ci

Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.4 40ants-ci/jobs/linter/file-type.lisp

Parent

40ants-ci/jobs/linter (system)

Location

jobs/linter.lisp

Packages

40ants-ci/jobs/linter

Exported Definitions
Internal Definitions

asdf-systems (method)


Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.5 40ants-ci/jobs/critic/file-type.lisp

Parent

40ants-ci/jobs/critic (system)

Location

jobs/critic.lisp

Packages

40ants-ci/jobs/critic

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.6 40ants-ci/jobs/run-tests/file-type.lisp

Parent

40ants-ci/jobs/run-tests (system)

Location

jobs/run-tests.lisp

Packages

40ants-ci/jobs/run-tests

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.7 40ants-ci/jobs/docs/file-type.lisp

Parent

40ants-ci/jobs/docs (system)

Location

jobs/docs.lisp

Packages

40ants-ci/jobs/docs

Exported Definitions
Internal Definitions

error-on-warnings (method)


Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.8 40ants-ci/jobs/lisp-job/file-type.lisp

Parent

40ants-ci/jobs/lisp-job (system)

Location

jobs/lisp-job.lisp

Packages

40ants-ci/jobs/lisp-job

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.9 40ants-ci/steps/action/file-type.lisp

Parent

40ants-ci/steps/action (system)

Location

steps/action.lisp

Packages

40ants-ci/steps/action

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.10 40ants-ci/workflow/file-type.lisp

Parent

40ants-ci/workflow (system)

Location

workflow.lisp

Packages

40ants-ci/workflow

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.11 40ants-ci/jobs/job/file-type.lisp

Parent

40ants-ci/jobs/job (system)

Location

jobs/job.lisp

Packages

40ants-ci/jobs/job

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.12 40ants-ci/steps/sh/file-type.lisp

Parent

40ants-ci/steps/sh (system)

Location

steps/sh.lisp

Packages

40ants-ci/steps/sh

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.13 40ants-ci/steps/step/file-type.lisp

Parent

40ants-ci/steps/step (system)

Location

steps/step.lisp

Packages

40ants-ci/steps/step

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.14 40ants-ci/github/file-type.lisp

Parent

40ants-ci/github (system)

Location

github.lisp

Packages

40ants-ci/github

Exported Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.15 40ants-ci/utils/file-type.lisp

Parent

40ants-ci/utils (system)

Location

utils.lisp

Packages

40ants-ci/utils

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.16 40ants-ci/vars/file-type.lisp

Parent

40ants-ci/vars (system)

Location

vars.lisp

Packages

40ants-ci/vars

Exported Definitions

Previous: , Up: Lisp files   [Contents][Index]

3.1.17 40ants-ci/changelog/file-type.lisp

Parent

40ants-ci/changelog (system)

Location

changelog.lisp

Packages

40ants-ci/changelog

Exported Definitions

@changelog (special variable)

Internal Definitions

Next: , Previous: , Up: Top   [Contents][Index]

4 Packages

Packages are listed by definition order.


Next: , Previous: , Up: Packages   [Contents][Index]

4.1 40ants-ci

Source

file-type.lisp (file)

Nickname

40ants-ci/core

Use List

common-lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Packages   [Contents][Index]

4.2 40ants-ci/ci

Source

file-type.lisp (file)

Use List

common-lisp

Internal Definitions

Next: , Previous: , Up: Packages   [Contents][Index]

4.3 40ants-ci/jobs/linter

Source

file-type.lisp (file)

Use List

common-lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Packages   [Contents][Index]

4.4 40ants-ci/jobs/critic

Source

file-type.lisp (file)

Use List

common-lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Packages   [Contents][Index]

4.5 40ants-ci/jobs/run-tests

Source

file-type.lisp (file)

Use List

common-lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Packages   [Contents][Index]

4.6 40ants-ci/jobs/docs

Source

file-type.lisp (file)

Use List

common-lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Packages   [Contents][Index]

4.7 40ants-ci/jobs/lisp-job

Source

file-type.lisp (file)

Use List

common-lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Packages   [Contents][Index]

4.8 40ants-ci/steps/action

Source

file-type.lisp (file)

Use List

common-lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Packages   [Contents][Index]

4.9 40ants-ci/workflow

Source

file-type.lisp (file)

Use List

common-lisp

Exported Definitions

defworkflow (macro)

Internal Definitions

Next: , Previous: , Up: Packages   [Contents][Index]

4.10 40ants-ci/jobs/job

Source

file-type.lisp (file)

Use List

common-lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Packages   [Contents][Index]

4.11 40ants-ci/steps/sh

Source

file-type.lisp (file)

Use List

common-lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Packages   [Contents][Index]

4.12 40ants-ci/steps/step

Source

file-type.lisp (file)

Use List

common-lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Packages   [Contents][Index]

4.13 40ants-ci/github

Source

file-type.lisp (file)

Use List

common-lisp

Exported Definitions

Next: , Previous: , Up: Packages   [Contents][Index]

4.14 40ants-ci/utils

Source

file-type.lisp (file)

Use List

common-lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Packages   [Contents][Index]

4.15 40ants-ci/vars

Source

file-type.lisp (file)

Use List

common-lisp

Exported Definitions

Previous: , Up: Packages   [Contents][Index]

4.16 40ants-ci/changelog

Source

file-type.lisp (file)

Use List

common-lisp

Exported Definitions

@changelog (special variable)

Internal Definitions

Next: , Previous: , Up: Top   [Contents][Index]

5 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


Next: , Previous: , Up: Definitions   [Contents][Index]

5.1 Exported definitions


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.1 Special variables

Special Variable: *current-system*

When workflow is generated for ASDF system, this variable will contain a primary ASDF system.

Package

40ants-ci/vars

Source

file-type.lisp (file)

Special Variable: *use-cache*

Workflow will set this variable when preparing the data or YAML generation.

Package

40ants-ci/vars

Source

file-type.lisp (file)

Special Variable: @changelog
Package

40ants-ci/changelog

Source

file-type.lisp (file)

Special Variable: @index
Package

40ants-ci

Source

file-type.lisp (file)

Special Variable: @readme
Package

40ants-ci

Source

file-type.lisp (file)


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.2 Macros

Macro: defworkflow NAME &key ON-PUSH-TO BY-CRON ON-PULL-REQUEST CACHE JOBS
Package

40ants-ci/workflow

Source

file-type.lisp (file)

Macro: sections &body BODY

Returns a string with a bash script where some parts are grouped.

In this example we have 3 sections:

“‘lisp
(sections
("Help Argument"
"qlot exec cl-info –help")
("Version Argument"
"qlot exec cl-info –version")
("Lisp Systems Info"
"qlot exec cl-info"
"qlot exec cl-info cl-info defmain"))
“‘

It will be compiled into:

“‘bash
echo ::group::Help Argument
qlot exec cl-info –help
echo ::endgroup::
echo ::group::Version Argument
qlot exec cl-info –version
echo ::endgroup::
echo ::group::Lisp Systems Info
qlot exec cl-info
qlot exec cl-info cl-info defmain
echo ::endgroup::
“‘

Package

40ants-ci/steps/sh

Source

file-type.lisp (file)


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.3 Functions

Function: action NAME USES &rest ARGS &key ID IF ENV &allow-other-keys
Package

40ants-ci/steps/action

Source

file-type.lisp (file)

Function: alistp LIST

Test wheather LIST is a properly formed alist.

In this library, ALIST has always a string as a key. Because we need them to have this form to serialize to JSON propertly.

(alistp ’(("cron" . "0 10 * * 1"))) -> T
(alistp ’((("cron" . "0 10 * * 1")))) -> NIL

Package

40ants-ci/utils

Source

file-type.lisp (file)

Function: build-docs &key ASDF-SYSTEM ASDF-VERSION ERROR-ON-WARNINGS

Creates a job of class BUILD-DOCS.

Package

40ants-ci/jobs/docs

Source

file-type.lisp (file)

Function: critic &key ASDF-SYSTEMS ASDF-VERSION IGNORE-CRITIQUES

Creates a job which will run Lisp Critic for given ASDF systems.

If argument ASDF-SYSTEMS is NIL, it will use ASDF system to which current lisp file is belong.

You may also provide ASDF-VERSION argument. It should be a string. By default, the latest ASDF version will be used.

Package

40ants-ci/jobs/critic

Source

file-type.lisp (file)

Function: current-system-name ()
Package

40ants-ci/utils

Source

file-type.lisp (file)

Function: dedent TEXT

Removes common leading whitespace from each string.

A few examples:

“‘
(dedent "Hello
World
and all Lispers!")

"Hello
World
and all Lispers!"
“‘

“‘
(dedent "
Hello
World
and all Lispers!")

"Hello
World
and all Lispers!"
“‘

“‘
(dedent "This is a code:

(symbol-name :hello-world)

it will output HELLO-WORLD.")

"This is a code:

(symbol-name :hello-world)

it will output HELLO-WORLD."
“‘

Package

40ants-ci/utils

Source

file-type.lisp (file)

Function: ensure-list-of-plists DATA
Package

40ants-ci/utils

Source

file-type.lisp (file)

Function: ensure-primary-system SYSTEM
Package

40ants-ci/utils

Source

file-type.lisp (file)

Function: generate SYSTEM &key PATH

Generates GitHub workflow for given ASDF system.

This function searches workflow definitions in all packages of the given ASDF system.

If PATH argument is not given, workflow files will be written to .github/workflow/ relarive to the SYSTEM.

Package

40ants-ci

Source

file-type.lisp (file)

Function: linter &key ASDF-SYSTEMS ASDF-VERSION

Creates a job which will run SBLint for given ASDF systems.

If no ASD files given, it will use all ASD files from the current ASDF system.

Package

40ants-ci/jobs/linter

Source

file-type.lisp (file)

Function: make-github-workflows-path SYSTEM
Package

40ants-ci/utils

Source

file-type.lisp (file)

Function: plist-to-alist PLIST &key STRING-KEYS LOWERCASE

Make an alist from a plist PLIST.

By default, transforms keys to lowercased strings

Package

40ants-ci/utils

Source

file-type.lisp (file)

Function: plistp LIST

Test wheather LIST is a properly formed plist.

Package

40ants-ci/utils

Source

file-type.lisp (file)

Function: run-tests &rest REST &key COVERAGE QLFILE ASDF-SYSTEM ASDF-VERSION OS QUICKLISP LISP EXCLUDE CUSTOM

Creates a job step of class RUN-TESTS.

Package

40ants-ci/jobs/run-tests

Source

file-type.lisp (file)

Function: sh NAME COMMAND &rest ENV &key ID IF SHELL &allow-other-keys
Package

40ants-ci/steps/sh

Source

file-type.lisp (file)

Function: single LIST

Test wheather LIST contains exactly 1 element.

Package

40ants-ci/utils

Source

file-type.lisp (file)

Function: to-json DATA
Package

40ants-ci/utils

Source

file-type.lisp (file)


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.4 Generic functions

Generic Function: asdf-system OBJECT
Package

40ants-ci/jobs/lisp-job

Methods
Method: asdf-system (JOB lisp-job) around
Source

file-type.lisp (file)

Method: asdf-system (LISP-JOB lisp-job)

automatically generated reader method

Source

file-type.lisp (file)

Generic Function: generate OBJ PATH
Package

40ants-ci/github

Source

file-type.lisp (file)

Methods
Method: generate (WORKFLOW workflow) PATH
Source

file-type.lisp (file)

Method: generate (PACKAGE package) PATH
Source

file-type.lisp (file)

Method: generate (SYSTEM system) PATH
Method: generate (SYMBOL symbol) PATH
Generic Function: lisp OBJECT
Package

40ants-ci/jobs/job

Methods
Method: lisp (JOB job) around
Source

file-type.lisp (file)

Method: lisp (JOB job)

automatically generated reader method

Source

file-type.lisp (file)

Generic Function: name OBJECT
Package

40ants-ci/jobs/job

Methods
Method: name (JOB job)

automatically generated reader method

Source

file-type.lisp (file)

Generic Function: os OBJECT
Package

40ants-ci/jobs/job

Methods
Method: os (JOB job) around
Source

file-type.lisp (file)

Method: os (JOB job)

automatically generated reader method

Source

file-type.lisp (file)

Generic Function: prepare-data OBJ
Package

40ants-ci/github

Source

file-type.lisp (file)

Methods
Method: prepare-data (WORKFLOW workflow)
Source

file-type.lisp (file)

Method: prepare-data (SH sh)
Source

file-type.lisp (file)

Method: prepare-data (ACTION action)
Source

file-type.lisp (file)

Method: prepare-data (STEP step) around
Source

file-type.lisp (file)

Method: prepare-data (STEP step)
Source

file-type.lisp (file)

Method: prepare-data (JOB job)
Source

file-type.lisp (file)

Generic Function: quicklisp OBJECT
Package

40ants-ci/jobs/job

Methods
Method: quicklisp (JOB job) around
Source

file-type.lisp (file)

Method: quicklisp (JOB job)

automatically generated reader method

Source

file-type.lisp (file)

Generic Function: step-id OBJECT
Package

40ants-ci/steps/step

Methods
Method: step-id (STEP step)

automatically generated reader method

Source

file-type.lisp (file)

Generic Function: step-name OBJECT
Package

40ants-ci/steps/step

Methods
Method: step-name (STEP step)

automatically generated reader method

Source

file-type.lisp (file)

Generic Function: steps OBJECT
Package

40ants-ci/jobs/job

Methods
Method: steps (JOB run-tests)
Source

file-type.lisp (file)

Method: steps (JOB critic)
Source

file-type.lisp (file)

Method: steps (JOB linter)
Source

file-type.lisp (file)

Method: steps (JOB build-docs)
Source

file-type.lisp (file)

Method: steps (JOB lisp-job)
Source

file-type.lisp (file)

Method: steps (JOB job) around
Source

file-type.lisp (file)

Method: steps (JOB job)

automatically generated reader method

Source

file-type.lisp (file)

Generic Function: system-packages SYSTEM

Returns a list of packages created by ASDF system.

Default implementation returns a package having the same name as a system and all packages matched to package-inferred subsystems:

“‘
CL-USER> (docs-builder/utils:system-packages :docs-builder) (#<PACKAGE "DOCS-BUILDER">
#<PACKAGE "DOCS-BUILDER/UTILS">
#<PACKAGE "DOCS-BUILDER/GUESSER">
#<PACKAGE "DOCS-BUILDER/BUILDERS/GENEVA/GUESSER">
#<PACKAGE "DOCS-BUILDER/BUILDER">
#<PACKAGE "DOCS-BUILDER/BUILDERS/MGL-PAX/GUESSER">
#<PACKAGE "DOCS-BUILDER/DOCS">
#<PACKAGE "DOCS-BUILDER/BUILDERS/MGL-PAX/BUILDER">)
“‘

This function can be used by builder to find pieces of documentation. For example, DOCS-BUILDER/BUILDERS/MGL-PAX/GUESSER:@INDEX
builder uses it to find documentation sections.

Package

40ants-ci/utils

Source

file-type.lisp (file)

Methods
Method: system-packages (SYSTEM string)
Method: system-packages (SYSTEM symbol)
Method: system-packages (SYSTEM system)
Generic Function: use-matrix-p JOB
Package

40ants-ci/jobs/job

Source

file-type.lisp (file)

Methods
Method: use-matrix-p (JOB job)

Previous: , Up: Exported definitions   [Contents][Index]

5.1.5 Classes

Class: action ()
Package

40ants-ci/steps/action

Source

file-type.lisp (file)

Direct superclasses

step (class)

Direct methods
Direct slots
Slot: uses
Initargs

:uses

Readers

uses (generic function)

Slot: action-args

A plist to be passed as "with" dictionary to the action.

Initargs

:args

Readers

action-args (generic function)

Class: build-docs ()

Builds documentation and uploads it to GitHub using ["40ants/build-docs" github action](https://40ants.com/build-docs/).

Package

40ants-ci/jobs/docs

Source

file-type.lisp (file)

Direct superclasses

lisp-job (class)

Direct methods
Direct slots
Slot: error-on-warnings
Initargs

:error-on-warnings

Initform

t

Readers

error-on-warnings (generic function)

Class: critic ()
Package

40ants-ci/jobs/critic

Source

file-type.lisp (file)

Direct superclasses

lisp-job (class)

Direct methods
Direct slots
Slot: asdf-systems

Critic can validate more than one system, but for the base class we need provide only one.

Initargs

:asdf-systems

Readers

asdf-systems (generic function)

Slot: ignore-critiques

A list strigns with names of critiques to ignore.

Initargs

:ignore-critiques

Readers

ignore-critiques (generic function)

Class: job ()
Package

40ants-ci/jobs/job

Source

file-type.lisp (file)

Direct superclasses

standard-object (class)

Direct subclasses

lisp-job (class)

Direct methods
Direct slots
Slot: name
Initargs

:name

Readers

name (generic function)

Slot: os
Initargs

:os

Initform

"ubuntu-latest"

Readers

os (generic function)

Slot: quicklisp
Initargs

:quicklisp

Initform

"quicklisp"

Readers

quicklisp (generic function)

Slot: lisp
Initargs

:lisp

Initform

"sbcl-bin"

Readers

lisp (generic function)

Slot: exclude

A list of plists denoting matrix combinations to be excluded.

Initargs

:exclude

Readers

exclude (generic function)

Slot: steps
Initargs

:steps

Readers

steps (generic function)

Class: linter ()
Package

40ants-ci/jobs/linter

Source

file-type.lisp (file)

Direct superclasses

lisp-job (class)

Direct methods
Direct slots
Slot: asdf-systems

Linter can validate more than one system, but for the base class we need provide only one.

Initargs

:asdf-systems

Readers

asdf-systems (generic function)

Class: lisp-job ()

This job checkouts the sources, installs Roswell and Qlot. Also, it caches results between runs.

Package

40ants-ci/jobs/lisp-job

Source

file-type.lisp (file)

Direct superclasses

job (class)

Direct subclasses
Direct methods
Direct slots
Slot: qlfile
Initargs

:qlfile

Readers

qlfile (generic function)

Slot: asdf-system
Type

(or null string)

Initargs

:asdf-system

Readers

asdf-system (generic function)

Slot: asdf-version

ASDF version to use when setting up Lisp environment. If NIL, then the latest will be used.

Type

(or null string)

Initargs

:asdf-version

Readers

asdf-version (generic function)

Slot: roswell-version

Roswell version to use when setting up Lisp environment. If NIL, then will be used version, pinned in SETUP-LISP github action.

Type

(or null string)

Initargs

:roswell-version

Readers

roswell-version (generic function)

Slot: qlot-version

Qlot version to use when setting up Lisp environment. If NIL, then will be used version, pinned in SETUP-LISP github action.

Type

(or null string)

Initargs

:qlot-version

Readers

qlot-version (generic function)

Class: run-tests ()

This job test runs tests for a given ASDF system.

Package

40ants-ci/jobs/run-tests

Source

file-type.lisp (file)

Direct superclasses

lisp-job (class)

Direct methods
Direct slots
Slot: coverage
Initargs

:coverage

Readers

coverage (generic function)

Slot: custom
Initargs

:custom

Readers

custom (generic function)

Class: sh ()
Package

40ants-ci/steps/sh

Source

file-type.lisp (file)

Direct superclasses

step (class)

Direct methods
Direct slots
Slot: command
Initargs

:command

Readers

command (generic function)

Slot: shell
Initargs

:shell

Initform

40ants-ci/steps/sh::*default-shell*

Readers

shell (generic function)

Class: step ()
Package

40ants-ci/steps/step

Source

file-type.lisp (file)

Direct superclasses

standard-object (class)

Direct subclasses
Direct methods
Direct slots
Slot: id
Initargs

:id

Readers

step-id (generic function)

Slot: name
Initargs

:name

Readers

step-name (generic function)

Slot: env
Initargs

:env

Readers

env (generic function)

Slot: if
Initargs

:if

Readers

step-if (generic function)


Previous: , Up: Definitions   [Contents][Index]

5.2 Internal definitions


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.1 Special variables

Special Variable: *asdf-version*

At some point installation of the latest roswell version was broken: https://github.com/roswell/roswell/issues/497

Package

40ants-ci/ci

Source

file-type.lisp (file)

Special Variable: *default-shell*
Package

40ants-ci/steps/sh

Source

file-type.lisp (file)

Special Variable: *registered-workflows*

This hash maps ‘package -> workflows‘ where "workflows" is another hash mapping workflow names to workflow objects.

Package

40ants-ci/workflow

Source

file-type.lisp (file)

Special Variable: 0.1.0
Package

40ants-ci/changelog

Source

file-type.lisp (file)

Special Variable: 0.1.1
Package

40ants-ci/changelog

Source

file-type.lisp (file)

Special Variable: 0.2.0
Package

40ants-ci/changelog

Source

file-type.lisp (file)

Special Variable: 0.2.1
Package

40ants-ci/changelog

Source

file-type.lisp (file)

Special Variable: 0.2.2
Package

40ants-ci/changelog

Source

file-type.lisp (file)

Special Variable: 0.3.0
Package

40ants-ci/changelog

Source

file-type.lisp (file)

Special Variable: 0.4.0
Package

40ants-ci/changelog

Source

file-type.lisp (file)

Special Variable: 0.5.0
Package

40ants-ci/changelog

Source

file-type.lisp (file)

Special Variable: 0.6.0
Package

40ants-ci/changelog

Source

file-type.lisp (file)

Special Variable: 0.7.0
Package

40ants-ci/changelog

Source

file-type.lisp (file)

Special Variable: 0.8.0
Package

40ants-ci/changelog

Source

file-type.lisp (file)

Special Variable: @build-docs
Package

40ants-ci

Source

file-type.lisp (file)

Special Variable: @caching
Package

40ants-ci

Source

file-type.lisp (file)

Special Variable: @critic
Package

40ants-ci

Source

file-type.lisp (file)

Special Variable: @details
Package

40ants-ci

Source

file-type.lisp (file)

Special Variable: @job-types
Package

40ants-ci

Source

file-type.lisp (file)

Special Variable: @linter
Package

40ants-ci

Source

file-type.lisp (file)

Special Variable: @matrix
Package

40ants-ci

Source

file-type.lisp (file)

Special Variable: @multiple-jobs
Package

40ants-ci

Source

file-type.lisp (file)

Special Variable: @quickstart
Package

40ants-ci

Source

file-type.lisp (file)

Special Variable: @reasons
Package

40ants-ci

Source

file-type.lisp (file)

Special Variable: @run-tests
Package

40ants-ci

Source

file-type.lisp (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.2 Functions

Function: count-leading-spaces LINE
Package

40ants-ci/utils

Source

file-type.lisp (file)

Function: empty-line LINE
Package

40ants-ci/utils

Source

file-type.lisp (file)

Function: eval-arg ARG

Whe use as is following forms:

- ("foo" "bar" "baz")

And eval others:

- "blah" -> "blah"
- 12345 -> 12345
- (foo 1 2 3) -> result of foo call.

Package

40ants-ci/workflow

Source

file-type.lisp (file)

Function: list-to-json OBJ STREAM
Package

40ants-ci/utils

Source

file-type.lisp (file)

Function: make-job NAME-AND-OPTIONAL-ARGS
Package

40ants-ci/workflow

Source

file-type.lisp (file)

Function: make-workflow-path BASE-PATH WORKFLOW
Package

40ants-ci/workflow

Source

file-type.lisp (file)

Function: package-workflows &optional PACKAGE
Package

40ants-ci/workflow

Source

file-type.lisp (file)

Function: register-workflow WORKFLOW &key PACKAGE
Package

40ants-ci/workflow

Source

file-type.lisp (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.3 Generic functions

Generic Function: action-args OBJECT
Package

40ants-ci/steps/action

Methods
Method: action-args (ACTION action)

A plist to be passed as "with" dictionary to the action.

Source

file-type.lisp (file)

Generic Function: asdf-systems OBJECT
Package

40ants-ci/jobs/linter

Methods
Method: asdf-systems (LINTER linter)

Linter can validate more than one system, but for the base class we need provide only one.

Source

file-type.lisp (file)

Generic Function: asdf-systems OBJECT
Package

40ants-ci/jobs/critic

Methods
Method: asdf-systems (CRITIC critic)

Critic can validate more than one system, but for the base class we need provide only one.

Source

file-type.lisp (file)

Generic Function: asdf-version OBJECT
Package

40ants-ci/jobs/lisp-job

Methods
Method: asdf-version (LISP-JOB lisp-job)

ASDF version to use when setting up Lisp environment. If NIL, then the latest will be used.

Source

file-type.lisp (file)

Generic Function: by-cron OBJECT
Package

40ants-ci/workflow

Methods
Method: by-cron (WORKFLOW workflow) around
Source

file-type.lisp (file)

Method: by-cron (WORKFLOW workflow)

automatically generated reader method

Source

file-type.lisp (file)

Generic Function: cache-p OBJECT
Package

40ants-ci/workflow

Methods
Method: cache-p (WORKFLOW workflow)

automatically generated reader method

Source

file-type.lisp (file)

Generic Function: command OBJECT
Package

40ants-ci/steps/sh

Methods
Method: command (SH sh)

automatically generated reader method

Source

file-type.lisp (file)

Generic Function: coverage OBJECT
Package

40ants-ci/jobs/run-tests

Methods
Method: coverage (RUN-TESTS run-tests)

automatically generated reader method

Source

file-type.lisp (file)

Generic Function: custom OBJECT
Package

40ants-ci/jobs/run-tests

Methods
Method: custom (RUN-TESTS run-tests)

automatically generated reader method

Source

file-type.lisp (file)

Generic Function: env OBJECT
Package

40ants-ci/steps/step

Methods
Method: env (STEP step)

automatically generated reader method

Source

file-type.lisp (file)

Generic Function: error-on-warnings OBJECT
Package

40ants-ci/jobs/docs

Methods
Method: error-on-warnings (BUILD-DOCS build-docs)

automatically generated reader method

Source

file-type.lisp (file)

Generic Function: exclude OBJECT
Package

40ants-ci/jobs/job

Methods
Method: exclude (JOB job) around
Source

file-type.lisp (file)

Method: exclude (JOB job)

A list of plists denoting matrix combinations to be excluded.

Source

file-type.lisp (file)

Generic Function: ignore-critiques OBJECT
Package

40ants-ci/jobs/critic

Methods
Method: ignore-critiques (CRITIC critic)

A list strigns with names of critiques to ignore.

Source

file-type.lisp (file)

Generic Function: jobs OBJECT
Package

40ants-ci/workflow

Methods
Method: jobs (WORKFLOW workflow) around
Source

file-type.lisp (file)

Method: jobs (WORKFLOW workflow)

automatically generated reader method

Source

file-type.lisp (file)

Generic Function: make-cache-key JOB
Package

40ants-ci/jobs/lisp-job

Source

file-type.lisp (file)

Methods
Method: make-cache-key (JOB lisp-job)
Generic Function: make-cache-steps JOB
Package

40ants-ci/jobs/lisp-job

Source

file-type.lisp (file)

Methods
Method: make-cache-steps (JOB lisp-job)
Generic Function: make-env JOB
Package

40ants-ci/jobs/job

Source

file-type.lisp (file)

Methods
Method: make-env (JOB job)
Generic Function: make-env STEP
Package

40ants-ci/steps/step

Source

file-type.lisp (file)

Methods
Method: make-env (STEP step)
Generic Function: make-matrix JOB
Package

40ants-ci/jobs/job

Source

file-type.lisp (file)

Methods
Method: make-matrix (JOB job)
Generic Function: make-runs-on JOB
Package

40ants-ci/jobs/job

Source

file-type.lisp (file)

Methods
Method: make-runs-on (JOB job)
Generic Function: make-steps JOB
Package

40ants-ci/jobs/job

Source

file-type.lisp (file)

Methods
Method: make-steps (JOB job)
Generic Function: make-triggers WORKFLOW
Package

40ants-ci/workflow

Source

file-type.lisp (file)

Methods
Method: make-triggers (WORKFLOW workflow)
Generic Function: name OBJECT
Package

40ants-ci/workflow

Methods
Method: name (WORKFLOW workflow)

automatically generated reader method

Source

file-type.lisp (file)

Generic Function: on-pull-request OBJECT
Package

40ants-ci/workflow

Methods
Method: on-pull-request (WORKFLOW workflow)

automatically generated reader method

Source

file-type.lisp (file)

Generic Function: on-push-to OBJECT
Package

40ants-ci/workflow

Methods
Method: on-push-to (WORKFLOW workflow) around
Source

file-type.lisp (file)

Method: on-push-to (WORKFLOW workflow)

automatically generated reader method

Source

file-type.lisp (file)

Generic Function: on-workflow-redefinition WORKFLOW

This hook can be redefine by user.
It will be called each time when
you eval defworkflow either because file compilation or manually by hitting C-c C-c in the Emacs.

Default behaviour is to generate a new
output for this workflow. Current system is set to the primary system with same package name
as a package where defworkflow is used.

Package

40ants-ci/workflow

Source

file-type.lisp (file)

Methods
Method: on-workflow-redefinition (WORKFLOW workflow)
Generic Function: qlfile OBJECT
Package

40ants-ci/jobs/lisp-job

Methods
Method: qlfile (LISP-JOB lisp-job)

automatically generated reader method

Source

file-type.lisp (file)

Generic Function: qlot-version OBJECT
Package

40ants-ci/jobs/lisp-job

Methods
Method: qlot-version (LISP-JOB lisp-job)

Qlot version to use when setting up Lisp environment. If NIL, then will be used version, pinned in SETUP-LISP github action.

Source

file-type.lisp (file)

Generic Function: roswell-version OBJECT
Package

40ants-ci/jobs/lisp-job

Methods
Method: roswell-version (LISP-JOB lisp-job)

Roswell version to use when setting up Lisp environment. If NIL, then will be used version, pinned in SETUP-LISP github action.

Source

file-type.lisp (file)

Generic Function: shell OBJECT
Package

40ants-ci/steps/sh

Methods
Method: shell (SH sh)

automatically generated reader method

Source

file-type.lisp (file)

Generic Function: step-if OBJECT
Package

40ants-ci/steps/step

Methods
Method: step-if (STEP step)

automatically generated reader method

Source

file-type.lisp (file)

Generic Function: uses OBJECT
Package

40ants-ci/steps/action

Methods
Method: uses (ACTION action)

automatically generated reader method

Source

file-type.lisp (file)


Previous: , Up: Internal definitions   [Contents][Index]

5.2.4 Classes

Class: ci ()
Package

40ants-ci/ci

Source

file-type.lisp (file)

Direct superclasses

workflow (class)

Class: docs ()
Package

40ants-ci/ci

Source

file-type.lisp (file)

Direct superclasses

workflow (class)

Class: workflow ()
Package

40ants-ci/workflow

Source

file-type.lisp (file)

Direct superclasses

standard-object (class)

Direct subclasses
Direct methods
Direct slots
Slot: name
Initargs

:name

Readers

name (generic function)

Slot: on-push-to
Initargs

:on-push-to

Initform

"master"

Readers

on-push-to (generic function)

Slot: on-pull-request
Initargs

:on-pull-request

Initform

t

Readers

on-pull-request (generic function)

Slot: by-cron
Initargs

:by-cron

Initform

"0 10 * * 1"

Readers

by-cron (generic function)

Slot: cache
Initargs

:cache

Initform

t

Readers

cache-p (generic function)

Slot: jobs
Initargs

:jobs

Readers

jobs (generic function)


Previous: , Up: Top   [Contents][Index]

Appendix A Indexes


Next: , Previous: , Up: Indexes   [Contents][Index]

A.1 Concepts

Jump to:   4  
F   L  
Index Entry  Section

4
40ants-ci.asd: The 40ants-ci․asd file
40ants-ci/changelog/file-type.lisp: The 40ants-ci/changelog/file-type․lisp file
40ants-ci/ci/file-type.lisp: The 40ants-ci/ci/file-type․lisp file
40ants-ci/core/file-type.lisp: The 40ants-ci/core/file-type․lisp file
40ants-ci/github/file-type.lisp: The 40ants-ci/github/file-type․lisp file
40ants-ci/jobs/critic/file-type.lisp: The 40ants-ci/jobs/critic/file-type․lisp file
40ants-ci/jobs/docs/file-type.lisp: The 40ants-ci/jobs/docs/file-type․lisp file
40ants-ci/jobs/job/file-type.lisp: The 40ants-ci/jobs/job/file-type․lisp file
40ants-ci/jobs/linter/file-type.lisp: The 40ants-ci/jobs/linter/file-type․lisp file
40ants-ci/jobs/lisp-job/file-type.lisp: The 40ants-ci/jobs/lisp-job/file-type․lisp file
40ants-ci/jobs/run-tests/file-type.lisp: The 40ants-ci/jobs/run-tests/file-type․lisp file
40ants-ci/steps/action/file-type.lisp: The 40ants-ci/steps/action/file-type․lisp file
40ants-ci/steps/sh/file-type.lisp: The 40ants-ci/steps/sh/file-type․lisp file
40ants-ci/steps/step/file-type.lisp: The 40ants-ci/steps/step/file-type․lisp file
40ants-ci/utils/file-type.lisp: The 40ants-ci/utils/file-type․lisp file
40ants-ci/vars/file-type.lisp: The 40ants-ci/vars/file-type․lisp file
40ants-ci/workflow/file-type.lisp: The 40ants-ci/workflow/file-type․lisp file

F
File, Lisp, 40ants-ci.asd: The 40ants-ci․asd file
File, Lisp, 40ants-ci/changelog/file-type.lisp: The 40ants-ci/changelog/file-type․lisp file
File, Lisp, 40ants-ci/ci/file-type.lisp: The 40ants-ci/ci/file-type․lisp file
File, Lisp, 40ants-ci/core/file-type.lisp: The 40ants-ci/core/file-type․lisp file
File, Lisp, 40ants-ci/github/file-type.lisp: The 40ants-ci/github/file-type․lisp file
File, Lisp, 40ants-ci/jobs/critic/file-type.lisp: The 40ants-ci/jobs/critic/file-type․lisp file
File, Lisp, 40ants-ci/jobs/docs/file-type.lisp: The 40ants-ci/jobs/docs/file-type․lisp file
File, Lisp, 40ants-ci/jobs/job/file-type.lisp: The 40ants-ci/jobs/job/file-type․lisp file
File, Lisp, 40ants-ci/jobs/linter/file-type.lisp: The 40ants-ci/jobs/linter/file-type․lisp file
File, Lisp, 40ants-ci/jobs/lisp-job/file-type.lisp: The 40ants-ci/jobs/lisp-job/file-type․lisp file
File, Lisp, 40ants-ci/jobs/run-tests/file-type.lisp: The 40ants-ci/jobs/run-tests/file-type․lisp file
File, Lisp, 40ants-ci/steps/action/file-type.lisp: The 40ants-ci/steps/action/file-type․lisp file
File, Lisp, 40ants-ci/steps/sh/file-type.lisp: The 40ants-ci/steps/sh/file-type․lisp file
File, Lisp, 40ants-ci/steps/step/file-type.lisp: The 40ants-ci/steps/step/file-type․lisp file
File, Lisp, 40ants-ci/utils/file-type.lisp: The 40ants-ci/utils/file-type․lisp file
File, Lisp, 40ants-ci/vars/file-type.lisp: The 40ants-ci/vars/file-type․lisp file
File, Lisp, 40ants-ci/workflow/file-type.lisp: The 40ants-ci/workflow/file-type․lisp file

L
Lisp File, 40ants-ci.asd: The 40ants-ci․asd file
Lisp File, 40ants-ci/changelog/file-type.lisp: The 40ants-ci/changelog/file-type․lisp file
Lisp File, 40ants-ci/ci/file-type.lisp: The 40ants-ci/ci/file-type․lisp file
Lisp File, 40ants-ci/core/file-type.lisp: The 40ants-ci/core/file-type․lisp file
Lisp File, 40ants-ci/github/file-type.lisp: The 40ants-ci/github/file-type․lisp file
Lisp File, 40ants-ci/jobs/critic/file-type.lisp: The 40ants-ci/jobs/critic/file-type․lisp file
Lisp File, 40ants-ci/jobs/docs/file-type.lisp: The 40ants-ci/jobs/docs/file-type․lisp file
Lisp File, 40ants-ci/jobs/job/file-type.lisp: The 40ants-ci/jobs/job/file-type․lisp file
Lisp File, 40ants-ci/jobs/linter/file-type.lisp: The 40ants-ci/jobs/linter/file-type․lisp file
Lisp File, 40ants-ci/jobs/lisp-job/file-type.lisp: The 40ants-ci/jobs/lisp-job/file-type․lisp file
Lisp File, 40ants-ci/jobs/run-tests/file-type.lisp: The 40ants-ci/jobs/run-tests/file-type․lisp file
Lisp File, 40ants-ci/steps/action/file-type.lisp: The 40ants-ci/steps/action/file-type․lisp file
Lisp File, 40ants-ci/steps/sh/file-type.lisp: The 40ants-ci/steps/sh/file-type․lisp file
Lisp File, 40ants-ci/steps/step/file-type.lisp: The 40ants-ci/steps/step/file-type․lisp file
Lisp File, 40ants-ci/utils/file-type.lisp: The 40ants-ci/utils/file-type․lisp file
Lisp File, 40ants-ci/vars/file-type.lisp: The 40ants-ci/vars/file-type․lisp file
Lisp File, 40ants-ci/workflow/file-type.lisp: The 40ants-ci/workflow/file-type․lisp file

Jump to:   4  
F   L  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.2 Functions

Jump to:   A   B   C   D   E   F   G   I   J   L   M   N   O   P   Q   R   S   T   U  
Index Entry  Section

A
action: Exported functions
action-args: Internal generic functions
action-args: Internal generic functions
alistp: Exported functions
asdf-system: Exported generic functions
asdf-system: Exported generic functions
asdf-system: Exported generic functions
asdf-systems: Internal generic functions
asdf-systems: Internal generic functions
asdf-systems: Internal generic functions
asdf-systems: Internal generic functions
asdf-version: Internal generic functions
asdf-version: Internal generic functions

B
build-docs: Exported functions
by-cron: Internal generic functions
by-cron: Internal generic functions
by-cron: Internal generic functions

C
cache-p: Internal generic functions
cache-p: Internal generic functions
command: Internal generic functions
command: Internal generic functions
count-leading-spaces: Internal functions
coverage: Internal generic functions
coverage: Internal generic functions
critic: Exported functions
current-system-name: Exported functions
custom: Internal generic functions
custom: Internal generic functions

D
dedent: Exported functions
defworkflow: Exported macros

E
empty-line: Internal functions
ensure-list-of-plists: Exported functions
ensure-primary-system: Exported functions
env: Internal generic functions
env: Internal generic functions
error-on-warnings: Internal generic functions
error-on-warnings: Internal generic functions
eval-arg: Internal functions
exclude: Internal generic functions
exclude: Internal generic functions
exclude: Internal generic functions

F
Function, action: Exported functions
Function, alistp: Exported functions
Function, build-docs: Exported functions
Function, count-leading-spaces: Internal functions
Function, critic: Exported functions
Function, current-system-name: Exported functions
Function, dedent: Exported functions
Function, empty-line: Internal functions
Function, ensure-list-of-plists: Exported functions
Function, ensure-primary-system: Exported functions
Function, eval-arg: Internal functions
Function, generate: Exported functions
Function, linter: Exported functions
Function, list-to-json: Internal functions
Function, make-github-workflows-path: Exported functions
Function, make-job: Internal functions
Function, make-workflow-path: Internal functions
Function, package-workflows: Internal functions
Function, plist-to-alist: Exported functions
Function, plistp: Exported functions
Function, register-workflow: Internal functions
Function, run-tests: Exported functions
Function, sh: Exported functions
Function, single: Exported functions
Function, to-json: Exported functions

G
generate: Exported functions
generate: Exported generic functions
generate: Exported generic functions
generate: Exported generic functions
generate: Exported generic functions
generate: Exported generic functions
Generic Function, action-args: Internal generic functions
Generic Function, asdf-system: Exported generic functions
Generic Function, asdf-systems: Internal generic functions
Generic Function, asdf-systems: Internal generic functions
Generic Function, asdf-version: Internal generic functions
Generic Function, by-cron: Internal generic functions
Generic Function, cache-p: Internal generic functions
Generic Function, command: Internal generic functions
Generic Function, coverage: Internal generic functions
Generic Function, custom: Internal generic functions
Generic Function, env: Internal generic functions
Generic Function, error-on-warnings: Internal generic functions
Generic Function, exclude: Internal generic functions
Generic Function, generate: Exported generic functions
Generic Function, ignore-critiques: Internal generic functions
Generic Function, jobs: Internal generic functions
Generic Function, lisp: Exported generic functions
Generic Function, make-cache-key: Internal generic functions
Generic Function, make-cache-steps: Internal generic functions
Generic Function, make-env: Internal generic functions
Generic Function, make-env: Internal generic functions
Generic Function, make-matrix: Internal generic functions
Generic Function, make-runs-on: Internal generic functions
Generic Function, make-steps: Internal generic functions
Generic Function, make-triggers: Internal generic functions
Generic Function, name: Exported generic functions
Generic Function, name: Internal generic functions
Generic Function, on-pull-request: Internal generic functions
Generic Function, on-push-to: Internal generic functions
Generic Function, on-workflow-redefinition: Internal generic functions
Generic Function, os: Exported generic functions
Generic Function, prepare-data: Exported generic functions
Generic Function, qlfile: Internal generic functions
Generic Function, qlot-version: Internal generic functions
Generic Function, quicklisp: Exported generic functions
Generic Function, roswell-version: Internal generic functions
Generic Function, shell: Internal generic functions
Generic Function, step-id: Exported generic functions
Generic Function, step-if: Internal generic functions
Generic Function, step-name: Exported generic functions
Generic Function, steps: Exported generic functions
Generic Function, system-packages: Exported generic functions
Generic Function, use-matrix-p: Exported generic functions
Generic Function, uses: Internal generic functions

I
ignore-critiques: Internal generic functions
ignore-critiques: Internal generic functions

J
jobs: Internal generic functions
jobs: Internal generic functions
jobs: Internal generic functions

L
linter: Exported functions
lisp: Exported generic functions
lisp: Exported generic functions
lisp: Exported generic functions
list-to-json: Internal functions

M
Macro, defworkflow: Exported macros
Macro, sections: Exported macros
make-cache-key: Internal generic functions
make-cache-key: Internal generic functions
make-cache-steps: Internal generic functions
make-cache-steps: Internal generic functions
make-env: Internal generic functions
make-env: Internal generic functions
make-env: Internal generic functions
make-env: Internal generic functions
make-github-workflows-path: Exported functions
make-job: Internal functions
make-matrix: Internal generic functions
make-matrix: Internal generic functions
make-runs-on: Internal generic functions
make-runs-on: Internal generic functions
make-steps: Internal generic functions
make-steps: Internal generic functions
make-triggers: Internal generic functions
make-triggers: Internal generic functions
make-workflow-path: Internal functions
Method, action-args: Internal generic functions
Method, asdf-system: Exported generic functions
Method, asdf-system: Exported generic functions
Method, asdf-systems: Internal generic functions
Method, asdf-systems: Internal generic functions
Method, asdf-version: Internal generic functions
Method, by-cron: Internal generic functions
Method, by-cron: Internal generic functions
Method, cache-p: Internal generic functions
Method, command: Internal generic functions
Method, coverage: Internal generic functions
Method, custom: Internal generic functions
Method, env: Internal generic functions
Method, error-on-warnings: Internal generic functions
Method, exclude: Internal generic functions
Method, exclude: Internal generic functions
Method, generate: Exported generic functions
Method, generate: Exported generic functions
Method, generate: Exported generic functions
Method, generate: Exported generic functions
Method, ignore-critiques: Internal generic functions
Method, jobs: Internal generic functions
Method, jobs: Internal generic functions
Method, lisp: Exported generic functions
Method, lisp: Exported generic functions
Method, make-cache-key: Internal generic functions
Method, make-cache-steps: Internal generic functions
Method, make-env: Internal generic functions
Method, make-env: Internal generic functions
Method, make-matrix: Internal generic functions
Method, make-runs-on: Internal generic functions
Method, make-steps: Internal generic functions
Method, make-triggers: Internal generic functions
Method, name: Exported generic functions
Method, name: Internal generic functions
Method, on-pull-request: Internal generic functions
Method, on-push-to: Internal generic functions
Method, on-push-to: Internal generic functions
Method, on-workflow-redefinition: Internal generic functions
Method, os: Exported generic functions
Method, os: Exported generic functions
Method, prepare-data: Exported generic functions
Method, prepare-data: Exported generic functions
Method, prepare-data: Exported generic functions
Method, prepare-data: Exported generic functions
Method, prepare-data: Exported generic functions
Method, prepare-data: Exported generic functions
Method, qlfile: Internal generic functions
Method, qlot-version: Internal generic functions
Method, quicklisp: Exported generic functions
Method, quicklisp: Exported generic functions
Method, roswell-version: Internal generic functions
Method, shell: Internal generic functions
Method, step-id: Exported generic functions
Method, step-if: Internal generic functions
Method, step-name: Exported generic functions
Method, steps: Exported generic functions
Method, steps: Exported generic functions
Method, steps: Exported generic functions
Method, steps: Exported generic functions
Method, steps: Exported generic functions
Method, steps: Exported generic functions
Method, steps: Exported generic functions
Method, system-packages: Exported generic functions
Method, system-packages: Exported generic functions
Method, system-packages: Exported generic functions
Method, use-matrix-p: Exported generic functions
Method, uses: Internal generic functions

N
name: Exported generic functions
name: Exported generic functions
name: Internal generic functions
name: Internal generic functions

O
on-pull-request: Internal generic functions
on-pull-request: Internal generic functions
on-push-to: Internal generic functions
on-push-to: Internal generic functions
on-push-to: Internal generic functions
on-workflow-redefinition: Internal generic functions
on-workflow-redefinition: Internal generic functions
os: Exported generic functions
os: Exported generic functions
os: Exported generic functions

P
package-workflows: Internal functions
plist-to-alist: Exported functions
plistp: Exported functions
prepare-data: Exported generic functions
prepare-data: Exported generic functions
prepare-data: Exported generic functions
prepare-data: Exported generic functions
prepare-data: Exported generic functions
prepare-data: Exported generic functions
prepare-data: Exported generic functions

Q
qlfile: Internal generic functions
qlfile: Internal generic functions
qlot-version: Internal generic functions
qlot-version: Internal generic functions
quicklisp: Exported generic functions
quicklisp: Exported generic functions
quicklisp: Exported generic functions

R
register-workflow: Internal functions
roswell-version: Internal generic functions
roswell-version: Internal generic functions
run-tests: Exported functions

S
sections: Exported macros
sh: Exported functions
shell: Internal generic functions
shell: Internal generic functions
single: Exported functions
step-id: Exported generic functions
step-id: Exported generic functions
step-if: Internal generic functions
step-if: Internal generic functions
step-name: Exported generic functions
step-name: Exported generic functions
steps: Exported generic functions
steps: Exported generic functions
steps: Exported generic functions
steps: Exported generic functions
steps: Exported generic functions
steps: Exported generic functions
steps: Exported generic functions
steps: Exported generic functions
system-packages: Exported generic functions
system-packages: Exported generic functions
system-packages: Exported generic functions
system-packages: Exported generic functions

T
to-json: Exported functions

U
use-matrix-p: Exported generic functions
use-matrix-p: Exported generic functions
uses: Internal generic functions
uses: Internal generic functions

Jump to:   A   B   C   D   E   F   G   I   J   L   M   N   O   P   Q   R   S   T   U  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.3 Variables

Jump to:   *   0   @  
A   B   C   E   I   J   L   N   O   Q   R   S   U  
Index Entry  Section

*
*asdf-version*: Internal special variables
*current-system*: Exported special variables
*default-shell*: Internal special variables
*registered-workflows*: Internal special variables
*use-cache*: Exported special variables

0
0.1.0: Internal special variables
0.1.1: Internal special variables
0.2.0: Internal special variables
0.2.1: Internal special variables
0.2.2: Internal special variables
0.3.0: Internal special variables
0.4.0: Internal special variables
0.5.0: Internal special variables
0.6.0: Internal special variables
0.7.0: Internal special variables
0.8.0: Internal special variables

@
@build-docs: Internal special variables
@caching: Internal special variables
@changelog: Exported special variables
@critic: Internal special variables
@details: Internal special variables
@index: Exported special variables
@job-types: Internal special variables
@linter: Internal special variables
@matrix: Internal special variables
@multiple-jobs: Internal special variables
@quickstart: Internal special variables
@readme: Exported special variables
@reasons: Internal special variables
@run-tests: Internal special variables

A
action-args: Exported classes
asdf-system: Exported classes
asdf-systems: Exported classes
asdf-systems: Exported classes
asdf-version: Exported classes

B
by-cron: Internal classes

C
cache: Internal classes
command: Exported classes
coverage: Exported classes
custom: Exported classes

E
env: Exported classes
error-on-warnings: Exported classes
exclude: Exported classes

I
id: Exported classes
if: Exported classes
ignore-critiques: Exported classes

J
jobs: Internal classes

L
lisp: Exported classes

N
name: Exported classes
name: Exported classes
name: Internal classes

O
on-pull-request: Internal classes
on-push-to: Internal classes
os: Exported classes

Q
qlfile: Exported classes
qlot-version: Exported classes
quicklisp: Exported classes

R
roswell-version: Exported classes

S
shell: Exported classes
Slot, action-args: Exported classes
Slot, asdf-system: Exported classes
Slot, asdf-systems: Exported classes
Slot, asdf-systems: Exported classes
Slot, asdf-version: Exported classes
Slot, by-cron: Internal classes
Slot, cache: Internal classes
Slot, command: Exported classes
Slot, coverage: Exported classes
Slot, custom: Exported classes
Slot, env: Exported classes
Slot, error-on-warnings: Exported classes
Slot, exclude: Exported classes
Slot, id: Exported classes
Slot, if: Exported classes
Slot, ignore-critiques: Exported classes
Slot, jobs: Internal classes
Slot, lisp: Exported classes
Slot, name: Exported classes
Slot, name: Exported classes
Slot, name: Internal classes
Slot, on-pull-request: Internal classes
Slot, on-push-to: Internal classes
Slot, os: Exported classes
Slot, qlfile: Exported classes
Slot, qlot-version: Exported classes
Slot, quicklisp: Exported classes
Slot, roswell-version: Exported classes
Slot, shell: Exported classes
Slot, steps: Exported classes
Slot, uses: Exported classes
Special Variable, *asdf-version*: Internal special variables
Special Variable, *current-system*: Exported special variables
Special Variable, *default-shell*: Internal special variables
Special Variable, *registered-workflows*: Internal special variables
Special Variable, *use-cache*: Exported special variables
Special Variable, 0.1.0: Internal special variables
Special Variable, 0.1.1: Internal special variables
Special Variable, 0.2.0: Internal special variables
Special Variable, 0.2.1: Internal special variables
Special Variable, 0.2.2: Internal special variables
Special Variable, 0.3.0: Internal special variables
Special Variable, 0.4.0: Internal special variables
Special Variable, 0.5.0: Internal special variables
Special Variable, 0.6.0: Internal special variables
Special Variable, 0.7.0: Internal special variables
Special Variable, 0.8.0: Internal special variables
Special Variable, @build-docs: Internal special variables
Special Variable, @caching: Internal special variables
Special Variable, @changelog: Exported special variables
Special Variable, @critic: Internal special variables
Special Variable, @details: Internal special variables
Special Variable, @index: Exported special variables
Special Variable, @job-types: Internal special variables
Special Variable, @linter: Internal special variables
Special Variable, @matrix: Internal special variables
Special Variable, @multiple-jobs: Internal special variables
Special Variable, @quickstart: Internal special variables
Special Variable, @readme: Exported special variables
Special Variable, @reasons: Internal special variables
Special Variable, @run-tests: Internal special variables
steps: Exported classes

U
uses: Exported classes

Jump to:   *   0   @  
A   B   C   E   I   J   L   N   O   Q   R   S   U  

Previous: , Up: Indexes   [Contents][Index]

A.4 Data types

Jump to:   4  
A   B   C   D   J   L   P   R   S   W  
Index Entry  Section

4
40ants-ci: The 40ants-ci system
40ants-ci: The 40ants-ci package
40ants-ci/changelog: The 40ants-ci/changelog system
40ants-ci/changelog: The 40ants-ci/changelog package
40ants-ci/ci: The 40ants-ci/ci system
40ants-ci/ci: The 40ants-ci/ci package
40ants-ci/core: The 40ants-ci/core system
40ants-ci/github: The 40ants-ci/github system
40ants-ci/github: The 40ants-ci/github package
40ants-ci/jobs/critic: The 40ants-ci/jobs/critic system
40ants-ci/jobs/critic: The 40ants-ci/jobs/critic package
40ants-ci/jobs/docs: The 40ants-ci/jobs/docs system
40ants-ci/jobs/docs: The 40ants-ci/jobs/docs package
40ants-ci/jobs/job: The 40ants-ci/jobs/job system
40ants-ci/jobs/job: The 40ants-ci/jobs/job package
40ants-ci/jobs/linter: The 40ants-ci/jobs/linter system
40ants-ci/jobs/linter: The 40ants-ci/jobs/linter package
40ants-ci/jobs/lisp-job: The 40ants-ci/jobs/lisp-job system
40ants-ci/jobs/lisp-job: The 40ants-ci/jobs/lisp-job package
40ants-ci/jobs/run-tests: The 40ants-ci/jobs/run-tests system
40ants-ci/jobs/run-tests: The 40ants-ci/jobs/run-tests package
40ants-ci/steps/action: The 40ants-ci/steps/action system
40ants-ci/steps/action: The 40ants-ci/steps/action package
40ants-ci/steps/sh: The 40ants-ci/steps/sh system
40ants-ci/steps/sh: The 40ants-ci/steps/sh package
40ants-ci/steps/step: The 40ants-ci/steps/step system
40ants-ci/steps/step: The 40ants-ci/steps/step package
40ants-ci/utils: The 40ants-ci/utils system
40ants-ci/utils: The 40ants-ci/utils package
40ants-ci/vars: The 40ants-ci/vars system
40ants-ci/vars: The 40ants-ci/vars package
40ants-ci/workflow: The 40ants-ci/workflow system
40ants-ci/workflow: The 40ants-ci/workflow package

A
action: Exported classes

B
build-docs: Exported classes

C
ci: Internal classes
Class, action: Exported classes
Class, build-docs: Exported classes
Class, ci: Internal classes
Class, critic: Exported classes
Class, docs: Internal classes
Class, job: Exported classes
Class, linter: Exported classes
Class, lisp-job: Exported classes
Class, run-tests: Exported classes
Class, sh: Exported classes
Class, step: Exported classes
Class, workflow: Internal classes
critic: Exported classes

D
docs: Internal classes

J
job: Exported classes

L
linter: Exported classes
lisp-job: Exported classes

P
Package, 40ants-ci: The 40ants-ci package
Package, 40ants-ci/changelog: The 40ants-ci/changelog package
Package, 40ants-ci/ci: The 40ants-ci/ci package
Package, 40ants-ci/github: The 40ants-ci/github package
Package, 40ants-ci/jobs/critic: The 40ants-ci/jobs/critic package
Package, 40ants-ci/jobs/docs: The 40ants-ci/jobs/docs package
Package, 40ants-ci/jobs/job: The 40ants-ci/jobs/job package
Package, 40ants-ci/jobs/linter: The 40ants-ci/jobs/linter package
Package, 40ants-ci/jobs/lisp-job: The 40ants-ci/jobs/lisp-job package
Package, 40ants-ci/jobs/run-tests: The 40ants-ci/jobs/run-tests package
Package, 40ants-ci/steps/action: The 40ants-ci/steps/action package
Package, 40ants-ci/steps/sh: The 40ants-ci/steps/sh package
Package, 40ants-ci/steps/step: The 40ants-ci/steps/step package
Package, 40ants-ci/utils: The 40ants-ci/utils package
Package, 40ants-ci/vars: The 40ants-ci/vars package
Package, 40ants-ci/workflow: The 40ants-ci/workflow package

R
run-tests: Exported classes

S
sh: Exported classes
step: Exported classes
System, 40ants-ci: The 40ants-ci system
System, 40ants-ci/changelog: The 40ants-ci/changelog system
System, 40ants-ci/ci: The 40ants-ci/ci system
System, 40ants-ci/core: The 40ants-ci/core system
System, 40ants-ci/github: The 40ants-ci/github system
System, 40ants-ci/jobs/critic: The 40ants-ci/jobs/critic system
System, 40ants-ci/jobs/docs: The 40ants-ci/jobs/docs system
System, 40ants-ci/jobs/job: The 40ants-ci/jobs/job system
System, 40ants-ci/jobs/linter: The 40ants-ci/jobs/linter system
System, 40ants-ci/jobs/lisp-job: The 40ants-ci/jobs/lisp-job system
System, 40ants-ci/jobs/run-tests: The 40ants-ci/jobs/run-tests system
System, 40ants-ci/steps/action: The 40ants-ci/steps/action system
System, 40ants-ci/steps/sh: The 40ants-ci/steps/sh system
System, 40ants-ci/steps/step: The 40ants-ci/steps/step system
System, 40ants-ci/utils: The 40ants-ci/utils system
System, 40ants-ci/vars: The 40ants-ci/vars system
System, 40ants-ci/workflow: The 40ants-ci/workflow system

W
workflow: Internal classes

Jump to:   4  
A   B   C   D   J   L   P   R   S   W