/
sdds
/
plasma
Обзор
Документация
Войти
/
sdds
/
plasma
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
dev
.github/workflows/documentation-deploy-pr.yml
236 строк
10 KB
Dima Shugaev
feat(infra): update configs for docsense
08 апр 2026, 10:47
08 апр 2026, 10:47
0031244
Код
Авторство
О чём код?
name: Deploy documentations artefacts [PR] on: pull_request_target: branches: - dev - next-insol - next-platform-ai - next-sbcom paths-ignore: - 'docs/**' pull_request: branches: - master paths-ignore: - 'docs/**' concurrency: # New commit on branch cancels running workflows of the same branch group: ${{ github.workflow }}-${{ github.head_ref }} cancel-in-progress: true jobs: authorize: name: Authorize external pull request if: ${{ !startsWith(github.head_ref, 'release') }} uses: ./.github/workflows/authorize-external-pr.yml state: name: Handle lerna changed state needs: [authorize] uses: ./.github/workflows/change-detection.yml with: ref: refs/pull/${{github.event.pull_request.number}}/merge secrets: inherit deploy-website: name: Deploy website artifacts needs: [ state ] if: ${{ fromJSON(needs.state.outputs.STATE).HAS_DEPLOY_WEBSITE }} runs-on: ubuntu-22.04 env: PR_NAME: pr-${{ github.event.number }} PREFIX: pr/pr-${{ github.event.number }} steps: - uses: actions/checkout@v4 with: ref: refs/pull/${{github.event.pull_request.number}}/merge show-progress: false - name: Prepare environment uses: ./.github/actions/prepare-environment - name: Lerna bootstrap run: npx lerna bootstrap --scope="@salutejs/core-themes" --scope="@salutejs/plasma-{b2c,web,website,tokens-b2c,typo,icons,new-hope,themes}" - name: Prepare directory run: | mkdir -p s3_build/${PR_NAME} # TODO: https://github.com/salute-developers/plasma/issues/603 - name: Plasma Website run: | export NODE_OPTIONS=--openssl-legacy-provider npm run build --prefix="./website/plasma-website" cp -R ./website/plasma-website/build/. ./s3_build/${PR_NAME} - name: Install s3cmd run: pip3 install s3cmd - name: s3 Upload run: > s3cmd --access_key ${{ secrets.AWS_ACCESS_KEY_ID }} --secret_key ${{ secrets.AWS_SECRET_ACCESS_KEY }} --host ${{ secrets.AWS_ENDPOINT }} --host-bucket ${{ secrets.AWS_ENDPOINT }} --bucket-location ${{ secrets.AWS_REGION }} --signature-v2 --no-mime-magic sync ./s3_build/${PR_NAME}/ s3://${{ secrets.AWS_S3_BUCKET_2 }}/pr/${PR_NAME}/ deploy-artifacts: name: Deploy artifacts needs: [ state, deploy-website ] if: ${{ fromJSON(needs.state.outputs.STATE).HAS_PACKAGES_DS_CHANGES }} runs-on: ubuntu-22.04 env: PR_NAME: pr-${{ github.event.number }} PREFIX: pr/pr-${{ github.event.number }} TYPESENSE_KEY: ${{ secrets.TYPESENSE_KEY }} TYPESENSE_SERVICE_HOSTNAME: ${{ secrets.TYPESENSE_SERVICE_HOSTNAME }} QDRANT_API_KEY: ${{ secrets.QDRANT_API_KEY }} strategy: fail-fast: false matrix: package: ${{ fromJson(needs.state.outputs.STATE).PACKAGES_DOCUMENTATIONS_RUN }} steps: - uses: actions/checkout@v4 with: show-progress: false ref: refs/pull/${{github.event.pull_request.number}}/merge - name: Prepare environment uses: ./.github/actions/prepare-environment - name: Set job environment variables run: | echo "SHORT_NAME=$(echo ${{ matrix.package }} | sed -r 's/plasma-//g')" >> $GITHUB_ENV echo "HAS_PACKAGE_DOCS=$([ -d "./website/${{ matrix.package }}-docs" ] && echo true || echo false)" >> $GITHUB_ENV - name: Get lerna scope id: lerna-scope uses: actions/github-script@v7 env: PROCESSED_DATA: ${{ toJSON(fromJson(needs.state.outputs.STATE).PROCESSED_DATA) }} PACKAGE: ${{ matrix.package }} with: result-encoding: string script: | const getLernaScope = require('./.github/get-lerna-scope.js'); return getLernaScope(); - name: Lerna bootstrap run: npx lerna bootstrap --scope="${{ steps.lerna-scope.outputs.result }}" - name: Prepare directory run: mkdir -p s3_build/${PR_NAME} - name: Build documentation - "${{ matrix.package }}" if: ${{ fromJSON(env.HAS_PACKAGE_DOCS) }} env: NODE_OPTIONS: "--max_old_space_size=10240" run: | npm run build --prefix="./website/${{ matrix.package }}-docs" -- --no-minify cp -R ./website/${{ matrix.package }}-docs/build ./s3_build/${PR_NAME}/${{ env.SHORT_NAME }} - name: Build storybook - "${{ matrix.package }}" run: | npm run storybook:build --prefix="./packages/${{ matrix.package }}" cp -R ./packages/${{ matrix.package }}/build-sb ./s3_build/${PR_NAME}/${{ env.SHORT_NAME }}-storybook ## Проверяем если в пакете скрипт отвечающий за сборку компонентов на основе черновика - name: Build draft components storybook - "${{ matrix.package }}" run: | if grep -q '"storybook:draft"' "./packages/${{ matrix.package }}/package.json"; then npm run storybook:build:draft --prefix="./packages/${{ matrix.package }}" cp -R ./packages/${{ matrix.package }}/build-sb-draft ./s3_build/${PR_NAME}/${{ env.SHORT_NAME }}-draft-storybook echo "HAS_DRAFT_COMPONENTS=true" >> $GITHUB_ENV else echo "Package not have draft components" fi - name: Install s3cmd run: pip3 install s3cmd - name: s3 upload docs if: ${{ fromJSON(env.HAS_PACKAGE_DOCS) }} run: > s3cmd --access_key ${{ secrets.AWS_ACCESS_KEY_ID }} --secret_key ${{ secrets.AWS_SECRET_ACCESS_KEY }} --host ${{ secrets.AWS_ENDPOINT }} --host-bucket ${{ secrets.AWS_ENDPOINT }} --bucket-location ${{ secrets.AWS_REGION }} --signature-v2 --delete-removed --no-mime-magic sync ./s3_build/${PR_NAME}/${{ env.SHORT_NAME }}/ s3://${{ secrets.AWS_S3_BUCKET_2 }}/pr/${PR_NAME}/${{ env.SHORT_NAME }}/ - name: s3 upload storybook by draft components if: ${{ env.HAS_DRAFT_COMPONENTS == 'true' }} run: > s3cmd --access_key ${{ secrets.AWS_ACCESS_KEY_ID }} --secret_key ${{ secrets.AWS_SECRET_ACCESS_KEY }} --host ${{ secrets.AWS_ENDPOINT }} --host-bucket ${{ secrets.AWS_ENDPOINT }} --bucket-location ${{ secrets.AWS_REGION }} --signature-v2 --delete-removed --no-mime-magic sync ./s3_build/${PR_NAME}/${{ env.SHORT_NAME }}-draft-storybook/ s3://${{ secrets.AWS_S3_BUCKET_2 }}/pr/${PR_NAME}/${{ env.SHORT_NAME }}-draft-storybook/ - name: s3 upload storybook run: > s3cmd --access_key ${{ secrets.AWS_ACCESS_KEY_ID }} --secret_key ${{ secrets.AWS_SECRET_ACCESS_KEY }} --host ${{ secrets.AWS_ENDPOINT }} --host-bucket ${{ secrets.AWS_ENDPOINT }} --bucket-location ${{ secrets.AWS_REGION }} --signature-v2 --delete-removed --no-mime-magic sync ./s3_build/${PR_NAME}/${{ env.SHORT_NAME }}-storybook/ s3://${{ secrets.AWS_S3_BUCKET_2 }}/pr/${PR_NAME}/${{ env.SHORT_NAME }}-storybook/ attache-comment: name: Attached comment needs: [ state, deploy-website, deploy-artifacts ] if: ${{ always() && (contains(needs.deploy-website.result, 'success') || contains(needs.deploy-artifacts.result, 'success')) }} runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 with: ref: refs/pull/${{github.event.pull_request.number}}/merge show-progress: false - name: Create comment id: comment-link uses: actions/github-script@v7 env: PACKAGES_DS: ${{ toJSON(fromJSON(needs.state.outputs.STATE).PACKAGES_DOCUMENTATIONS_RUN) }} BASE_URL: ${{ vars.STAGE_STABLE_URL }}/pr/pr-${{ github.event.number }} with: result-encoding: string script: | const createLinks = require('./.github/create-links.js'); return createLinks(); - name: Attach comment uses: marocchino/sticky-pull-request-comment@v2 with: header: Links message: ${{ steps.comment-link.outputs.result }}