Skip to content

Merge branch 'master' into imprv/148445-upgrade-remark-growi-directive #12884

Merge branch 'master' into imprv/148445-upgrade-remark-growi-directive

Merge branch 'master' into imprv/148445-upgrade-remark-growi-directive #12884

name: Node CI for slackbot-proxy
on:
push:
branches-ignore:
- release/**
- rc/**
- support/prepare-v**
paths:
- .github/workflows/ci-slackbot-proxy.yml
- .eslint*
- tsconfig.base.json
- turbo.json
- yarn.lock
- package.json
- apps/slackbot-proxy/**
- '!apps/slackbot-proxy/docker/**'
- packages/slack/**
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
ci-slackbot-proxy-lint:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [20.x]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'yarn'
cache-dependency-path: '**/yarn.lock'
- name: Cache/Restore node_modules
uses: actions/cache@v4
with:
path: |
**/node_modules
key: node_modules-${{ runner.OS }}-node${{ matrix.node-version }}-${{ hashFiles('**/yarn.lock') }}-${{ hashFiles('apps/slackbot-proxy/package.json') }}
restore-keys: |
node_modules-${{ runner.OS }}-node${{ matrix.node-version }}-${{ hashFiles('**/yarn.lock') }}-
node_modules-${{ runner.OS }}-node${{ matrix.node-version }}-
- name: Restore dist
uses: actions/cache/restore@v4
with:
path: |
**/.turbo
**/dist
key: dist-slackbot-proxy-ci-${{ runner.OS }}-node${{ matrix.node-version }}-${{ hashFiles('node_modules/.cache/turbo/*-meta.json') }}
restore-keys: |
dist-slackbot-proxy-ci-${{ runner.OS }}-node${{ matrix.node-version }}-
- name: Install dependencies
run: |
yarn global add turbo
yarn global add node-gyp
yarn --frozen-lockfile
- name: Lint
run: |
turbo run lint --filter=@growi/slackbot-proxy
- name: Slack Notification
uses: weseek/ghaction-slack-notification@master
if: failure()
with:
type: ${{ job.status }}
job_name: '*Node CI for growi-bot-proxy - test (${{ 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-slackbot-proxy-ci-${{ runner.OS }}-node${{ matrix.node-version }}-${{ hashFiles('node_modules/.cache/turbo/*-meta.json') }}
ci-slackbot-proxy-launch-dev:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [20.x]
services:
mysql:
image: mysql:8.0
ports:
- 3306
options: --health-cmd "mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 3
env:
MYSQL_ALLOW_EMPTY_PASSWORD: yes
MYSQL_DATABASE: growi-slackbot-proxy
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'yarn'
cache-dependency-path: '**/yarn.lock'
- name: Cache/Restore node_modules
uses: actions/cache@v4
with:
path: |
**/node_modules
key: node_modules-${{ runner.OS }}-node${{ matrix.node-version }}-${{ hashFiles('**/yarn.lock') }}-${{ hashFiles('apps/slackbot-proxy/package.json') }}
restore-keys: |
node_modules-${{ runner.OS }}-node${{ matrix.node-version }}-${{ hashFiles('**/yarn.lock') }}-
node_modules-${{ runner.OS }}-node${{ matrix.node-version }}-
- name: Restore dist
uses: actions/cache/restore@v4
with:
path: |
**/.turbo
**/dist
key: dist-slackbot-proxy-ci-${{ runner.OS }}-node${{ matrix.node-version }}-${{ hashFiles('node_modules/.cache/turbo/*-meta.json') }}
restore-keys: |
dist-slackbot-proxy-ci-${{ runner.OS }}-node${{ matrix.node-version }}-
- name: Install dependencies
run: |
yarn global add turbo
yarn global add node-gyp
yarn --frozen-lockfile
- name: yarn dev:ci
working-directory: ./apps/slackbot-proxy
run: |
cp config/ci/.env.local.for-ci .env.development.local
turbo run dev:ci --env-mode=loose
env:
SERVER_URI: http://localhost:8080
TYPEORM_CONNECTION: mysql
TYPEORM_HOST: localhost
TYPEORM_PORT: ${{ job.services.mysql.ports[3306] }}
TYPEORM_DATABASE: growi-slackbot-proxy
TYPEORM_USERNAME: root
TYPEORM_PASSWORD:
- name: Slack Notification
uses: weseek/ghaction-slack-notification@master
if: failure()
with:
type: ${{ job.status }}
job_name: '*Node CI for growi-bot-proxy - launch-dev (${{ 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-slackbot-proxy-ci-${{ runner.OS }}-node${{ matrix.node-version }}-${{ hashFiles('node_modules/.cache/turbo/*-meta.json') }}
ci-slackbot-proxy-launch-prod:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [20.x]
services:
mysql:
image: mysql:8.0
ports:
- 3306
options: --health-cmd "mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 3
env:
MYSQL_ALLOW_EMPTY_PASSWORD: yes
MYSQL_DATABASE: growi-slackbot-proxy
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'yarn'
cache-dependency-path: '**/yarn.lock'
- name: Install turbo
run: |
yarn global add turbo
- name: Prune repositories
run: |
turbo prune @growi/slackbot-proxy
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-slackbot-prxy-build-prod-${{ runner.OS }}-node${{ inputs.node-version }}-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
node_modules-slackbot-proxy-build-prod-${{ runner.OS }}-node${{ inputs.node-version }}-
- name: Install dependencies
run: |
yarn global add node-gyp
yarn --frozen-lockfile
- name: Restore dist
uses: actions/cache/restore@v4
with:
path: |
**/.turbo
**/dist
key: dist-slackbot-proxy-prod-${{ runner.OS }}-node${{ matrix.node-version }}-${{ hashFiles('node_modules/.cache/turbo/*-meta.json') }}
restore-keys: |
dist-slackbot-proxy-prod-${{ runner.OS }}-node${{ matrix.node-version }}-
- name: Build
working-directory: ./apps/slackbot-proxy
run: |
turbo run build
- name: Install dependencies for production
run: |
yarn --production
- name: yarn start:prod:ci
working-directory: ./apps/slackbot-proxy
run: |
cp config/ci/.env.local.for-ci .env.production.local
yarn start:prod:ci
env:
SERVER_URI: http://localhost:8080
TYPEORM_CONNECTION: mysql
TYPEORM_HOST: localhost
TYPEORM_PORT: ${{ job.services.mysql.ports[3306] }}
TYPEORM_DATABASE: growi-slackbot-proxy
TYPEORM_USERNAME: root
TYPEORM_PASSWORD:
- name: Slack Notification
uses: weseek/ghaction-slack-notification@master
if: failure()
with:
type: ${{ job.status }}
job_name: '*Node CI for growi-bot-proxy - 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-slackbot-proxy-prod-${{ runner.OS }}-node${{ matrix.node-version }}-${{ hashFiles('node_modules/.cache/turbo/*-meta.json') }}