Skip to content

Commit

Permalink
feat: Initial example deploy configuration
Browse files Browse the repository at this point in the history
  • Loading branch information
Fryuni committed Mar 29, 2024
1 parent cd91649 commit 20fe8fb
Show file tree
Hide file tree
Showing 3 changed files with 115 additions and 2 deletions.
79 changes: 79 additions & 0 deletions .github/workflows/example-deploys.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
name: Deploy Examples

on:
workflow_dispatch:
push:
branches:
- main
merge_group:
pull_request:
paths-ignore:
- "**/*.md"
- ".github/ISSUE_TEMPLATE/**"

# Automatically cancel older in-progress jobs on the same branch
concurrency:
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request_target' && github.head_ref || github.ref }}
cancel-in-progress: true

defaults:
run:
shell: bash

env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ vars.TURBO_TEAM }}
FORCE_COLOR: true
ASTRO_TELEMETRY_DISABLED: true
# 7 GiB by default on GitHub, setting to 6 GiB
# https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources
NODE_OPTIONS: --max-old-space-size=6144

jobs:
cloudflare:
name: 'Deploy "${{ matrix.example }}" to Cloudflare'
runs-on: ubuntu-latest
timeout-minutes: 3
strategy:
matrix:
example:
- sitemap-ext
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup PNPM
uses: pnpm/action-setup@v2

- name: Setup Node
uses: actions/setup-node@main
with:
node-version: 20
cache: "pnpm"

- name: Install dependencies
run: pnpm install

- uses: schnerring/cloudflare-pages-branch-alias-action@v1
id: pages-branch-alias
with:
# git-branch input
git-branch: ${{ github.head_ref }}

- name: Build Packages
run: pnpm -w build

- name: Build to Cloudflare
run: ./examples/deploy-cloudflare.sh ${{ matrix.example }}
env:
DEPLOY_SITE: "https://${{ steps.pages-branch-alias.outputs.branch-alias }}.inox-tools-ex-${{ matrix.example }}.pages.dev"

- name: Discard all git changes
run: git restore .

- name: Publish to Cloudflare Pages
run: pnpm dlx wrangler pages deploy dist --project-name 'inox-tools-ex-${{ matrix.example }}' --branch '${{ github.head_ref }}'
working-directory: examples/${{ matrix.example }}
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
35 changes: 35 additions & 0 deletions examples/deploy-cloudflare.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#!/usr/bin/env bash

###########################################
# Build an Astro Site to Cloudflare Pages #
###########################################

set -exo pipefail

PROJECT_NAME=$1

# Get the script directory
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"

# Check that the project exists
if [ ! -d "$SCRIPT_DIR/$PROJECT_NAME" ]; then
echo "Project $PROJECT_NAME does not exist" >&2
exit 1
fi

cd "$SCRIPT_DIR/$PROJECT_NAME"

# Check that the project is an Astro project
if ! jq -e '.dependencies | has("astro")' package.json >/dev/null; then
echo "Project $PROJECT_NAME is not an Astro project" >&2
exit 1
fi

# Configure the Astro project to deploy to Cloudflare Pages
pnpm astro add cloudflare --yes

# Build the project
pnpm build

# Restore the Astro project to its original state
git restore package.json astro.config.*
3 changes: 1 addition & 2 deletions examples/sitemap-ext/astro.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@ import node from '@astrojs/node';

// https://astro.build/config
export default defineConfig({
site: 'https://example.com',
base: '/sub-site',
site: process.env.DEPLOY_SITE ?? 'https://example.com',
integrations: [
mdx(),
sitemap({
Expand Down

0 comments on commit 20fe8fb

Please sign in to comment.