name: CI on: push: branches: [master] paths-ignore: - '*.md' pull_request: branches: [master] paths-ignore: - '*.md' env: CLOJURE_VERSION: '1.10.1.763' JAVA_VERSION: '11' # This is the latest node version we can run. NODE_VERSION: '18' BABASHKA_VERSION: '1.0.168' jobs: typos: name: Spell Check with Typos runs-on: ubuntu-latest steps: - name: Checkout Actions Repository uses: actions/checkout@v3 - name: Check spelling with custom config file uses: crate-ci/typos@v1.13.10 with: config: ./typos.toml test: strategy: matrix: operating-system: [ubuntu-latest] runs-on: ${{ matrix.operating-system }} steps: - name: Checkout uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 - name: Set up Node uses: actions/setup-node@v3 with: node-version: ${{ env.NODE_VERSION }} cache: 'yarn' cache-dependency-path: | yarn.lock static/yarn.lock - name: Set up Java uses: actions/setup-java@v3 with: distribution: 'zulu' java-version: ${{ env.JAVA_VERSION }} - name: Set up Clojure uses: DeLaGuardo/setup-clojure@10.1 with: cli: ${{ env.CLOJURE_VERSION }} - name: Clojure cache uses: actions/cache@v3 id: clojure-deps with: path: | ~/.m2/repository ~/.gitlibs key: ${{ runner.os }}-clojure-deps-${{ hashFiles('deps.edn') }} restore-keys: ${{ runner.os }}-clojure-deps- - name: Fetch Clojure deps if: steps.clojure-deps.outputs.cache-hit != 'true' run: clojure -A:cljs -P - name: Fetch yarn deps run: yarn install --frozen-lockfile - name: Run ClojureScript tests run: | yarn cljs:test node static/tests.js lint: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c #v3 - name: Set up Java uses: actions/setup-java@v3 with: distribution: 'zulu' java-version: ${{ env.JAVA_VERSION }} - name: Set up Clojure uses: DeLaGuardo/setup-clojure@10.1 with: cli: ${{ env.CLOJURE_VERSION }} bb: ${{ env.BABASHKA_VERSION }} - name: Run clj-kondo lint run: clojure -M:clj-kondo --parallel --lint src - name: Carve lint for unused vars run: bb lint:carve 2>/dev/null - name: Lint for vars that are too large run: bb lint:large-vars 2>/dev/null - name: Lint for namespaces that aren't documented run: bb lint:ns-docstrings 2>/dev/null - name: Lint invalid translation entries run: bb lang:validate-translations e2e-test: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 - name: Set up Node uses: actions/setup-node@v3 with: node-version: ${{ env.NODE_VERSION }} cache: 'yarn' cache-dependency-path: | yarn.lock static/yarn.lock - name: Set up Java uses: actions/setup-java@v3 with: distribution: 'zulu' java-version: ${{ env.JAVA_VERSION }} - name: Set up Clojure uses: DeLaGuardo/setup-clojure@10.1 with: cli: ${{ env.CLOJURE_VERSION }} - name: Clojure cache uses: actions/cache@v3 id: clojure-deps with: path: | ~/.m2/repository ~/.gitlibs key: ${{ runner.os }}-clojure-deps-${{ hashFiles('deps.edn') }} restore-keys: ${{ runner.os }}-clojure-deps- - name: Fetch Clojure deps if: steps.clojure-deps.outputs.cache-hit != 'true' run: clojure -A:cljs -P - name: Shadow-cljs cache uses: actions/cache@v3 with: path: .shadow-cljs # ensure update cache every time key: ${{ runner.os }}-shadow-cljs-${{ github.sha }} # will match most recent upload restore-keys: | ${{ runner.os }}-shadow-cljs- - name: Fetch yarn deps run: yarn install env: PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: true # NOTE: require the app to be build in debug mode(compile instead of build). - name: Prepare E2E test build run: | yarn gulp:build && clojure -M:cljs compile app publishing electron (cd static && yarn install && yarn rebuild:all) # Exits with 0 if yarn.lock is up to date or 1 if we forgot to update it - name: Ensure static yarn.lock is up to date run: git diff --exit-code static/yarn.lock - name: Install fluxbox run: sudo apt-get update && sudo apt-get install -y fluxbox - name: Export display run: export DISPLAY=:99 - name: Run Playwright test - 1/2 run: Xvfb :99 -screen 0 1024x768x16 & fluxbox & npx playwright test --reporter github --shard=1/2 env: LOGSEQ_CI: true DEBUG: "pw:api" RELEASE: true # skip dev only test - name: Run Playwright test - 2/2 run: Xvfb :99 -screen 0 1024x768x16 & fluxbox & npx playwright test --reporter github --shard=2/2 env: LOGSEQ_CI: true DEBUG: "pw:api" RELEASE: true # skip dev only test - name: Save test artifacts if: ${{ failure() }} uses: actions/upload-artifact@v3 with: name: e2e-test-report path: e2e-dump/* retention-days: 1