e5613405f4
Без пина CI каждый раз тянул latest pnpm; на 10.4+ ignored builds из warning стали ERR_PNPM_IGNORED_BUILDS, и `pnpm install --frozen-lockfile` валился на electron/esbuild/@parcel/watcher и пр. - packageManager=pnpm@10.33.0 в корневом package.json (синхронно с publish-packages.yaml и components/boot/Dockerfile) - pnpm.onlyBuiltDependencies — 18 пакетов из лога фейла - Dockerfile: corepack enable вместо `npm install -g pnpm` (обе стадии) - publish-docs.yaml: pnpm/action-setup@v4 без version + cache: pnpm Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
135 lines
4.8 KiB
YAML
135 lines
4.8 KiB
YAML
name: Publish Docs
|
||
|
||
on:
|
||
push:
|
||
branches:
|
||
- main
|
||
- testnet
|
||
- dev
|
||
- reports
|
||
- marketplace2
|
||
|
||
jobs:
|
||
build-and-publish-docs:
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
- name: Checkout repository
|
||
uses: actions/checkout@v3
|
||
|
||
# Версия pnpm берётся из `packageManager` корневого package.json,
|
||
# синхронно с publish-packages.yaml и Dockerfile'ами.
|
||
- name: Set up pnpm
|
||
uses: pnpm/action-setup@v4
|
||
|
||
- name: Set up Node.js
|
||
uses: actions/setup-node@v4
|
||
with:
|
||
node-version: 22
|
||
cache: pnpm
|
||
|
||
- name: Set up Python
|
||
uses: actions/setup-python@v4
|
||
with:
|
||
python-version: '3.10'
|
||
|
||
- name: Install Python requirements
|
||
run: |
|
||
python -m venv venv
|
||
source venv/bin/activate
|
||
pip install mkdocs-material mkdocs-macros-plugin mkdocs-section-index pymdown-extensions
|
||
working-directory: ./components/docs
|
||
|
||
- name: Install Node.js dependencies
|
||
run: pnpm install
|
||
working-directory: ./components/docs
|
||
|
||
- name: Patch spectaql-config.yml for CI
|
||
run: |
|
||
sed -i.bak "0,/url:.*/s|url:.*|url: 'https://testnet.coopenomics.world/backend/v1/graphql'|" spectaql-config.yml
|
||
working-directory: ./components/controller
|
||
|
||
- name: Show patched spectaql-config.yml
|
||
run: cat spectaql-config.yml
|
||
working-directory: ./components/controller
|
||
|
||
- name: Build cooptypes
|
||
run: pnpm run build
|
||
working-directory: ./components/cooptypes
|
||
|
||
- name: Generate controller docs
|
||
run: pnpm run docs
|
||
working-directory: ./components/controller
|
||
|
||
- name: Copy controller docs
|
||
run: |
|
||
mkdir -p ./components/docs/docs/graphql
|
||
cp -r ./components/controller/docs/* ./components/docs/docs/graphql/
|
||
|
||
- name: Generate sdk docs
|
||
run: pnpm run docs
|
||
working-directory: ./components/sdk
|
||
|
||
- name: Copy sdk docs
|
||
run: |
|
||
mkdir -p ./components/docs/docs/sdk
|
||
cp -r ./components/sdk/docs/* ./components/docs/docs/sdk/
|
||
|
||
- name: Generate cooptypes docs
|
||
run: pnpm run docs
|
||
working-directory: ./components/cooptypes
|
||
|
||
- name: Copy cooptypes docs
|
||
run: |
|
||
mkdir -p ./components/docs/docs/cooptypes
|
||
cp -r ./components/cooptypes/docs/* ./components/docs/docs/cooptypes/
|
||
|
||
# ── standards-site → /standards/ на docs.цифровой-кооператив.рф ──
|
||
# Отдельный Vue-сайт с BPMN-графом кооперативных стандартов,
|
||
# публикуется как поддиректория на том же домене. Vite собирает
|
||
# с base='/standards/' (см. vite.config.ts), относительные пути
|
||
# внутри dist/ и hash-router работают корректно.
|
||
# dist кладём в docs/standards/ ДО mkdocs build — так же, как
|
||
# graphql/sdk/cooptypes; mkdocs сам включит его в итоговый site/.
|
||
- name: Build standards-site
|
||
run: pnpm run build
|
||
working-directory: ./components/contracts/standards-site
|
||
|
||
- name: Copy standards-site into docs/standards
|
||
run: |
|
||
mkdir -p ./components/docs/docs/standards
|
||
cp -r ./components/contracts/standards-site/dist/* ./components/docs/docs/standards/
|
||
|
||
- name: Build docs (mkdocs)
|
||
run: |
|
||
source venv/bin/activate
|
||
mkdocs build
|
||
working-directory: ./components/docs
|
||
|
||
- name: Remove specific large file before publishing
|
||
run: |
|
||
# Удаляем конкретный большой файл sdk/typedoc.json
|
||
rm -f ./components/docs/site/sdk/typedoc.json
|
||
# Проверяем, что файл удален
|
||
if [ -f "./components/docs/site/sdk/typedoc.json" ]; then
|
||
echo "ERROR: typedoc.json still exists!"
|
||
exit 1
|
||
else
|
||
echo "SUCCESS: typedoc.json removed successfully"
|
||
fi
|
||
|
||
- name: Publish to GitHub Pages
|
||
run: npx gh-pages --nojekyll -d site --repo https://x-access-token:${GITHUB_TOKEN}@github.com/coopenomics/mono.git
|
||
working-directory: ./components/docs
|
||
env:
|
||
GIT_AUTHOR_NAME: github-actions
|
||
GIT_AUTHOR_EMAIL: github-actions@github.com
|
||
GIT_COMMITTER_NAME: github-actions
|
||
GIT_COMMITTER_EMAIL: github-actions@github.com
|
||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||
|
||
- name: Trigger docs deployment webhook
|
||
if: ${{ success() }}
|
||
run: |
|
||
curl -X POST "${{ vars.DOCS_DEPLOY_WEBHOOK_URL }}" \
|
||
-H 'Content-Type: application/json' \
|
||
-d '{"ref":"${{ github.ref }}","sha":"${{ github.sha }}","branch":"${{ github.ref_name }}"}' |