name: Wrangler Action Self Testing on: pull_request: branches: - main jobs: wrangler_action_self_testing: runs-on: ubuntu-latest steps: - name: Checkout Repo uses: actions/checkout@v3 - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: "latest" cache: "npm" - name: Install modules and build run: npm ci && npm run build - name: Unit Tests run: npm run test - name: Check Formatting run: npm run check - name: Only build app uses: ./ with: workingDirectory: "./test/base" apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} command: deploy --dry-run - name: Only build app w/ quiet enabled uses: ./ with: quiet: true workingDirectory: "./test/base" apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} command: deploy --dry-run # START Setup and teardown of Worker Environment Tests - name: Environment support uses: ./ with: workingDirectory: "./test/environment" apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} environment: dev preCommands: npx wrangler deploy --env dev # https://github.com/cloudflare/wrangler-action/issues/162 secrets: | SECRET1 SECRET2 env: SECRET1: ${{ secrets.SECRET1 }} SECRET2: ${{ secrets.SECRET2 }} - name: Clean up Deployed Environment Worker uses: ./ with: workingDirectory: "./test/base" apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} command: delete --name wrangler-action-dev-environment-test --force # END Setup and teardown of Worker Environment Tests # START Setup and teardown of Workers w/ Secrets Tests - name: Deploy app secrets w/ hardcoded Wrangler v2 uses: ./ with: wranglerVersion: "2.20.0" workingDirectory: "./test/base" apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} secrets: | SECRET1 SECRET2 env: SECRET1: ${{ secrets.SECRET1 }} SECRET2: ${{ secrets.SECRET2 }} - name: Health Check Deployed Worker run: node .github/workflows/workerHealthCheck.cjs shell: bash - name: Deploy app secrets w/ default version uses: ./ with: workingDirectory: "./test/base" apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} secrets: | SECRET1 SECRET2 env: SECRET1: ${{ secrets.SECRET1 }} SECRET2: ${{ secrets.SECRET2 }} - name: Health Check Deployed Worker run: node .github/workflows/workerHealthCheck.cjs shell: bash - name: Clean Up Deployed Workers uses: ./ with: workingDirectory: "./test/base" apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} command: delete --name wrangler-action-test --force # END Setup and teardown of Workers w/ Secrets Tests - name: Support packageManager variable uses: ./ with: workingDirectory: "./test/empty" packageManager: "npm" apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} command: deploy --dry-run - name: Support unspecified packageManager with no lockfile uses: ./ with: workingDirectory: "./test/empty" apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} command: deploy --dry-run - name: Support npm package manager uses: ./ with: workingDirectory: "./test/npm" apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} command: deploy --dry-run - name: Install yarn run: npm i -g yarn - name: Support yarn package manager uses: ./ with: workingDirectory: "./test/yarn" apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} command: deploy --dry-run - name: Install pnpm run: npm i -g pnpm - name: Support pnpm package manager uses: ./ with: workingDirectory: "./test/pnpm" apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} command: deploy --dry-run - name: Change directory to pre-installed-wrangler and install dependencies run: | cd ./test/pre-installed-wrangler npm install - name: Support pre-installed wrangler uses: ./ with: workingDirectory: "./test/pre-installed-wrangler" apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} command: deploy --dry-run