diff --git a/.github/workflows/build-and-deploy.yml b/.github/workflows/build-and-deploy.yml new file mode 100644 index 0000000..c7e29dd --- /dev/null +++ b/.github/workflows/build-and-deploy.yml @@ -0,0 +1,69 @@ +name: Build and Deploy +on: + push: + branches: + - '*' + pull_request: + branches: + - '*' + +permissions: + pages: write + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + steps: + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '22' + + - name: Checkout + uses: actions/checkout@v4 + + - name: Prepare java + uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: '21' + + - name: Install clojure tools + uses: DeLaGuardo/setup-clojure@12.5 + with: + cli: latest + bb: latest + + - name: Cache clojure/java dependencies + uses: actions/cache@v4 + with: + path: | + ~/.m2/repository + ~/.gitlibs + ~/.deps.clj + key: ${{ runner.os }}-clojure-${{ hashFiles('**/*.edn') }} + restore-keys: | + ${{ runner.os }}-clojure- + + - name: Install node dependencies + run: npm install + + - name: Cache npm + uses: actions/cache@v4 + with: + path: ~/.npm + key: ${{ runner.os }}-npm-${{ hashFiles('package-lock.json') }} + restore-keys: | + ${{ runner.os }}-npm- + + - name: Build app to public directory + run: | + set -x + npm run build + + - name: Deploy app to gh-pages + if: github.ref == 'refs/heads/main' + uses: peaceiris/actions-gh-pages@v4 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./public