diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml new file mode 100644 index 00000000..62dccdd9 --- /dev/null +++ b/.github/workflows/cd.yml @@ -0,0 +1,66 @@ +name: CD + +on: + push: + branches: + - master + paths: + - 'website/**' + + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +jobs: + deploy: + runs-on: ubuntu-latest + + timeout-minutes: 60 + + defaults: + run: + shell: bash + + env: + KOBWEB_CLI_VERSION: 0.9.15 + + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-java@v3 + with: + distribution: 'adopt' + java-version: 17 + + # When projects are created on Windows, the executable bit is sometimes lost. So set it back just in case. + - name: Ensure Gradle is executable + run: chmod +x gradlew + + - name: Setup Gradle + uses: gradle/gradle-build-action@v2 + + - name: Query Browser Cache ID + id: browser-cache-id + run: echo "value=$(./gradlew -q :website:kobwebBrowserCacheId)" >> $GITHUB_OUTPUT + + - name: Cache Browser Dependencies + uses: actions/cache@v3 + id: playwright-cache + with: + path: ~/.cache/ms-playwright + key: ${{ runner.os }}-playwright-${{ steps.browser-cache-id.outputs.value }} + + - name: Ensure gradle wrapper is executable + run: chmod +x gradlew + + - name: Run Kobweb export + run: ./gradlew kobwebExport -PkobwebExportLayout=STATIC -PkobwebBuildTarget=RELEASE -PkobwebReuseServer=false --stacktrace --no-daemon --info + + - name: Build & Deploy Worker + uses: cloudflare/wrangler-action@v3 + with: + apiToken: ${{ secrets.CF_API_TOKEN }} + accountId: ${{ secrets.CF_ACCOUNT_ID }} + command: pages deploy .kobweb/site/ --project-name=kore