|
|
@@ -6,7 +6,7 @@ on:
|
|
|
node-version:
|
|
|
required: true
|
|
|
type: string
|
|
|
- skip-cypress:
|
|
|
+ skip-e2e-test:
|
|
|
type: boolean
|
|
|
cypress-report-artifact-name-prefix:
|
|
|
type: string
|
|
|
@@ -53,9 +53,9 @@ jobs:
|
|
|
with:
|
|
|
path: |
|
|
|
**/node_modules
|
|
|
- key: node_modules-app-7.x-build-prod-${{ runner.OS }}-node${{ inputs.node-version }}-${{ hashFiles('**/yarn.lock') }}
|
|
|
+ key: node_modules-app-build-prod-${{ runner.OS }}-node${{ inputs.node-version }}-${{ hashFiles('**/yarn.lock') }}
|
|
|
restore-keys: |
|
|
|
- node_modules-app-7.x-build-prod-${{ runner.OS }}-node${{ inputs.node-version }}-
|
|
|
+ node_modules-app-build-prod-${{ runner.OS }}-node${{ inputs.node-version }}-
|
|
|
|
|
|
- name: Install dependencies
|
|
|
run: |
|
|
|
@@ -206,7 +206,7 @@ jobs:
|
|
|
run-cypress:
|
|
|
needs: [build-prod]
|
|
|
|
|
|
- if: ${{ !inputs.skip-cypress }}
|
|
|
+ if: ${{ !inputs.skip-e2e-test }}
|
|
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
|
|
@@ -256,9 +256,9 @@ jobs:
|
|
|
with:
|
|
|
path: |
|
|
|
**/node_modules
|
|
|
- key: node_modules-app-7.x-build-prod-${{ runner.OS }}-node${{ inputs.node-version }}-${{ hashFiles('**/yarn.lock') }}
|
|
|
+ key: node_modules-app-build-prod-${{ runner.OS }}-node${{ inputs.node-version }}-${{ hashFiles('**/yarn.lock') }}
|
|
|
restore-keys: |
|
|
|
- node_modules-app-7.x-build-prod-${{ runner.OS }}-node${{ inputs.node-version }}-
|
|
|
+ node_modules-app-build-prod-${{ runner.OS }}-node${{ inputs.node-version }}-
|
|
|
|
|
|
- name: Cache/Restore Cypress files
|
|
|
uses: actions/cache@v4
|
|
|
@@ -339,3 +339,124 @@ jobs:
|
|
|
channel: '#ci'
|
|
|
isCompactMode: true
|
|
|
url: ${{ secrets.SLACK_WEBHOOK_URL }}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ run-playwright:
|
|
|
+ needs: [build-prod]
|
|
|
+
|
|
|
+ if: ${{ !inputs.skip-e2e-test }}
|
|
|
+
|
|
|
+ runs-on: ubuntu-latest
|
|
|
+
|
|
|
+ # strategy:
|
|
|
+ # fail-fast: false
|
|
|
+ # matrix:
|
|
|
+ # # List string expressions that is comma separated ids of tests in "test/cypress/integration"
|
|
|
+ # spec-group: ['10', '20', '21', '22', '23', '30', '40', '50', '60']
|
|
|
+
|
|
|
+ services:
|
|
|
+ mongodb:
|
|
|
+ image: mongo:6.0
|
|
|
+ ports:
|
|
|
+ - 27017/tcp
|
|
|
+ elasticsearch:
|
|
|
+ image: docker.elastic.co/elasticsearch/elasticsearch:7.17.1
|
|
|
+ ports:
|
|
|
+ - 9200/tcp
|
|
|
+ env:
|
|
|
+ discovery.type: single-node
|
|
|
+
|
|
|
+ steps:
|
|
|
+ - uses: actions/checkout@v4
|
|
|
+
|
|
|
+ - uses: actions/setup-node@v4
|
|
|
+ with:
|
|
|
+ node-version: ${{ inputs.node-version }}
|
|
|
+ cache: 'yarn'
|
|
|
+ cache-dependency-path: '**/yarn.lock'
|
|
|
+
|
|
|
+ - name: Install turbo
|
|
|
+ run: |
|
|
|
+ yarn global add turbo
|
|
|
+
|
|
|
+ - name: Prune repositories
|
|
|
+ run: |
|
|
|
+ turbo prune --scope=@growi/app
|
|
|
+ rm -rf apps packages
|
|
|
+ mv out/* .
|
|
|
+
|
|
|
+ - name: Cache/Restore node_modules
|
|
|
+ id: cache-dependencies
|
|
|
+ uses: actions/cache@v4
|
|
|
+ with:
|
|
|
+ path: |
|
|
|
+ **/node_modules
|
|
|
+ key: node_modules-app-build-prod-${{ runner.OS }}-node${{ inputs.node-version }}-${{ hashFiles('**/yarn.lock') }}
|
|
|
+ restore-keys: |
|
|
|
+ node_modules-app-build-prod-${{ runner.OS }}-node${{ inputs.node-version }}-
|
|
|
+
|
|
|
+ - name: Cache/Restore Playwright files
|
|
|
+ uses: actions/cache@v4
|
|
|
+ id: playwright-cache
|
|
|
+ with:
|
|
|
+ path: |
|
|
|
+ ~/.cache/ms-playwright
|
|
|
+ key: deps-for-playwright-${{ runner.OS }}-node${{ inputs.node-version }}-${{ hashFiles('**/yarn.lock') }}
|
|
|
+ restore-keys: |
|
|
|
+ deps-for-playwright-${{ runner.OS }}-node${{ inputs.node-version }}-
|
|
|
+
|
|
|
+ - name: Install dependencies
|
|
|
+ run: |
|
|
|
+ yarn global add node-gyp
|
|
|
+ yarn --frozen-lockfile
|
|
|
+
|
|
|
+ - name: Install Playwright dependencies
|
|
|
+ if: steps.playwright-cache.outputs.cache-hit != 'true'
|
|
|
+ run: |
|
|
|
+ yarn playwright install
|
|
|
+ sudo yarn playwright install-deps
|
|
|
+
|
|
|
+ - name: Download production files artifact
|
|
|
+ uses: actions/download-artifact@v4
|
|
|
+ with:
|
|
|
+ name: Production Files (node${{ inputs.node-version }})
|
|
|
+
|
|
|
+ - name: Extract procution files artifact
|
|
|
+ run: |
|
|
|
+ tar -xf ${{ needs.build-prod.outputs.PROD_FILES }}
|
|
|
+
|
|
|
+ - name: Copy dotenv file for ci
|
|
|
+ working-directory: ./apps/app
|
|
|
+ run: |
|
|
|
+ cat config/ci/.env.local.for-ci >> .env.production.local
|
|
|
+
|
|
|
+ - name: Copy dotenv file for automatic installation
|
|
|
+ # if: ${{ matrix.spec-group != '10' }}
|
|
|
+ working-directory: ./apps/app
|
|
|
+ run: |
|
|
|
+ cat config/ci/.env.local.for-auto-install >> .env.production.local
|
|
|
+
|
|
|
+ # - name: Copy dotenv file for automatic installation with allowing guest mode
|
|
|
+ # if: ${{ matrix.spec-group == '21' }}
|
|
|
+ # working-directory: ./apps/app
|
|
|
+ # run: |
|
|
|
+ # cat config/ci/.env.local.for-auto-install-with-allowing-guest >> .env.production.local
|
|
|
+
|
|
|
+ - name: Playwright Run
|
|
|
+ working-directory: ./apps/app
|
|
|
+ run: |
|
|
|
+ playwright test
|
|
|
+ env:
|
|
|
+ MONGO_URI: mongodb://localhost:${{ job.services.mongodb.ports['27017'] }}/growi-test-playwright
|
|
|
+ ELASTICSEARCH_URI: http://localhost:${{ job.services.elasticsearch.ports['9200'] }}/growi
|
|
|
+
|
|
|
+ - name: Slack Notification
|
|
|
+ uses: weseek/ghaction-slack-notification@master
|
|
|
+ if: failure()
|
|
|
+ with:
|
|
|
+ type: ${{ job.status }}
|
|
|
+ job_name: '*Node CI for growi - run-playwright*'
|
|
|
+ channel: '#ci'
|
|
|
+ isCompactMode: true
|
|
|
+ url: ${{ secrets.SLACK_WEBHOOK_URL }}
|