diff --git a/.github/workflows/demo.yml b/.github/workflows/demo.yml new file mode 100644 index 0000000..71d1a92 --- /dev/null +++ b/.github/workflows/demo.yml @@ -0,0 +1,145 @@ +name: Checks & deploy +run-name: Fmt, lint, test, build, & deploy to gh-pages +on: [push] +jobs: + fmt: + runs-on: ubuntu-latest + steps: + - name: Check out repository code + uses: actions/checkout@v4 + - name: Install tools from asdf config + uses: ai/asdf-cache-action@v1 + - name: Cache Clojure dependencies + uses: actions/cache@v3 + with: + path: | + ~/.m2/repository + # List all files containing dependencies: + key: cljdeps-${{ hashFiles('deps.edn') }} + restore-keys: cljdeps- + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT + - name: Cache yarn dependencies + uses: actions/cache@v3 + id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + - name: Run formatter + run: yarn check-fmt + lint: + runs-on: ubuntu-latest + steps: + - name: Check out repository code + uses: actions/checkout@v4 + - name: Install tools from asdf config + uses: ai/asdf-cache-action@v1 + - name: Cache Clojure dependencies + uses: actions/cache@v3 + with: + path: | + ~/.m2/repository + # List all files containing dependencies: + key: cljdeps-${{ hashFiles('deps.edn') }} + restore-keys: cljdeps- + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT + - name: Cache yarn dependencies + uses: actions/cache@v3 + id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + - name: Run linter + run: yarn lint + test: + runs-on: ubuntu-latest + steps: + - name: Check out repository code + uses: actions/checkout@v4 + - name: Install tools from asdf config + uses: ai/asdf-cache-action@v1 + - name: Cache Clojure dependencies + uses: actions/cache@v3 + with: + path: | + ~/.m2/repository + # List all files containing dependencies: + key: cljdeps-${{ hashFiles('deps.edn') }} + restore-keys: cljdeps- + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT + - name: Cache yarn dependencies + uses: actions/cache@v3 + id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + - name: Install npm deps + run: yarn install --frozen-lockfile + - name: Run tests + run: yarn test + build: + runs-on: ubuntu-latest + needs: [fmt, lint, test] + steps: + - name: Check out repository code + uses: actions/checkout@v4 + - name: Install tools from asdf config + uses: ai/asdf-cache-action@v1 + - name: Cache Clojure dependencies + uses: actions/cache@v3 + with: + path: | + ~/.m2/repository + # List all files containing dependencies: + key: cljdeps-${{ hashFiles('deps.edn') }} + restore-keys: cljdeps- + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT + - name: Cache yarn dependencies + uses: actions/cache@v3 + id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + - name: Install npm deps + run: yarn install --frozen-lockfile + - name: Build js + run: yarn build-cljs + - name: Build css + run: yarn build-stylus + - name: Upload assets + uses: actions/upload-artifact@v3 + with: + name: github-pages + path: public + + deploy: + runs-on: ubuntu-latest + needs: build + permissions: + pages: write + id-token: write + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - name: Download artifacts + uses: actions/download-artifact@v3 + - run: ls + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v2 diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 0000000..b71589d --- /dev/null +++ b/.tool-versions @@ -0,0 +1,3 @@ +clojure 1.11.1.1257 +java openjdk-18.0.2.1 +nodejs 18.12.1 diff --git a/package.json b/package.json index 9879004..8a8ea80 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,13 @@ { "scripts": { "fmt": "clojure -M:nsorg-fix src test && clojure -M:cljfmt-fix src *.edn test", + "check-fmt": "clojure -M:nsorg-check src test && clojure -M:cljfmt-check src *.edn test", "lint": "clojure -M:lint", "test": "shadow-cljs compile test", "watch-cljs": "shadow-cljs watch app", + "build-cljs": "shadow-cljs compile app", "watch-stylus": "stylus --include-css -c -I src -I node_modules -o public/signals.css -w -m src/signals/signals.styl", + "build-stylus": "stylus --include-css -c -I src -I node_modules -o public/signals.css -m src/signals/signals.styl", "watch-test": "shadow-cljs watch test" }, "devDependencies": {