From 42795d52fe627ee2a6b2f44d68981402c5dd1203 Mon Sep 17 00:00:00 2001 From: discoursebot Date: Tue, 10 Jan 2023 14:30:23 -0500 Subject: [PATCH] DEV: Update CI workflows (#18) Co-authored-by: discoursebuild --- .github/workflows/component-linting.yml | 48 -------- .github/workflows/component-tests.yml | 152 ------------------------ .github/workflows/discourse-theme.yml | 11 ++ 3 files changed, 11 insertions(+), 200 deletions(-) delete mode 100644 .github/workflows/component-linting.yml delete mode 100644 .github/workflows/component-tests.yml create mode 100644 .github/workflows/discourse-theme.yml diff --git a/.github/workflows/component-linting.yml b/.github/workflows/component-linting.yml deleted file mode 100644 index 8f8a0d6..0000000 --- a/.github/workflows/component-linting.yml +++ /dev/null @@ -1,48 +0,0 @@ -name: Linting - -on: - push: - branches: - - main - pull_request: - -concurrency: - group: plugin-linting-${{ format('{0}-{1}', github.head_ref || github.run_number, github.job) }} - cancel-in-progress: true - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - - name: Set up Node.js - uses: actions/setup-node@v3 - with: - node-version: 18 - cache: yarn - - - name: Yarn install - run: yarn install - - - name: ESLint - if: ${{ !cancelled() }} - run: yarn eslint --ext .js,.js.es6 --no-error-on-unmatched-pattern {test,javascripts} - - - name: Prettier - if: ${{ !cancelled() }} - shell: bash - run: | - yarn prettier -v - files=$(find javascripts desktop mobile common scss -type f \( -name "*.scss" -or -name "*.js" -or -name "*.es6" -or -name "*.hbs" \) 2> /dev/null) || true - if [ -n "$files" ]; then - yarn prettier --list-different $files - fi - if [ 0 -lt $(find test -type f \( -name "*.js" -or -name "*.es6" \) 2> /dev/null | wc -l) ]; then - yarn prettier --list-different "test/**/*.{js,es6}" - fi - - - name: Ember template lint - if: ${{ !cancelled() }} - run: yarn ember-template-lint --no-error-on-unmatched-pattern javascripts diff --git a/.github/workflows/component-tests.yml b/.github/workflows/component-tests.yml deleted file mode 100644 index 565ec09..0000000 --- a/.github/workflows/component-tests.yml +++ /dev/null @@ -1,152 +0,0 @@ -name: Tests - -on: - push: - branches: - - main - pull_request: - -concurrency: - group: plugin-tests-${{ format('{0}-{1}', github.head_ref || github.run_number, github.job) }} - cancel-in-progress: true - -jobs: - check: - runs-on: ubuntu-latest - outputs: - tests_exist: ${{ steps.check_tests.outputs.tests_exist }} - - steps: - - name: Install component - uses: actions/checkout@v3 - with: - path: tmp/component - fetch-depth: 1 - - - name: Check QUnit existence - id: check_tests - shell: bash - run: | - if [ 0 -lt $(find tmp/component/test -type f \( -name "*.js" -or -name "*.es6" \) 2> /dev/null | wc -l) ]; then - echo "tests_exist=true" >> $GITHUB_OUTPUT - fi - - test: - needs: check - if: ${{ needs.check.outputs.tests_exist }} - runs-on: ubuntu-latest - container: discourse/discourse_test:slim-browsers - timeout-minutes: 15 - - env: - DISCOURSE_HOSTNAME: www.example.com - RUBY_GLOBAL_METHOD_CACHE_SIZE: 131072 - RAILS_ENV: development - PGUSER: discourse - PGPASSWORD: discourse - - steps: - - uses: actions/checkout@v3 - with: - repository: discourse/discourse - fetch-depth: 1 - - - name: Install component - uses: actions/checkout@v3 - with: - path: tmp/component - fetch-depth: 1 - - - name: Setup Git - run: | - git config --global user.email "ci@ci.invalid" - git config --global user.name "Discourse CI" - - - name: Start redis - run: | - redis-server /etc/redis/redis.conf & - - - name: Start Postgres - run: | - chown -R postgres /var/run/postgresql - sudo -E -u postgres script/start_test_db.rb - sudo -u postgres psql -c "CREATE ROLE $PGUSER LOGIN SUPERUSER PASSWORD '$PGPASSWORD';" - - - name: Bundler cache - uses: actions/cache@v3 - with: - path: vendor/bundle - key: ${{ runner.os }}-gem-${{ hashFiles('**/Gemfile.lock') }} - restore-keys: | - ${{ runner.os }}-gem- - - - name: Setup gems - run: | - gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,""); print $0 }' Gemfile.lock) - bundle config --local path vendor/bundle - bundle config --local deployment true - bundle config --local without development - bundle install --jobs 4 - bundle clean - - - name: Lint English locale - run: bundle exec ruby script/i18n_lint.rb "tmp/component/locales/en.yml" - - - name: Get yarn cache directory - id: yarn-cache-dir - run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT - - - name: Yarn cache - uses: actions/cache@v3 - id: yarn-cache - with: - path: ${{ steps.yarn-cache-dir.outputs.dir }} - key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn- - - - name: Yarn install - run: yarn install - - - name: Fetch app state cache - uses: actions/cache@v3 - id: app-cache - with: - path: tmp/app-cache - key: >- - ${{ hashFiles('.github/workflows/tests.yml') }}- - ${{ hashFiles('db/**/*', 'plugins/**/db/**/*') }}- - - - name: Restore database from cache - if: steps.app-cache.outputs.cache-hit == 'true' - run: psql -f tmp/app-cache/cache.sql postgres - - - name: Restore uploads from cache - if: steps.app-cache.outputs.cache-hit == 'true' - run: rm -rf public/uploads && cp -r tmp/app-cache/uploads public/uploads - - - name: Create and migrate database - if: steps.app-cache.outputs.cache-hit != 'true' - run: | - bin/rake db:create - bin/rake db:migrate - - - name: Dump database for cache - if: steps.app-cache.outputs.cache-hit != 'true' - run: mkdir -p tmp/app-cache && pg_dumpall > tmp/app-cache/cache.sql - - - name: Dump uploads for cache - if: steps.app-cache.outputs.cache-hit != 'true' - run: rm -rf tmp/app-cache/uploads && cp -r public/uploads tmp/app-cache/uploads - - - name: Create theme archive - run: | - cd tmp/component - git archive --format=tar.gz HEAD > ../../theme.tar.gz - - - name: Component QUnit - run: | - THEME_NAME=$(ruby -e 'require "json"; puts JSON.parse(File.read("tmp/component/about.json"))["name"]') - THEME_ARCHIVE=theme.tar.gz bundle exec rake themes:install:archive - UNICORN_TIMEOUT=120 bundle exec rake "themes:qunit[name,$THEME_NAME]" - timeout-minutes: 10 diff --git a/.github/workflows/discourse-theme.yml b/.github/workflows/discourse-theme.yml new file mode 100644 index 0000000..8adaaec --- /dev/null +++ b/.github/workflows/discourse-theme.yml @@ -0,0 +1,11 @@ +name: Discourse Theme + +on: + push: + branches: + - main + pull_request: + +jobs: + ci: + uses: discourse/.github/.github/workflows/discourse-theme.yml@v1