Skip to content

Merge pull request #9489 from weseek/imprv/159173-159174-independent-… #13440

Merge pull request #9489 from weseek/imprv/159173-159174-independent-…

Merge pull request #9489 from weseek/imprv/159173-159174-independent-… #13440

name: Node CI for slackbot-proxy
on:
push:
branches-ignore:
- release/**
- rc/**
- support/prepare-v**
paths:
- .github/mergify.yml
- .github/workflows/ci-slackbot-proxy.yml
- .eslint*
- tsconfig.base.json
- turbo.json
- pnpm-lock.yaml
- 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: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'pnpm'
- 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: |
pnpm add turbo --global
pnpm install --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: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'pnpm'
- 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: |
pnpm add turbo --global
pnpm install --frozen-lockfile
- name: turbo run 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:
if: startsWith(github.head_ref, 'mergify/merge-queue/')
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: 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-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: Assembling all dependencies
run: |
rm -rf out
pnpm deploy out --prod --filter @growi/slackbot-proxy
rm -rf apps/slackbot-proxy/node_modules && mv out/node_modules apps/slackbot-proxy/node_modules
- name: pnpm run start:prod:ci
working-directory: ./apps/slackbot-proxy
run: |
cp config/ci/.env.local.for-ci .env.production.local
pnpm run 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') }}