Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Page bulk export (pdf export included) #9678

Draft
wants to merge 16 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
// README at: https://github.com/devcontainers/templates/tree/main/src/ubuntu
{
"name": "GROWI-Dev",
"dockerComposeFile": "compose.yml",
"service": "node",
"dockerComposeFile": "../compose.yml",
"service": "app",
"workspaceFolder": "/workspace/growi",

"features": {
Expand All @@ -16,7 +16,7 @@
// "forwardPorts": [],

// Use 'postCreateCommand' to run commands after the container is created.
"postCreateCommand": "/bin/bash ./.devcontainer/postCreateCommand.sh",
"postCreateCommand": "/bin/bash ./.devcontainer/app/postCreateCommand.sh",

// Configure tool-specific properties.
"customizations": {
Expand All @@ -37,7 +37,10 @@
"vitest.explorer",
"ms-playwright.playwright"
],
}
"settings": {
"terminal.integrated.defaultProfile.linux": "bash"
}
},
},

// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@ sudo apt-get install -y --no-install-recommends \
iputils-ping net-tools dnsutils
sudo apt-get clean -y

# Set permissions for shared directory for bulk export
mkdir -p /tmp/page-bulk-export
sudo chown -R vscode:vscode /tmp/page-bulk-export
sudo chmod 700 /tmp/page-bulk-export

# Setup pnpm
SHELL=bash pnpm setup
eval "$(cat /home/vscode/.bashrc)"
Expand Down
14 changes: 13 additions & 1 deletion .devcontainer/compose.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
services:
node:
app:
image: mcr.microsoft.com/devcontainers/base:ubuntu
volumes:
- ..:/workspace/growi:delegated
Expand All @@ -8,6 +8,7 @@ services:
- buildcache_app:/workspace/growi/apps/app/.next
- ../../growi-docker-compose:/workspace/growi-docker-compose:delegated
- ../../share:/workspace/share:delegated
- page_bulk_export_tmp:/tmp/page-bulk-export
tty: true
networks:
- default
Expand Down Expand Up @@ -44,10 +45,21 @@ services:
- /usr/share/elasticsearch/data
- ../../growi-docker-compose/elasticsearch/v8/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml

pdf-converter:
# enabling devcontainer 'features' was not working for secondary devcontainer (https://github.com/devcontainers/features/issues/1175)
image: mcr.microsoft.com/vscode/devcontainers/javascript-node:1-20
volumes:
- ..:/workspace/growi:delegated
- pnpm-store:/workspace/growi/.pnpm-store
- node_modules:/workspace/growi/node_modules
- page_bulk_export_tmp:/tmp/page-bulk-export
tty: true

volumes:
pnpm-store:
node_modules:
buildcache_app:
page_bulk_export_tmp:

networks:
default:
Expand Down
29 changes: 29 additions & 0 deletions .devcontainer/pdf-converter/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"name": "GROWI-PDF-Converter",
"dockerComposeFile": "../compose.yml",
"service": "pdf-converter",
"workspaceFolder": "/workspace/growi",

// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],

// Use 'postCreateCommand' to run commands after the container is created.
"postCreateCommand": "/bin/bash ./.devcontainer/pdf-converter/postCreateCommand.sh",

// Configure tool-specific properties.
"customizations": {
"vscode": {
"extensions": [
"dbaeumer.vscode-eslint",
"mhutchie.git-graph",
"eamodio.gitlens"
],
"settings": {
"terminal.integrated.defaultProfile.linux": "bash"
}
}
}

// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
// "remoteUser": "root"
}
22 changes: 22 additions & 0 deletions .devcontainer/pdf-converter/postCreateCommand.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Instal additional packages
sudo apt update
sudo apt-get install -y --no-install-recommends \
chromium fonts-lato fonts-ipafont-gothic fonts-noto-cjk
sudo apt-get clean -y

# Set permissions for shared directory for bulk export
mkdir -p /tmp/page-bulk-export
sudo chown -R node:node /tmp/page-bulk-export
sudo chmod 700 /tmp/page-bulk-export

