DEV: Add testing workflow
This commit is contained in:
		
							parent
							
								
									1f49cf94db
								
							
						
					
					
						commit
						a626b8e79d
					
				|  | @ -0,0 +1,162 @@ | ||||||
|  | name: Plugin Tests | ||||||
|  | 
 | ||||||
|  | on: [push, pull_request] | ||||||
|  | 
 | ||||||
|  | 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"] | ||||||
|  |         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 | ||||||
|  |         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: | ||||||
|  |           repository: discourse/discourse | ||||||
|  |           fetch-depth: 1 | ||||||
|  | 
 | ||||||
|  |       - name: Install plugin | ||||||
|  |         uses: actions/checkout@master | ||||||
|  |         with: | ||||||
|  |           path: plugins/${{ github.event.repository.name }} | ||||||
|  |           fetch-depth: 1 | ||||||
|  | 
 | ||||||
|  |       - name: Check spec existence | ||||||
|  |         id: check_spec | ||||||
|  |         uses: andstor/file-existence-action@v1 | ||||||
|  |         with: | ||||||
|  |           files: "plugins/${{ github.event.repository.name }}/spec" | ||||||
|  | 
 | ||||||
|  |       - name: Check qunit existence | ||||||
|  |         id: check_qunit | ||||||
|  |         uses: andstor/file-existence-action@v1 | ||||||
|  |         with: | ||||||
|  |           files: "plugins/${{ github.event.repository.name }}/test/javascripts" | ||||||
|  | 
 | ||||||
|  |       - name: Setup Git | ||||||
|  |         run: | | ||||||
|  |           git config --global user.email "ci@ci.invalid" | ||||||
|  |           git config --global user.name "Discourse CI" | ||||||
|  | 
 | ||||||
|  |       - name: Setup packages | ||||||
|  |         run: | | ||||||
|  |           sudo apt-get update | ||||||
|  |           sudo apt-get -yqq install postgresql-client libpq-dev gifsicle 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 | ||||||
|  |         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' | ||||||
|  | 
 | ||||||
|  |       - name: Bundler cache | ||||||
|  |         uses: actions/cache@v1 | ||||||
|  |         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@v1 | ||||||
|  |         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: Migrate database | ||||||
|  |         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: 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' && steps.check_spec.outputs.files_exists == 'true' | ||||||
|  |         run: bin/rake plugin:spec[${{ github.event.repository.name }}] | ||||||
|  | 
 | ||||||
|  |       - name: Core QUnit | ||||||
|  |         if: env.BUILD_TYPE == 'FRONTEND' && env.TARGET == 'CORE' | ||||||
|  |         run: bundle exec rake qunit:test['1200000'] | ||||||
|  |         timeout-minutes: 30 | ||||||
|  | 
 | ||||||
|  |       - name: Plugin QUnit | ||||||
|  |         if: env.BUILD_TYPE == 'FRONTEND' && env.TARGET == 'PLUGINS' && steps.check_qunit.outputs.files_exists == 'true' | ||||||
|  |         run: bundle exec rake plugin:qunit['${{ github.event.repository.name }}','1200000'] | ||||||
|  |         timeout-minutes: 30 | ||||||
		Loading…
	
		Reference in New Issue