name: "publish release"

on:
  release:
    types: [published]

jobs:
  publish-npm-release:
    name: "publish to NPM"
    runs-on: ubuntu-20.04
    if: github.repository == 'microsoft/playwright'
    steps:
    - uses: actions/checkout@v2
    - uses: actions/setup-node@v2
      with:
        node-version: 12
        registry-url: 'https://registry.npmjs.org'
    - run: npm i -g npm@8
    - run: npm ci
    - run: npm run build
    - run: npx playwright install-deps
    - run: utils/publish_all_packages.sh --release-candidate
      if: "github.event.release.prerelease"
      env:
        NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
    - run: utils/publish_all_packages.sh --release
      if: "!github.event.release.prerelease"
      env:
        NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

  publish-driver-release:
    name: "publish playwright driver to CDN"
    runs-on: ubuntu-20.04
    if: github.repository == 'microsoft/playwright'
    steps:
    - uses: actions/checkout@v2
    - uses: actions/setup-node@v2
      with:
        node-version: 12
        registry-url: 'https://registry.npmjs.org'
    - run: npm i -g npm@8
    - run: npm ci
    - run: npm run build
    - run: npx playwright install-deps
    - run: utils/build/build-playwright-driver.sh
    - run: utils/build/upload-playwright-driver.sh
      env:
        AZ_UPLOAD_FOLDER: driver
        AZ_ACCOUNT_KEY: ${{ secrets.AZ_ACCOUNT_KEY }}
        AZ_ACCOUNT_NAME: ${{ secrets.AZ_ACCOUNT_NAME }}

  publish-docker-release:
    name: "publish to DockerHub"
    runs-on: ubuntu-20.04
    if: github.repository == 'microsoft/playwright'
    steps:
    - uses: actions/checkout@v2
    - uses: actions/setup-node@v2
      with:
        node-version: 12
        registry-url: 'https://registry.npmjs.org'
    - uses: azure/docker-login@v1
      with:
        login-server: playwright.azurecr.io
        username: playwright
        password: ${{ secrets.DOCKER_PASSWORD }}
    - name: Set up Docker QEMU for arm64 docker builds
      uses: docker/setup-qemu-action@v1
      with:
        platforms: arm64
    - run: npm i -g npm@8
    - run: npm ci
    - run: npm run build
    - run: npx playwright install-deps
    - run: ./utils/docker/publish_docker.sh stable

  publish-trace-viewer:
    name: "publish Trace Viewer to trace.playwright.dev"
    runs-on: ubuntu-20.04
    if: github.repository == 'microsoft/playwright'
    steps:
    - uses: actions/checkout@v2
    - uses: actions/setup-node@v2
      with:
        node-version: 16
    - run: npm i -g npm@7
    - name: Deploy Stable
      run: bash utils/build/deploy-trace-viewer.sh --stable
      env:
        GH_SERVICE_ACCOUNT_TOKEN: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }}
