Oilylime/hyperdrive support #3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: E2E tests | |
on: | |
push: | |
branches: | |
- main | |
- changeset-release/main | |
pull_request: | |
types: [synchronize, opened, reopened, labeled, unlabeled] | |
repository_dispatch: | |
jobs: | |
e2e-test: | |
if: github.repository_owner == 'cloudflare' && (github.event_name != 'pull_request' || (github.event_name == 'pull_request' && contains(github.event.*.labels.*.name, 'e2e' )) || (github.event_name == 'pull_request' && github.head_ref == 'changeset-release/main')) | |
name: "E2E Test" | |
strategy: | |
matrix: | |
os: [ | |
# macos-11, | |
# macos-12, | |
macos-13, | |
windows-2019, | |
windows-2022, | |
# ubuntu-20.04, | |
ubuntu-22.04, | |
] | |
node: ["16", "18"] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout Repo | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Use Node.js ${{ matrix.node }} | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node }} | |
cache: "npm" | |
- name: Install workerd Dependencies | |
if: ${{ runner.os == 'Linux' }} | |
run: | | |
export DEBIAN_FRONTEND=noninteractive | |
sudo apt-get update | |
sudo apt-get install -y libc++1 | |
# Attempt to cache all the node_modules directories based on the OS and package lock. | |
- name: Cache node_modules | |
id: npm-cache | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-node-modules | |
with: | |
key: ${{ runner.os }}-${{ matrix.node }}-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} | |
path: "**/node_modules" | |
# If the cache missed then install using `npm ci` to follow package lock exactly | |
- if: ${{ steps.npm-cache.outputs.cache-hit != 'true'}} | |
name: Install NPM Dependencies | |
run: npm ci | |
- name: Run builds | |
run: npm run build | |
env: | |
NODE_ENV: "production" | |
- name: Build Wrangler package for npm | |
run: cd packages/wrangler && npm pack | |
env: | |
NODE_ENV: "production" | |
- name: Move Wrangler package to tmp directory | |
shell: bash | |
id: "move-wrangler" | |
run: | | |
cp packages/wrangler/wrangler-*.tgz $HOME | |
echo "dir=$(ls $HOME/wrangler-*.tgz)" >> $GITHUB_OUTPUT; | |
env: | |
NODE_ENV: "production" | |
- name: Run tests | |
id: e2e-1 | |
continue-on-error: true | |
run: npm run -w wrangler test:e2e | |
env: | |
CLOUDFLARE_API_TOKEN: ${{ secrets.TEST_CLOUDFLARE_API_TOKEN }} | |
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.TEST_CLOUDFLARE_ACCOUNT_ID }} | |
WRANGLER: npm install ${{ steps.move-wrangler.outputs.dir}} && npx --prefer-offline wrangler | |
NODE_OPTIONS: "--max_old_space_size=8192" | |
- name: Retry tests | |
if: steps.e2e-1.outcome == 'failure' | |
run: npm run -w wrangler test:e2e | |
env: | |
CLOUDFLARE_API_TOKEN: ${{ secrets.TEST_CLOUDFLARE_API_TOKEN }} | |
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.TEST_CLOUDFLARE_ACCOUNT_ID }} | |
WRANGLER: npm install ${{ steps.move-wrangler.outputs.dir}} && npx --prefer-offline wrangler | |
NODE_OPTIONS: "--max_old_space_size=8192" |