mirror of
https://github.com/cypress-io/cypress.git
synced 2025-12-31 11:39:48 -06:00
133 lines
6.0 KiB
YAML
133 lines
6.0 KiB
YAML
name: Update Browser Versions
|
|
on:
|
|
workflow_dispatch:
|
|
|
|
schedule:
|
|
- cron: '0 8 * * *' # every day at 8am UTC (3/4am EST/EDT)
|
|
jobs:
|
|
update-browser-versions:
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
pull-requests: write
|
|
env:
|
|
CYPRESS_BOT_APP_ID: ${{ secrets.CYPRESS_BOT_APP_ID }}
|
|
BASE_BRANCH: develop
|
|
# Prevent from running this workflow on forks
|
|
if: github.repository == 'cypress-io/cypress'
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v6
|
|
with:
|
|
fetch-depth: 0
|
|
token: ${{ secrets.BOT_GITHUB_ACTION_TOKEN }}
|
|
- name: Setup CircleCI CLI
|
|
run: |
|
|
sudo snap install circleci
|
|
- name: Set committer info
|
|
## attribute the commit to cypress-bot: https://github.community/t/logging-into-git-as-a-github-app/115916
|
|
run: |
|
|
git config --local user.email "${{ env.CYPRESS_BOT_APP_ID }}+cypress-bot[bot]@users.noreply.github.com"
|
|
git config --local user.name "cypress-bot[bot]"
|
|
- name: Checkout base branch
|
|
run: |
|
|
git fetch origin
|
|
git checkout ${{ env.BASE_BRANCH }}
|
|
- name: Set up Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version-file: .node-version
|
|
- name: install dependencies
|
|
run: CI=true yarn
|
|
- name: Check for new Chrome versions
|
|
id: get-versions
|
|
uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
const { getVersions } = require('./scripts/github-actions/update-browser-versions.js')
|
|
|
|
getVersions({ core })
|
|
- name: Determine name of new branch and if it already exists
|
|
id: check-branch
|
|
env:
|
|
BRANCH_NAME: update-chrome-stable-from-${{ steps.get-versions.outputs.latest_stable_version }}-beta-from-${{ steps.get-versions.outputs.latest_beta_version }}
|
|
run: |
|
|
echo "branch_name=${{ env.BRANCH_NAME }}" >> $GITHUB_OUTPUT
|
|
echo "branch_exists=$(git show-ref --verify --quiet refs/remotes/origin/${{ env.BRANCH_NAME }} && echo 'true')" >> $GITHUB_OUTPUT
|
|
- name: Check need for PR or branch update
|
|
id: check-need-for-pr
|
|
run: |
|
|
echo "needs_pr=${{ steps.get-versions.outputs.has_update == 'true' && steps.check-branch.outputs.branch_exists != 'true' }}" >> $GITHUB_OUTPUT
|
|
echo "needs_branch_update=${{ steps.get-versions.outputs.has_update == 'true' && steps.check-branch.outputs.branch_exists == 'true' }}" >> $GITHUB_OUTPUT
|
|
## Update available and a branch/PR already exists
|
|
- name: Checkout existing branch
|
|
if: ${{ steps.check-need-for-pr.outputs.needs_branch_update == 'true' }}
|
|
run: git checkout ${{ steps.check-branch.outputs.branch_name }}
|
|
- name: Check need for update on existing branch
|
|
if: ${{ steps.check-need-for-pr.outputs.needs_branch_update == 'true' }}
|
|
id: check-need-for-branch-update
|
|
uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
const { checkNeedForBranchUpdate } = require('./scripts/github-actions/update-browser-versions.js')
|
|
|
|
checkNeedForBranchUpdate({
|
|
core,
|
|
latestStableVersion: '${{ steps.get-versions.outputs.latest_stable_version }}',
|
|
latestBetaVersion: '${{ steps.get-versions.outputs.latest_beta_version }}',
|
|
})
|
|
## Update available and a PR doesn't already exist
|
|
- name: Checkout new branch
|
|
if: ${{ steps.check-need-for-pr.outputs.needs_pr == 'true' }}
|
|
run: git checkout -b ${{ steps.check-branch.outputs.branch_name }} ${{ env.BASE_BRANCH }}
|
|
## Both
|
|
- name: Update Browser Versions File
|
|
if: ${{ steps.check-need-for-pr.outputs.needs_pr == 'true' || steps.check-need-for-branch-update.outputs.has_newer_update == 'true' }}
|
|
uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
const { updateBrowserVersionsFile } = require('./scripts/github-actions/update-browser-versions.js')
|
|
|
|
updateBrowserVersionsFile({
|
|
latestStableVersion: '${{ steps.get-versions.outputs.latest_stable_version }}',
|
|
latestBetaVersion: '${{ steps.get-versions.outputs.latest_beta_version }}',
|
|
})
|
|
- name: Commit the changes
|
|
if: ${{ steps.check-need-for-pr.outputs.needs_pr == 'true' || steps.check-need-for-branch-update.outputs.has_newer_update == 'true' }}
|
|
run: |
|
|
git commit -am "chore: ${{ steps.get-versions.outputs.description }}"
|
|
- name: Push branch to remote
|
|
if: ${{ steps.check-need-for-pr.outputs.needs_pr == 'true' || steps.check-need-for-branch-update.outputs.has_newer_update == 'true' }}
|
|
run: git push origin ${{ steps.check-branch.outputs.branch_name }}
|
|
## Update available and a branch/PR already exists
|
|
- name: Update PR Title
|
|
if: ${{ steps.check-need-for-pr.outputs.needs_branch_update == 'true' }}
|
|
uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
const { updatePRTitle } = require('./scripts/github-actions/update-browser-versions.js')
|
|
|
|
await updatePRTitle({
|
|
context,
|
|
github,
|
|
baseBranch: '${{ env.BASE_BRANCH }}',
|
|
branchName: '${{ steps.check-branch.outputs.branch_name }}',
|
|
description: '${{ steps.get-versions.outputs.description }}',
|
|
})
|
|
# Update available and a PR doesn't already exist
|
|
- name: Create Pull Request
|
|
id: create-pr
|
|
if: ${{ steps.check-need-for-pr.outputs.needs_pr == 'true' }}
|
|
uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
const { createPullRequest } = require('./scripts/github-actions/create-pull-request.js')
|
|
|
|
await createPullRequest({
|
|
context,
|
|
github,
|
|
baseBranch: '${{ env.BASE_BRANCH }}',
|
|
branchName: '${{ steps.check-branch.outputs.branch_name }}',
|
|
description: '${{ steps.get-versions.outputs.description }}',
|
|
body: 'This PR was auto-generated to update the version(s) of Chrome for driver tests',
|
|
})
|