mirror of
https://github.com/discourse/discourse.git
synced 2024-12-14 15:13:44 +08:00
43e52a7dc1
Dependency on gifsicle, allow_animated_avatars and allow_animated_thumbnails site settings were all removed. Animated GIF images are still allowed, but the generated optimized images are no longer animated for those (which were used for avatars and thumbnails). The added 'animated' is populated by extracting information using FastImage. This field was used to selectively reoptimize old animations. This process happens in the background.
223 lines
7.0 KiB
YAML
223 lines
7.0 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
pull_request:
|
|
branches-ignore:
|
|
- "tests-passed"
|
|
|
|
jobs:
|
|
build:
|
|
name: "${{ matrix.target }}-${{ matrix.build_types }}"
|
|
runs-on: ${{ matrix.os }}
|
|
timeout-minutes: 60
|
|
|
|
env:
|
|
DISCOURSE_HOSTNAME: www.example.com
|
|
RUBY_GLOBAL_METHOD_CACHE_SIZE: 131072
|
|
BUILD_TYPE: ${{ matrix.build_types }}
|
|
TARGET: ${{ matrix.target }}
|
|
RAILS_ENV: test
|
|
PGHOST: localhost
|
|
PGUSER: discourse
|
|
PGPASSWORD: discourse
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
|
|
matrix:
|
|
build_types: ["BACKEND", "FRONTEND", "LINT"]
|
|
target: ["PLUGINS", "CORE"]
|
|
os: [ubuntu-latest]
|
|
ruby: ["2.6"]
|
|
postgres: ["12"]
|
|
redis: ["4.x"]
|
|
|
|
services:
|
|
postgres:
|
|
image: postgres:${{ matrix.postgres }}
|
|
ports:
|
|
- 5432:5432
|
|
env:
|
|
POSTGRES_USER: discourse
|
|
POSTGRES_PASSWORD: discourse
|
|
POSTGRES_DB: discourse_test
|
|
options: >-
|
|
--mount type=tmpfs,destination=/var/lib/postgresql/data
|
|
--health-cmd pg_isready
|
|
--health-interval 10s
|
|
--health-timeout 5s
|
|
--health-retries 5
|
|
|
|
steps:
|
|
- uses: actions/checkout@master
|
|
with:
|
|
fetch-depth: 1
|
|
|
|
- name: Setup Git
|
|
run: |
|
|
git config --global user.email "ci@ci.invalid"
|
|
git config --global user.name "Discourse CI"
|
|
|
|
- name: Setup packages
|
|
if: env.BUILD_TYPE != 'LINT'
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get -yqq install postgresql-client libpq-dev jpegoptim optipng jhead
|
|
wget -qO- https://raw.githubusercontent.com/discourse/discourse_docker/master/image/base/install-pngquant | sudo sh
|
|
|
|
- name: Update imagemagick
|
|
if: env.BUILD_TYPE == 'BACKEND'
|
|
run: |
|
|
wget https://raw.githubusercontent.com/discourse/discourse_docker/master/image/base/install-imagemagick
|
|
chmod +x install-imagemagick
|
|
sudo ./install-imagemagick
|
|
|
|
- name: Setup redis
|
|
uses: shogo82148/actions-setup-redis@v1
|
|
if: env.BUILD_TYPE != 'LINT'
|
|
with:
|
|
redis-version: ${{ matrix.redis }}
|
|
|
|
- name: Setup ruby
|
|
uses: actions/setup-ruby@v1
|
|
with:
|
|
ruby-version: ${{ matrix.ruby }}
|
|
|
|
- name: Setup bundler
|
|
run: |
|
|
gem install bundler -v 2.1.4 --no-doc
|
|
bundle config deployment 'true'
|
|
bundle config without 'development'
|
|
bundle config path vendor/bundle
|
|
|
|
- name: Bundler cache
|
|
uses: actions/cache@v2
|
|
id: bundler-cache
|
|
with:
|
|
path: vendor/bundle
|
|
key: ${{ runner.os }}-gem-${{ hashFiles('**/Gemfile.lock') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-gem-
|
|
|
|
- name: Setup gems
|
|
run: bundle install --jobs 4
|
|
|
|
- name: Get yarn cache directory
|
|
id: yarn-cache-dir
|
|
run: echo "::set-output name=dir::$(yarn cache dir)"
|
|
|
|
- name: Yarn cache
|
|
uses: actions/cache@v2
|
|
id: yarn-cache
|
|
with:
|
|
path: ${{ steps.yarn-cache-dir.outputs.dir }}
|
|
key: ${{ runner.os }}-${{ matrix.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-${{ matrix.os }}-yarn-
|
|
|
|
- name: Yarn install
|
|
run: yarn install --dev
|
|
|
|
- name: "Checkout official plugins"
|
|
if: env.TARGET == 'PLUGINS'
|
|
run: bin/rake plugin:install_all_official
|
|
|
|
- name: Create database
|
|
if: env.BUILD_TYPE != 'LINT'
|
|
run: |
|
|
bin/rake db:create
|
|
bin/rake db:migrate
|
|
|
|
- name: Create parallel databases
|
|
if: env.BUILD_TYPE == 'BACKEND' && env.TARGET == 'CORE'
|
|
run: |
|
|
bin/rake parallel:create
|
|
bin/rake parallel:migrate
|
|
|
|
- name: Rubocop (core and core plugins)
|
|
if: env.BUILD_TYPE == 'LINT' && env.TARGET == 'CORE'
|
|
run: bundle exec rubocop .
|
|
|
|
- name: Rubocop (all plugins)
|
|
if: env.BUILD_TYPE == 'LINT' && env.TARGET == 'PLUGINS'
|
|
run: bundle exec rubocop plugins
|
|
|
|
- name: ESLint (core)
|
|
if: env.BUILD_TYPE == 'LINT' && env.TARGET == 'CORE'
|
|
run: yarn eslint --ext .js,.js.es6 --no-error-on-unmatched-pattern app/assets/javascripts
|
|
|
|
- name: ESLint (core plugins)
|
|
if: env.BUILD_TYPE == 'LINT' && env.TARGET == 'CORE'
|
|
run: yarn eslint --ext .js,.js.es6 --no-error-on-unmatched-pattern plugins/**/{test,assets}/javascripts
|
|
|
|
- name: ESLint (all plugins)
|
|
if: env.BUILD_TYPE == 'LINT' && env.TARGET == 'PLUGINS'
|
|
run: yarn eslint --ext .js,.js.es6 --no-error-on-unmatched-pattern plugins/**/{test,assets}/javascripts
|
|
|
|
- name: Prettier (core and core plugins)
|
|
if: env.BUILD_TYPE == 'LINT' && env.TARGET == 'CORE'
|
|
run: |
|
|
yarn prettier -v
|
|
yarn prettier --list-different \
|
|
"app/assets/stylesheets/**/*.scss" \
|
|
"app/assets/javascripts/**/*.{js,es6}" \
|
|
"plugins/**/assets/stylesheets/**/*.scss" \
|
|
"plugins/**/assets/javascripts/**/*.{js,es6}"
|
|
|
|
- name: Prettier (all plugins)
|
|
if: env.BUILD_TYPE == 'LINT' && env.TARGET == 'PLUGINS'
|
|
run: |
|
|
yarn prettier -v
|
|
yarn prettier --list-different \
|
|
"plugins/**/assets/stylesheets/**/*.scss" \
|
|
"plugins/**/assets/javascripts/**/*.{js,es6}"
|
|
|
|
- name: Ember template lint (core and core plugins)
|
|
if: env.BUILD_TYPE == 'LINT' && env.TARGET == 'CORE'
|
|
run: |
|
|
yarn ember-template-lint \
|
|
app/assets/javascripts \
|
|
plugins/**/assets/javascripts
|
|
|
|
- name: Ember template lint (all plugins)
|
|
if: env.BUILD_TYPE == 'LINT' && env.TARGET == 'PLUGINS'
|
|
run: |
|
|
yarn ember-template-lint \
|
|
plugins/**/assets/javascripts
|
|
|
|
- name: Core English locale
|
|
if: env.BUILD_TYPE == 'LINT' && env.TARGET == 'CORE'
|
|
run: bundle exec ruby script/i18n_lint.rb "config/**/locales/{client,server}.en.yml"
|
|
|
|
- name: Plugin English locale
|
|
if: env.BUILD_TYPE == 'LINT' && env.TARGET == 'PLUGINS'
|
|
run: bundle exec ruby script/i18n_lint.rb "plugins/**/locales/{client,server}.en.yml"
|
|
|
|
- name: Core RSpec
|
|
if: env.BUILD_TYPE == 'BACKEND' && env.TARGET == 'CORE'
|
|
run: |
|
|
bin/turbo_rspec
|
|
bin/rake plugin:spec
|
|
|
|
- name: Plugin RSpec
|
|
if: env.BUILD_TYPE == 'BACKEND' && env.TARGET == 'PLUGINS'
|
|
run: bin/rake plugin:spec
|
|
|
|
- name: Core QUnit
|
|
if: env.BUILD_TYPE == 'FRONTEND' && env.TARGET == 'CORE'
|
|
run: bundle exec rake qunit:test['1200000']
|
|
timeout-minutes: 30
|
|
|
|
- name: Wizard QUnit
|
|
if: env.BUILD_TYPE == 'FRONTEND' && env.TARGET == 'CORE'
|
|
run: bundle exec rake qunit:test['1200000','/wizard/qunit']
|
|
timeout-minutes: 30
|
|
|
|
- name: Plugin QUnit # Tests core plugins in TARGET=CORE, and all plugins in TARGET=PLUGINS
|
|
if: env.BUILD_TYPE == 'FRONTEND'
|
|
run: bundle exec rake plugin:qunit['*','1200000']
|
|
timeout-minutes: 30
|