Update screenshots for 6.0-stable #528
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: 'Update screenshots' | |
on: | |
workflow_dispatch: | |
push: | |
branches: | |
- '*-stable' | |
run-name: Update screenshots for ${{ github.ref_name }} | |
jobs: | |
update_screens: | |
runs-on: ubuntu-latest | |
container: | |
# см. https://github.com/microsoft/playwright/blob/main/utils/docker/Dockerfile.focal | |
image: mcr.microsoft.com/playwright:v1.40.1-focal | |
options: --ipc=host | |
strategy: | |
fail-fast: false | |
matrix: | |
shardIndex: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] | |
shardTotal: [10] | |
name: 'Run e2e tests for (shard ${{ matrix.shardIndex }}/${{ matrix.shardTotal }})' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
# см. https://github.com/actions/checkout/issues/1169 | |
- name: Set safe directory | |
run: git config --global --add safe.directory /__w/VKUI/VKUI | |
# см. https://github.com/microsoft/playwright/issues/21920 | |
- name: Install git lfs | |
run: | | |
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash | |
apt-get install -y git-lfs | |
- name: Install rsync | |
run: | | |
apt-get install -y rsync | |
- name: Install zip | |
run: | | |
apt-get install -y zip | |
- name: Create LFS file list | |
run: git lfs ls-files -l | cut -d' ' -f1 | sort > .lfs-assets-id | |
- name: Restore LFS cache | |
uses: actions/cache@v3 | |
with: | |
path: .git/lfs | |
key: lfs-${{ hashFiles('.lfs-assets-id') }} | |
- name: Checkout LFS objects | |
run: git lfs pull | |
- name: Setup NodeJS | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
cache: 'yarn' | |
- name: Install dependencies | |
run: YARN_ENABLE_SCRIPTS=false yarn install --immutable | |
- name: Update screenshots | |
# Почему HOME=/root см. https://github.com/microsoft/playwright/issues/6500 | |
run: HOME=/root yarn run test:e2e-update:ci --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }} | |
- name: Zip changed screenshots | |
id: zip-screenshots | |
run: | | |
git add ./**/*.png | |
mkdir screenshots | |
rsync -R $(git diff --name-only --cached --relative) screenshots | |
if [ -d screenshots/components ]; then | |
echo "needUpload=true" >> $GITHUB_OUTPUT | |
cd screenshots | |
zip -q -r ../../screenshots-${{ matrix.shardIndex }}-${{ matrix.shardTotal }}.zip components | |
fi | |
shell: bash | |
working-directory: ./packages/vkui/src | |
- name: Upload archive | |
if: steps.zip-screenshots.outputs.needUpload == 'true' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: screenshots-${{ matrix.shardIndex }}-${{ matrix.shardTotal }} | |
path: packages/vkui/screenshots-${{ matrix.shardIndex }}-${{ matrix.shardTotal }}.zip | |
collect_all_chnages_and_push: | |
runs-on: ubuntu-latest | |
needs: [update_screens] | |
name: 'Collect updated screenshots and push changes' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download artifacts | |
id: artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
path: packages/vkui/artifacts | |
- name: Unzip archives | |
id: unzip | |
run: | | |
if [ -d artifacts ]; then | |
echo "found=true" >> $GITHUB_OUTPUT | |
cd artifacts | |
find . -type f -name 'screenshots-*.zip' -exec unzip -q -o -d ../src {} \; | |
fi | |
shell: bash | |
working-directory: ./packages/vkui | |
- name: Set Git credentials | |
run: | | |
git config --local user.email "[email protected]" | |
git config --local user.name "GitHub Action" | |
- name: Push updated screenshots | |
if: ${{ steps.unzip.outputs.found == 'true' && github.event_name != 'push' }} | |
uses: VKCOM/gh-actions/VKUI/push-screenshots@main | |
- name: Create pull request with updated screenshots | |
if: ${{ steps.unzip.outputs.found == 'true' && github.event_name == 'push' }} | |
uses: peter-evans/create-pull-request@v5 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
title: 'ci(e2e): Update screenshots for ${{ github.ref_name }}' | |
branch: ${{ github.ref_name }}-screenshots-updates | |
commit-message: 'chore(e2e): update screenshots' | |
body: Automated screenshots updates | |
add-paths: | | |
**/*.png |