|
|
@@ -7,10 +7,6 @@ on:
|
|
|
- rc/**
|
|
|
- chore/**
|
|
|
- support/prepare-v**
|
|
|
- pull_request:
|
|
|
- branches:
|
|
|
- - master
|
|
|
- types: [opened, reopened, synchronize]
|
|
|
|
|
|
jobs:
|
|
|
|
|
|
@@ -187,258 +183,3 @@ jobs:
|
|
|
channel: '#ci'
|
|
|
isCompactMode: true
|
|
|
url: ${{ secrets.SLACK_WEBHOOK_URL }}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- build-prod-node14:
|
|
|
- runs-on: ubuntu-latest
|
|
|
-
|
|
|
- strategy:
|
|
|
- matrix:
|
|
|
- node-version: [14.x]
|
|
|
-
|
|
|
- outputs:
|
|
|
- PROD_FILES: ${{ steps.archive-prod-files.outputs.file }}
|
|
|
-
|
|
|
- steps:
|
|
|
- - uses: actions/checkout@v2
|
|
|
-
|
|
|
- - uses: actions/setup-node@v2
|
|
|
- with:
|
|
|
- node-version: ${{ matrix.node-version }}
|
|
|
- cache: 'yarn'
|
|
|
- cache-dependency-path: '**/yarn.lock'
|
|
|
-
|
|
|
- - name: Cache/Restore node_modules
|
|
|
- id: cache-dependencies
|
|
|
- uses: actions/cache@v2
|
|
|
- with:
|
|
|
- path: |
|
|
|
- **/node_modules
|
|
|
- key: node_modules-${{ runner.OS }}-node${{ matrix.node-version }}-${{ hashFiles('**/yarn.lock') }}
|
|
|
- restore-keys: |
|
|
|
- node_modules-${{ runner.OS }}-node${{ matrix.node-version }}-
|
|
|
-
|
|
|
- - name: lerna bootstrap
|
|
|
- run: |
|
|
|
- npx lerna bootstrap -- --frozen-lockfile
|
|
|
-
|
|
|
- - name: Remove unnecessary packages
|
|
|
- run: |
|
|
|
- rm -rf packages/slackbot-proxy
|
|
|
-
|
|
|
- - name: Build
|
|
|
- run: |
|
|
|
- yarn lerna run build
|
|
|
- env:
|
|
|
- ANALYZE_BUNDLE_SIZE: 1
|
|
|
-
|
|
|
- - name: Archive production files
|
|
|
- id: archive-prod-files
|
|
|
- run: |
|
|
|
- tar -cf production.tar packages/**/dist packages/app/public
|
|
|
- echo ::set-output name=file::production.tar
|
|
|
-
|
|
|
- - name: Upload production files as artifact
|
|
|
- uses: actions/upload-artifact@v2
|
|
|
- with:
|
|
|
- name: Production Files
|
|
|
- path: ${{ steps.archive-prod-files.outputs.file }}
|
|
|
-
|
|
|
- - name: Upload report as artifact
|
|
|
- uses: actions/upload-artifact@v2
|
|
|
- with:
|
|
|
- name: Bundle Analyzing Report
|
|
|
- path: packages/app/report/bundle-analyzer.html
|
|
|
-
|
|
|
- - name: Slack Notification
|
|
|
- uses: weseek/ghaction-slack-notification@master
|
|
|
- if: failure()
|
|
|
- with:
|
|
|
- type: ${{ job.status }}
|
|
|
- job_name: '*Node CI for growi - build-prod (${{ matrix.node-version }})*'
|
|
|
- channel: '#ci'
|
|
|
- isCompactMode: true
|
|
|
- url: ${{ secrets.SLACK_WEBHOOK_URL }}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- launch-prod-node14:
|
|
|
- needs: [build-prod-node14]
|
|
|
- runs-on: ubuntu-latest
|
|
|
-
|
|
|
- strategy:
|
|
|
- matrix:
|
|
|
- node-version: [14.x]
|
|
|
-
|
|
|
- services:
|
|
|
- mongodb:
|
|
|
- image: mongo:4.4
|
|
|
- ports:
|
|
|
- - 27017/tcp
|
|
|
- mongodb36:
|
|
|
- image: mongo:3.6
|
|
|
- ports:
|
|
|
- - 27017/tcp
|
|
|
-
|
|
|
- steps:
|
|
|
- - uses: actions/checkout@v2
|
|
|
-
|
|
|
- - uses: actions/setup-node@v2
|
|
|
- with:
|
|
|
- node-version: ${{ matrix.node-version }}
|
|
|
- cache: 'yarn'
|
|
|
- cache-dependency-path: '**/yarn.lock'
|
|
|
-
|
|
|
- - name: Get Date
|
|
|
- id: get-date
|
|
|
- run: |
|
|
|
- echo "::set-output name=dateYmdHM::$(/bin/date -u "+%Y%m%d%H%M")"
|
|
|
- echo "::set-output name=dateYm::$(/bin/date -u "+%Y%m")"
|
|
|
-
|
|
|
- - name: Cache/Restore node_modules (not reused)
|
|
|
- id: cache-dependencies
|
|
|
- uses: actions/cache@v2
|
|
|
- with:
|
|
|
- path: |
|
|
|
- **/node_modules
|
|
|
- key: node_modules-build-prod-${{ runner.OS }}-node${{ matrix.node-version }}-${{ steps.get-date.outputs.dateYmdHM }}
|
|
|
- restore-keys: |
|
|
|
- node_modules-${{ runner.OS }}-node${{ matrix.node-version }}-${{ hashFiles('**/yarn.lock') }}
|
|
|
- node_modules-${{ runner.OS }}-node${{ matrix.node-version }}-
|
|
|
- node_modules-build-prod-${{ runner.OS }}-node${{ matrix.node-version }}-${{ steps.get-date.outputs.dateYm }}
|
|
|
- node_modules-build-prod-${{ runner.OS }}-node${{ matrix.node-version }}-
|
|
|
-
|
|
|
- - name: Remove unnecessary packages
|
|
|
- run: |
|
|
|
- rm -rf packages/slackbot-proxy
|
|
|
-
|
|
|
- - name: lerna bootstrap --production
|
|
|
- run: |
|
|
|
- npx lerna bootstrap -- --production
|
|
|
-
|
|
|
- - name: Download production files artifact
|
|
|
- uses: actions/download-artifact@v2
|
|
|
- with:
|
|
|
- name: Production Files
|
|
|
-
|
|
|
- - name: Extract procution files artifact
|
|
|
- run: |
|
|
|
- tar -xf ${{ needs.build-prod-node14.outputs.PROD_FILES }}
|
|
|
-
|
|
|
- - name: yarn server:ci
|
|
|
- working-directory: ./packages/app
|
|
|
- run: |
|
|
|
- cp config/ci/.env.local.for-ci .env.production.local
|
|
|
- yarn server:ci
|
|
|
- env:
|
|
|
- MONGO_URI: mongodb://localhost:${{ job.services.mongodb.ports['27017'] }}/growi
|
|
|
- - name: yarn server:ci with MongoDB 3.6
|
|
|
- working-directory: ./packages/app
|
|
|
- run: |
|
|
|
- cp config/ci/.env.local.for-ci .env.production.local
|
|
|
- yarn server:ci
|
|
|
- env:
|
|
|
- MONGO_URI: mongodb://localhost:${{ job.services.mongodb36.ports['27017'] }}/growi
|
|
|
-
|
|
|
- - name: Slack Notification
|
|
|
- uses: weseek/ghaction-slack-notification@master
|
|
|
- if: failure()
|
|
|
- with:
|
|
|
- type: ${{ job.status }}
|
|
|
- job_name: '*Node CI for growi - build-prod (${{ matrix.node-version }})*'
|
|
|
- channel: '#ci'
|
|
|
- isCompactMode: true
|
|
|
- url: ${{ secrets.SLACK_WEBHOOK_URL }}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- run-cypress-node14:
|
|
|
- needs: [build-prod-node14]
|
|
|
-
|
|
|
- if: ${{ github.base_ref != null || github.ref_name == 'master' }}
|
|
|
-
|
|
|
- runs-on: ubuntu-latest
|
|
|
- container: cypress/base:14.18.1
|
|
|
-
|
|
|
- strategy:
|
|
|
- fail-fast: false
|
|
|
- matrix:
|
|
|
- node-version: [14.x]
|
|
|
- # List string expressions that is comma separated ids of tests in "test/cypress/integration"
|
|
|
- spec-group: ['1', '2']
|
|
|
-
|
|
|
- services:
|
|
|
- mongodb:
|
|
|
- image: mongo:4.4
|
|
|
- ports:
|
|
|
- - 27017/tcp
|
|
|
-
|
|
|
- steps:
|
|
|
- - uses: actions/checkout@v2
|
|
|
-
|
|
|
- - uses: actions/setup-node@v2
|
|
|
- with:
|
|
|
- node-version: ${{ matrix.node-version }}
|
|
|
- cache: 'yarn'
|
|
|
- cache-dependency-path: '**/yarn.lock'
|
|
|
-
|
|
|
- - name: Cache/Restore node_modules
|
|
|
- id: cache-dependencies
|
|
|
- uses: actions/cache@v2
|
|
|
- with:
|
|
|
- path: |
|
|
|
- **/node_modules
|
|
|
- key: node_modules-${{ runner.OS }}-node${{ matrix.node-version }}-${{ hashFiles('**/yarn.lock') }}
|
|
|
- restore-keys: |
|
|
|
- node_modules-${{ runner.OS }}-node${{ matrix.node-version }}-
|
|
|
-
|
|
|
- - name: Download production files artifact
|
|
|
- uses: actions/download-artifact@v2
|
|
|
- with:
|
|
|
- name: Production Files
|
|
|
-
|
|
|
- - name: Extract procution files artifact
|
|
|
- run: |
|
|
|
- tar -xf ${{ needs.build-prod-node14.outputs.PROD_FILES }}
|
|
|
-
|
|
|
- # workaround by https://github.com/cypress-io/github-action/issues/407
|
|
|
- - name: Setup yarn cache settings
|
|
|
- run: yarn config set cache-folder ~/.cache/yarn
|
|
|
-
|
|
|
- - name: Determine spec expression
|
|
|
- id: determine-spec-exp
|
|
|
- run: |
|
|
|
- SPEC=`node bin/github-actions/generate-cypress-spec-arg.js --prefix="test/cypress/integration/" --suffix="-*/**" "${{ matrix.spec-group }}"`
|
|
|
- echo "::set-output name=value::$SPEC"
|
|
|
-
|
|
|
- - name: Cypress Run
|
|
|
- uses: cypress-io/github-action@v2
|
|
|
- with:
|
|
|
- working-directory: ./packages/app
|
|
|
- install-command: ${{ (steps.cache-dependencies.outputs.cache-hit == 'true' && 'yarn') || 'npx' }} lerna bootstrap
|
|
|
- spec: '${{ steps.determine-spec-exp.outputs.value }}'
|
|
|
- build: |
|
|
|
- cp config/ci/.env.local.for-ci .env.production.local
|
|
|
- start: yarn server
|
|
|
- wait-on: 'http://localhost:3000'
|
|
|
- env:
|
|
|
- MONGO_URI: mongodb://mongodb:27017/growi-vrt
|
|
|
-
|
|
|
- - name: Upload results
|
|
|
- uses: actions/upload-artifact@v2
|
|
|
- with:
|
|
|
- name: Cypress Report ${{ matrix.spec-group }}
|
|
|
- path: |
|
|
|
- packages/app/test/cypress/screenshots
|
|
|
- packages/app/test/cypress/videos
|
|
|
-
|
|
|
- - name: Slack Notification
|
|
|
- uses: weseek/ghaction-slack-notification@master
|
|
|
- if: failure()
|
|
|
- with:
|
|
|
- type: ${{ job.status }}
|
|
|
- job_name: '*Node CI for growi - run-cypress (${{ matrix.node-version }})*'
|
|
|
- channel: '#ci'
|
|
|
- isCompactMode: true
|
|
|
- url: ${{ secrets.SLACK_WEBHOOK_URL }}
|