# Setup pnpm
SHELL=bash pnpm setup
eval "$(cat /home/node/.bashrc)"
# Update pnpm
pnpm i -g pnpm

# Install turbo
pnpm install turbo --global

# Install dependencies
turbo run bootstrap
168 changes: 168 additions & 0 deletions .github/workflows/ci-pdf-converter.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
name: Node CI for pdf-converter

on:
push:
branches-ignore:
- release/**
- rc/**
- support/prepare-v**
paths:
- .github/mergify.yml
- .github/workflows/ci-pdf-converter.yml
- .eslint*
- tsconfig.base.json
- turbo.json
- pnpm-lock.yaml
- package.json
- apps/pdf-converter/**
- '!apps/pdf-converter/docker/**'

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true


jobs:

ci-pdf-converter-lint:
runs-on: ubuntu-latest

strategy:
matrix:
node-version: [20.x]

steps:
- uses: actions/checkout@v4

- uses: pnpm/action-setup@v4

- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'pnpm'

- name: Install dependencies
run: |
pnpm add turbo --global
pnpm install --frozen-lockfile

- name: Lint
run: |
turbo run lint --filter=@growi/pdf-converter

- name: Slack Notification
uses: weseek/ghaction-slack-notification@master
if: failure()
with:
type: ${{ job.status }}
job_name: '*Node CI for growi-pdf-converter - test (${{ matrix.node-version }})*'
channel: '#ci'
isCompactMode: true
url: ${{ secrets.SLACK_WEBHOOK_URL }}

ci-pdf-converter-launch-dev:
runs-on: ubuntu-latest

strategy:
matrix:
node-version: [20.x]

steps:
- uses: actions/checkout@v4

- uses: pnpm/action-setup@v4

- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'pnpm'

- name: Install dependencies
run: |
pnpm add turbo --global
pnpm install --frozen-lockfile

- name: turbo run dev:pdf-converter:ci
working-directory: ./apps/pdf-converter
run: turbo run dev:pdf-converter:ci

- name: Slack Notification
uses: weseek/ghaction-slack-notification@master
if: failure()
with:
type: ${{ job.status }}
job_name: '*Node CI for growi-pdf-converter - launch-dev (${{ matrix.node-version }})*'
channel: '#ci'
isCompactMode: true
url: ${{ secrets.SLACK_WEBHOOK_URL }}

ci-pdf-converter-launch-prod:

if: startsWith(github.head_ref, 'mergify/merge-queue/')

runs-on: ubuntu-latest

strategy:
matrix:
node-version: [20.x]

steps:
- uses: actions/checkout@v4

- uses: pnpm/action-setup@v4

- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'pnpm'

- name: Install turbo
run: |
pnpm add turbo --global

- name: Install dependencies
run: |
pnpm install --frozen-lockfile

- name: Restore dist
uses: actions/cache/restore@v4
with:
path: |
**/.turbo
**/dist
key: dist-pdf-converter-prod-${{ runner.OS }}-node${{ matrix.node-version }}-${{ github.sha }}
restore-keys: |
dist-pdf-converter-prod-${{ runner.OS }}-node${{ matrix.node-version }}-

- name: Build
working-directory: ./apps/pdf-converter
run: |
turbo run build

- name: Assembling all dependencies
run: |
rm -rf out
pnpm deploy out --prod --filter @growi/pdf-converter
rm -rf apps/pdf-converter/node_modules && mv out/node_modules apps/pdf-converter/node_modules

- name: pnpm run start:prod:ci
working-directory: ./apps/pdf-converter
run: pnpm run start:prod:ci

- name: Slack Notification
uses: weseek/ghaction-slack-notification@master
if: failure()
with:
type: ${{ job.status }}
job_name: '*Node CI for growi-pdf-converter - launch-prod (${{ matrix.node-version }})*'
channel: '#ci'
isCompactMode: true
url: ${{ secrets.SLACK_WEBHOOK_URL }}

- name: Cache dist
uses: actions/cache/save@v4
with:
path: |
**/.turbo
**/dist
key: dist-pdf-converter-prod-${{ runner.OS }}-node${{ matrix.node-version }}-${{ github.sha }}
Loading
Loading