diff --git a/.github/workflows/continuous-integration-workflow.yml b/.github/workflows/continuous-integration-workflow.yml index ef6e6fce..e18c2674 100644 --- a/.github/workflows/continuous-integration-workflow.yml +++ b/.github/workflows/continuous-integration-workflow.yml @@ -2,17 +2,22 @@ name: ci on: [push] jobs: + test: + name: Test - runs-on: ubuntu-20.04 + + runs-on: ubuntu-22.04 + container: - # Source: https://github.com/day8/dockerfiles-for-dev-ci-images - image: ghcr.io/day8/chrome-56:2 + image: ghcr.io/day8/chrome-87:6.0.8 credentials: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} + steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v3 + - name: Maven cache uses: actions/cache@v1 id: maven-cache @@ -21,32 +26,34 @@ jobs: key: ${{ runner.os }}-maven-${{ hashFiles('project.clj', 'deps.edn', '.github/workflows/**') }} restore-keys: | ${{ runner.os }}-maven- - - name: npm cache - uses: actions/cache@v1 + + + - name: Install clojure tools + uses: DeLaGuardo/setup-clojure@12.5 with: - path: ~/.npm - key: ${{ runner.os }}-npm-${{ hashFiles('package.json', 'package-lock.json') }} - restore-keys: | - ${{ runner.os }}-npm- - - name: shadow-cljs compiler cache - uses: actions/cache@v1 + cli: 'latest' + bb: 'latest' + + - name: Cache clojure dependencies + uses: actions/cache@v3 with: - path: .shadow-cljs - key: ${{ runner.os }}-shadow-cljs-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-shadow-cljs- - - if: steps.maven-cache.outputs.cache-hit != 'true' - run: | - lein ci - lein build-report-ci - - if: steps.maven-cache.outputs.cache-hit == 'true' - run: | - lein -o ci - lein -o build-report-ci - - uses: actions/upload-artifact@v2 + path: | + ~/.m2/repository + ~/.gitlibs + ~/.deps.clj + ~/.npm + .shadow-cljs + key: cljdeps-${{ hashFiles('deps.edn') }} + restore-keys: cljdeps- + + - run: bb ci + - run: bb build-report-ci + + - uses: actions/upload-artifact@v4 with: name: build-report path: target/build-report.html + - name: Slack notification uses: homoluctus/slatify@v2.0.1 if: failure() || cancelled() diff --git a/bb.edn b/bb.edn new file mode 100644 index 00000000..5edd5670 --- /dev/null +++ b/bb.edn @@ -0,0 +1,25 @@ +{:min-bb-version "0.4.0" + :tasks + {:requires ([babashka.fs :as fs]) + clean (let [clean-targets ["node_modules" + "run/resources/public/compiled_dev " + "run/resources/public/compiled_prod" + "run/resources/public/compiled_test"]] + (doseq [target clean-targets] + (println "bb clean: deleting" target) + (fs/delete-tree target))) + install (shell "npm install") + test {:depends [clean install] + :task (do (shell "npx shadow-cljs compile karma-test") + (shell "npx karma start --single-run --reporters junit,dots"))} + release-demo {:depends [clean install] + :task (shell "npx shadow-cljs release demo")} + prod-once {:depends [release-demo]} + ci {:depends [clean install release-demo]} + build-report-ci {:depends [clean install] + :task (shell + "npx shadow-cljs clj-run shadow.cljs.build-report demo target/build-report.html")} + watch {:depends [clean install] + :task (shell "npx shadow-cljs watch demo browser-test karma-test")} + deploy-aws {:depends [ci] + :task (shell "aws s3 sync run/resources/public s3://re-demo/ --acl public-read --cache-control max-age=2592000,public")}}}