diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 385354a..0164985 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -6,6 +6,7 @@ "master" ] }, + "pull_request": null, "schedule": [ { "cron": "0 10 * * 1" @@ -23,14 +24,41 @@ "steps": [ { "name": "Checkout Code", - "uses": "actions/checkout@v1" + "uses": "actions/checkout@v3" + }, + { + "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 \"value=$(date -u \"+%Y-%m\")\" >> $GITHUB_OUTPUT", + "shell": "bash" + }, + { + "name": "Cache Roswell Setup", + "id": "cache", + "uses": "actions/cache@v3", + "with": { + "path": "qlfile\nqlfile.lock\n~/.cache/common-lisp/\n~/.roswell\n/usr/local/etc/roswell\n/usr/local/bin/ros\n/usr/local/Cellar/roswell\n.qlot", + "key": "a-${{ steps.current-month.outputs.value }}-${{ env.cache-name }}-ubuntu-latest-quicklisp-sbcl-bin-${{ hashFiles('qlfile.lock', '*.asd') }}" + } + }, + { + "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": "project-docs" - } + }, + "if": "steps.cache.outputs.cache-hit != 'true'" }, { "name": "Build Docs", @@ -41,6 +69,74 @@ } } ] + }, + "linter": { + "runs-on": "ubuntu-latest", + "env": { + "OS": "ubuntu-latest", + "QUICKLISP_DIST": "quicklisp", + "LISP": "sbcl-bin" + }, + "steps": [ + { + "name": "Checkout Code", + "uses": "actions/checkout@v3" + }, + { + "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 \"value=$(date -u \"+%Y-%m\")\" >> $GITHUB_OUTPUT", + "shell": "bash" + }, + { + "name": "Cache Roswell Setup", + "id": "cache", + "uses": "actions/cache@v3", + "with": { + "path": "qlfile\nqlfile.lock\n~/.cache/common-lisp/\n~/.roswell\n/usr/local/etc/roswell\n/usr/local/bin/ros\n/usr/local/Cellar/roswell\n.qlot", + "key": "a-${{ steps.current-month.outputs.value }}-${{ env.cache-name }}-ubuntu-latest-quicklisp-sbcl-bin-${{ hashFiles('qlfile.lock', '*.asd') }}" + } + }, + { + "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": "project-docs" + }, + "if": "steps.cache.outputs.cache-hit != 'true'" + }, + { + "name": "Change dist to Ultralisp", + "run": "echo 'dist ultralisp http://dist.ultralisp.org' > qlfile", + "shell": "bash" + }, + { + "name": "Update Qlot", + "run": "qlot update || qlot update", + "shell": "bash" + }, + { + "name": "Install SBLint wrapper", + "run": "qlot exec ros install 40ants-linter", + "shell": "bash" + }, + { + "name": "Run Linter", + "run": "qlot exec 40ants-linter --system \"project-docs\" --imports", + "shell": "bash" + } + ] } } } \ No newline at end of file diff --git a/ci.lisp b/ci.lisp index 8d1ebb0..4e12ea7 100644 --- a/ci.lisp +++ b/ci.lisp @@ -8,5 +8,8 @@ (defworkflow docs :on-push-to "master" + :on-pull-request t :by-cron "0 10 * * 1" - :jobs ((40ants-ci/jobs/docs:build-docs))) + :cache t + :jobs ((40ants-ci/jobs/docs:build-docs) + (40ants-ci/jobs/linter:linter :check-imports t)))