CI #97
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "CI", | |
"on": { | |
"push": { | |
"branches": [ | |
"master" | |
] | |
}, | |
"pull_request": null, | |
"schedule": [ | |
{ | |
"cron": "0 10 * * 1" | |
} | |
] | |
}, | |
"jobs": { | |
"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@v3", | |
"with": { | |
"asdf-system": "reblocks-ui" | |
}, | |
"if": "steps.cache.outputs.cache-hit != 'true'" | |
}, | |
{ | |
"name": "Change dist to Ultralisp if qlfile does not exist", | |
"run": "if [[ ! -e qlfile ]]; then echo 'dist ultralisp http://dist.ultralisp.org' > qlfile; fi", | |
"shell": "bash" | |
}, | |
{ | |
"name": "Update Qlot", | |
"run": "qlot update --no-deps", | |
"shell": "bash" | |
}, | |
{ | |
"name": "Install SBLint wrapper", | |
"run": "qlot exec ros install 40ants-asdf-system 40ants-linter", | |
"shell": "bash" | |
}, | |
{ | |
"name": "Run Linter", | |
"run": "qlot exec 40ants-linter --system \"reblocks-ui, reblocks-ui-docs, reblocks-ui-examples\" --imports", | |
"shell": "bash" | |
} | |
] | |
}, | |
"critic": { | |
"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@v3", | |
"with": { | |
"asdf-system": "reblocks-ui" | |
}, | |
"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 LISP-CRITIC wrapper", | |
"run": "qlot exec ros install 40ants-critic", | |
"shell": "bash" | |
}, | |
{ | |
"name": "Run Critic for \"reblocks-ui\" system", | |
"run": "qlot exec lisp-critic --ignore function-too-long,check-prefix reblocks-ui", | |
"shell": "bash" | |
} | |
] | |
} | |
} | |
} |