diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml new file mode 100644 index 0000000..dee0f3a --- /dev/null +++ b/.github/workflows/build-release.yml @@ -0,0 +1,82 @@ +name: Build & Publish Client Release + +on: + push: + branches: [main] + workflow_dispatch: + +permissions: + contents: write + +env: + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: 'true' + NITRO_JSON_MODE: 'legacy' + +jobs: + build-release: + runs-on: ubuntu-latest + + steps: + - name: Checkout client + uses: actions/checkout@v4 + with: + path: Nitro-V3 + + - name: Checkout renderer + uses: actions/checkout@v4 + with: + repository: duckethotel/ducket-render + ref: main + path: Nitro_Render_V3 + token: ${{ secrets.DUCKET_REPO_TOKEN }} + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: '22' + cache: yarn + cache-dependency-path: | + Nitro-V3/yarn.lock + Nitro_Render_V3/yarn.lock + + - name: Install renderer dependencies + working-directory: Nitro_Render_V3 + run: yarn install --frozen-lockfile + + - name: Link renderer + working-directory: Nitro_Render_V3 + run: yarn link + + - name: Install client dependencies + working-directory: Nitro-V3 + run: yarn install --frozen-lockfile + + - name: Link renderer into client + working-directory: Nitro-V3 + run: yarn link "@nitrots/nitro-renderer" + + - name: Build client + working-directory: Nitro-V3 + run: yarn build + + - name: Read package version + id: version + working-directory: Nitro-V3 + run: | + VERSION=$(node -p "require('./package.json').version") + SHORT_SHA=${GITHUB_SHA::7} + echo "version=$VERSION" >> "$GITHUB_OUTPUT" + echo "short_sha=$SHORT_SHA" >> "$GITHUB_OUTPUT" + + - name: Package dist + working-directory: Nitro-V3 + run: | + zip -r "../ducket-client-dist-${{ steps.version.outputs.short_sha }}.zip" dist + + - name: Publish release + uses: softprops/action-gh-release@v2 + with: + tag_name: client-v${{ steps.version.outputs.version }}-${{ steps.version.outputs.short_sha }} + name: Ducket Client ${{ steps.version.outputs.version }} (${{ steps.version.outputs.short_sha }}) + generate_release_notes: true + files: ducket-client-dist-${{ steps.version.outputs.short_sha }}.zip