Skip to content

CI: Local and Deployment Project Tests #1130

CI: Local and Deployment Project Tests

CI: Local and Deployment Project Tests #1130

Workflow file for this run

name: Tests
on:
pull_request:
schedule:
- cron: "0 0 * * *" # daily
env:
UPSTASH_REDIS_REST_URL: ${{ secrets.UPSTASH_REDIS_REST_URL }}
UPSTASH_REDIS_REST_TOKEN: ${{ secrets.UPSTASH_REDIS_REST_TOKEN }}
US1_UPSTASH_REDIS_REST_URL: ${{ secrets.US1_UPSTASH_REDIS_REST_URL }}
US1_UPSTASH_REDIS_REST_TOKEN: ${{ secrets.US1_UPSTASH_REDIS_REST_TOKEN }}
APN_UPSTASH_REDIS_REST_URL: ${{ secrets.APN_UPSTASH_REDIS_REST_URL }}
APN_UPSTASH_REDIS_REST_TOKEN: ${{ secrets.APN_UPSTASH_REDIS_REST_TOKEN }}
EU2_UPSTASH_REDIS_REST_URL: ${{ secrets.EU2_UPSTASH_REDIS_REST_URL }}
EU2_UPSTASH_REDIS_REST_TOKEN: ${{ secrets.EU2_UPSTASH_REDIS_REST_TOKEN }}
jobs:
test:
runs-on:
group: large-runners
labels: ubuntu-4x
name: Tests
steps:
- name: Setup repo
uses: actions/checkout@v2
- name: Setup Bun
uses: oven-sh/setup-bun@v1
with:
bun-version: latest
- name: Install dependencies
run: bun install
# - name: Run tests
# run: bun run test
cloudflare-workers-local:
needs:
- test
runs-on: ubuntu-latest
steps:
- name: Setup repo
uses: actions/checkout@v3
- name: Setup nodejs
uses: actions/setup-node@v3
- name: Setup Bun
uses: oven-sh/setup-bun@v1
with:
bun-version: latest
- name: Install dependencies
run: bun install
- name: Build
run: bun run build
- name: Install example
run: bun add @upstash/ratelimit@../..
working-directory: examples/cloudflare-workers
- name: Add environment
run: |
echo '[vars]' >> wrangler.toml
echo "UPSTASH_REDIS_REST_URL = \"$UPSTASH_REDIS_REST_URL\"" >> ./wrangler.toml
echo "UPSTASH_REDIS_REST_TOKEN = \"$UPSTASH_REDIS_REST_TOKEN\"" >> ./wrangler.toml
working-directory: examples/cloudflare-workers
- name: Start example
run: bun dev &
working-directory: examples/cloudflare-workers
- name: Run tests
run: bun test ci.test.ts
working-directory: examples/cloudflare-workers
env:
DEPLOYMENT_URL: http://127.0.0.1:8787
cloudflare-workers-deployed:
concurrency: cloudflare-workers-deployed
needs:
- release
runs-on: ubuntu-latest
steps:
- name: Setup repo
uses: actions/checkout@v3
- name: Setup nodejs
uses: actions/setup-node@v3
with:
node-version: 18
- name: Setup Bun
uses: oven-sh/setup-bun@v1
with:
bun-version: latest
- name: Install example
run: |
bun add @upstash/ratelimit@${{needs.release.outputs.version}}
npm i -g wrangler
working-directory: examples/cloudflare-workers
- name: Add account ID
run: echo 'account_id = "${{ secrets.CLOUDFLARE_ACCOUNT_ID }}"' >> wrangler.toml
working-directory: examples/cloudflare-workers
- name: Add environment
run: |
echo '[vars]' >> wrangler.toml
echo "UPSTASH_REDIS_REST_URL = \"$UPSTASH_REDIS_REST_URL\"" >> ./wrangler.toml
echo "UPSTASH_REDIS_REST_TOKEN = \"$UPSTASH_REDIS_REST_TOKEN\"" >> ./wrangler.toml
working-directory: examples/cloudflare-workers
- name: Deploy
run: wrangler publish
working-directory: examples/cloudflare-workers
env:
CLOUDFLARE_API_TOKEN: ${{secrets.CLOUDFLARE_API_TOKEN}}
- name: Test
run: bun test examples/cloudflare-workers/ci.test.ts
env:
DEPLOYMENT_URL: https://upstash-ratelimit.upsdev.workers.dev
nextjs-local:
needs:
- test
runs-on: ubuntu-latest
steps:
- name: Setup repo
uses: actions/checkout@v3
- name: Setup nodejs
uses: actions/setup-node@v3
- name: Setup Bun
uses: oven-sh/setup-bun@v1
with:
bun-version: latest
- name: Install Dependencies
run: bun install
- name: Build
run: bun run build
- name: Install example
run: bun add @upstash/ratelimit@../..
working-directory: examples/nextjs
- name: Build example
run: bun run build
working-directory: examples/nextjs
- name: Run example
run: npm run start &
working-directory: examples/nextjs
- name: Test
run: bun test ci.test.ts
working-directory: examples/nextjs
env:
DEPLOYMENT_URL: http://localhost:3000
release:
name: Release
concurrency: release
needs:
- cloudflare-workers-local
- nextjs-local
runs-on: ubuntu-latest
outputs:
version: ${{ steps.version.outputs.version }}
steps:
- name: Checkout Repo
uses: actions/checkout@v3
- name: Get version
id: version
run: echo "::set-output name=version::v0.0.0-ci.${GITHUB_SHA}-$(date +%Y%m%d%H%M%S)"
- name: Setup Node
uses: actions/setup-node@v2
with:
node-version: 18
- name: Set package version
run: echo $(jq --arg v "${{ steps.version.outputs.version }}" '(.version) = $v' package.json) > package.json
- name: Setup Bun
uses: oven-sh/setup-bun@v1
with:
bun-version: latest
- name: Install dependencies
run: bun install
- name: Build
run: bun run build
- name: Add npm token
run: echo "//registry.npmjs.org/:_authToken=${{secrets.NPM_TOKEN}}" > .npmrc
- name: Publish release candidate
run: npm publish --access public --tag=canary
- name: Sleep
run: sleep 5