Skip to content

feat: enhance codemods #3937

feat: enhance codemods

feat: enhance codemods #3937

Workflow file for this run

name: 'Close Pull Request'
on:
pull_request:
types: [closed]
workflow_dispatch:
inputs:
pr_number_by_workflow_dispatch:
description: 'Number of PR'
type: number
required: true
jobs:
upload_pr_workflow_payload:
# Не используем always(), т.к. он не учитывает отмену воркфлоу
# см. https://github.com/orgs/community/discussions/26303
if: ${{ !cancelled() }}
name: Call reusable workflow
uses: ./.github/workflows/reusable_workflow_pr_worfklow_payload.yml
with:
action: upload
override_pr_number: ${{ inputs.pr_number_by_workflow_dispatch }}
v6:
if: github.event.pull_request.merged == true && contains(github.event.pull_request.labels.*.name, 'v6')
concurrency: ci-stable
runs-on: ubuntu-latest
name: v6 Patch
steps:
- name: Checkout (for forked PR)
if: github.event.pull_request.base.repo.id != github.event.pull_request.head.repo.id
uses: actions/checkout@v4
- name: Checkout (for maintainer's PR)
if: github.event.pull_request.base.repo.id == github.event.pull_request.head.repo.id
uses: actions/checkout@v4
with:
token: ${{ secrets.DEVTOOLS_GITHUB_TOKEN }}
- name: Enable Corepack
run: corepack enable
shell: bash
- name: Setup NodeJS
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
- name: Set Git credentials
run: |
git config --local user.email "[email protected]"
git config --local user.name "GitHub Action"
- name: Make patch
uses: VKCOM/gh-actions/VKUI/patch@main
with:
token: ${{ secrets.DEVTOOLS_GITHUB_TOKEN }}
directory: packages/vkui/
targetBranch: v6
needScreenshots: true
patch:
if: github.event.pull_request.merged == true && contains(github.event.pull_request.labels.*.name, 'patch')
concurrency: ci-stable
runs-on: ubuntu-latest
name: Stable Patch
steps:
- name: Checkout (for forked PR)
if: github.event.pull_request.base.repo.id != github.event.pull_request.head.repo.id
uses: actions/checkout@v4
- name: Checkout (for maintainer's PR)
if: github.event.pull_request.base.repo.id == github.event.pull_request.head.repo.id
uses: actions/checkout@v4
with:
token: ${{ secrets.DEVTOOLS_GITHUB_TOKEN }}
- name: Enable Corepack
run: corepack enable
shell: bash
- name: Setup NodeJS
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
- name: Set Git credentials
run: |
git config --local user.email "[email protected]"
git config --local user.name "GitHub Action"
- name: Make patch
uses: VKCOM/gh-actions/VKUI/patch@main
with:
token: ${{ secrets.DEVTOOLS_GITHUB_TOKEN }}
directory: packages/vkui/
is-updated-vkui-floating-ui:
runs-on: ubuntu-latest
if: ${{ github.event.pull_request.merged == true
&& github.event.pull_request.user.login == 'dependabot[bot]'
&& github.event.pull_request.base.ref == 'master' }}
outputs:
result: ${{ steps.check_floating_ui_updated.outputs.floating_ui_updated }}
prev_floating_ui_version: ${{ steps.check_floating_ui_updated.outputs.prev_version }}
new_floating_ui_version: ${{ steps.check_floating_ui_updated.outputs.new_version }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Node setup
uses: ./.github/actions/node-setup
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@v2
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Find changes
uses: dorny/paths-filter@v3
id: file_changes
with:
token: ${{ secrets.GITHUB_TOKEN }}
filters: |
vkui_floating_ui_package:
- 'packages/vkui-floating-ui/package.json'
- name: Check if vkui-floating-ui was updated
id: check_floating_ui_updated
if: ${{ steps.file_changes.outputs.vkui_floating_ui_package == 'true' }}
run: |
UPDATED_DEPS=$(echo ${{ steps.metadata.outputs.dependency-names }} | sed "s/,/ /g")
if [[ $UPDATED_DEPS =~ "@floating-ui/react-dom" ]]; then
echo "floating_ui_updated=true" >> $GITHUB_OUTPUT
echo "prev_version=${{ steps.metadata.outputs.previous-version }}" >> $GITHUB_OUTPUT
echo "new_version=${{ steps.metadata.outputs.new-version }}" >> $GITHUB_OUTPUT
else
echo "floating_ui_updated=false" >> $GITHUB_OUTPUT
fi
autopublish-vkui-floating-ui:
runs-on: ubuntu-latest
needs: is-updated-vkui-floating-ui
if: ${{ needs.is-updated-vkui-floating-ui.outputs.result == 'true' }}
permissions:
issues: write
pull-requests: write
contents: write
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Node setup
uses: ./.github/actions/node-setup
- name: Get vkui-floating-ui version
id: get_version
run: |
echo "floating_ui_version=$(node -p "require('./packages/vkui-floating-ui/package.json').version")" >> $GITHUB_OUTPUT
# Рассчитываем новую версию @vkui-floating-ui
- name: Calculate new version of vkui-floating-ui
id: calc_new_version_vkui_floating_ui
uses: VKCOM/gh-actions/VKUI/bump-vkui-floating-ui-version@main
with:
prev_origin_version: ${{ needs.is-updated-vkui-floating-ui.outputs.prev_floating_ui_version }}
new_origin_version: ${{ needs.is-updated-vkui-floating-ui.outputs.new_floating_ui_version }}
current_version: ${{ steps.get_version.outputs.floating_ui_version }}
- name: Define branch name for new version release
run: |
BRANCH_NAME_PREFIX="release/vkui-floating-ui-"
VERSION_POSTFIX="${{ steps.calc_new_version_vkui_floating_ui.outputs.new_version }}"
echo "RELEASE_BRANCH_NAME="${BRANCH_NAME_PREFIX}${VERSION_POSTFIX}"" >> "$GITHUB_ENV"
- name: Set Git credentials
run: |
git config --local user.email "[email protected]"
git config --local user.name "GitHub Action"
- name: Create branch for new version release
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
branch: ${{ env.RELEASE_BRANCH_NAME }}
# Запускаем форкфлоу скрипта публикации
- name: Publish new version
uses: actions/github-script@v7
with:
script: |
github.rest.actions.createWorkflowDispatch({
owner: context.repo.owner,
repo: context.repo.repo,
workflow_id: 'publish.yml',
ref: ${{ env.RELEASE_BRANCH_NAME }},
inputs: {
package_name: '@vkontakte/vkui-floating-ui',
custom_version: "${{ steps.calc_new_version_vkui_floating_ui.outputs.new_version }}"
latest: true,
close_milestone: false,
}
})
# Обновляем версию vkui-floating-ui в vkui
- name: update vkui-floating-ui version in vkui
run: |
yarn workspace @vkontakte/vkui add @vkontakte/vkui-floating-ui@${{ steps.calc_new_version_vkui_floating_ui.outputs.new_version }}
# Создаем pull request с изменениями в ветке
- name: Create PR with changes
id: create_pull_request
uses: peter-evans/create-pull-request@v7
with:
token: ${{ secrets.GITHUB_TOKEN }}
base: master
branch: ${{ env.RELEASE_BRANCH_NAME }}
commit-message: 'build(deps): Bump @vkontakte/vkui-floating-ui to ${{ steps.calc_new_version_vkui_floating_ui.outputs.new_version }}'
delete-branch: true
title: 'build(deps): Bump @vkontakte/vkui-floating-ui to ${{ steps.calc_new_version_vkui_floating_ui.outputs.new_version }}'
body: ''
labels: subpackage:@vkontakte/vkui-floating-ui, dependencies
# Добавляем майлстоун следующей минорной версии
- name: Add next minor version milestone to pull request
uses: VKCOM/gh-actions/VKUI/add-next-minor-milestone@main
with:
token: ${{ secrets.GITHUB_TOKEN }}
pull_request_number: ${{ steps.create_pull_request.outputs.pull-request-number }}
update-release-notes:
if: ${{ github.event.pull_request.merged == true
&& github.event.pull_request.base.ref == 'master'}}
runs-on: ubuntu-latest
name: Update release notes
permissions:
contents: write
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.base.ref }}
cancel-in-progress: false
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Get vkui version
id: get_version
run: |
echo "vkui_version=$(node -p "require('./packages/vkui/package.json').version")" >> $GITHUB_OUTPUT
- name: Update release notes script
uses: VKCOM/gh-actions/VKUI/auto-update-release-notes@main
with:
token: ${{ secrets.GITHUB_TOKEN }}
current_vkui_version: ${{ steps.get_version.outputs.vkui_version }}
pull_request_number: ${{ github.event.pull_request.number }}