GitHub Actionsλ︎
GitHub Actions are pre-defined tasks that can be used within a GitHub Workflow, triggered by events such as committing to a branch or pull request.
GitHub Actions Marketplace contains a wide range of actions that can be used to quickly create a workflow.
Use major version only
Use the major version of a GitHub action within a GitHub workflows to minimise the maintenance of action versions in workflow configuration. e.g. if the latest version is v5.2.1
, then use version v5
to use the latest version available within that major version.
Authenticationλ︎
GitHub actions have read access to repositories, allowing them to checkout code and configuration. For more permissions the GitHub Action requires an authorisation token.
GitHub automatically creates a token that GitHub actions can use to make an authenticated API request, scoped to the current repository.
- uses: actions/action-name@v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
For customised authentication or access to a different GitHub repository, create a developer token and save it as a user or organisation secret.
GitHub - Automatic token authentication
Common GitHub Actionsλ︎
Action | Description |
---|---|
Checkout | Checkout repository to enable workflow to access |
Cache | cache dependencies and build outputs to improve workflow execution time |
Changelog Enforcer | checks the CHANGELOG.md file has been updated for a pull request |
MegaLinter | verify code and configuration consistency |
Setup reviewdog | Setup reviewdog post review comments to pull requests, typically used with lint tools |
Clojure lint | clj-kondo lint with reviewdog comments added inline to pull request |
Setup java jdk | setup up Java run-time environment (specify version, distribution, etc) |
Setup clojure | Setup Clojure environment and common Clojure tools for quality (clj-kondo, cljstyle, unit testing, etc) |
Setup go | sets up a Go language environment |
Setup node | setup a version of the Node.js environment, caching npm/yarn /pnpm dependencies |
Setup python | Provides python or PyPy, optionally cache pip dependencies |
GitHub Pages Deploy | deploy to GitHub pages, including cross-repository deployments |
Actions to investigate
- clj-watson - software composition analysis (SCA)
- clj-homes - SAST (Static application security testing) tool
- Clojure Dependency Update Action - update project dependency versions for Clojure CLI, Shadow-cljs, Leiningen, Boot and Maven Pom.xml
- Clojure-Autodoc Action - generate HTML API documentation from a Clojure project
- Clojars Release Action