diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml new file mode 100644 index 0000000000..44a3513dbf --- /dev/null +++ b/.github/actions/setup/action.yml @@ -0,0 +1,38 @@ +--- +name: Setup +description: Shared setup steps +inputs: + ruby-version: + required: true +runs: + using: composite + steps: + - name: Set up Ruby ${{ inputs.ruby-version }} + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ inputs.ruby-version }} + bundler-cache: true + - name: Set up JS + uses: actions/setup-node@v4 + with: + cache: yarn + - name: Install Ruby dependencies + run: bundle install + shell: bash + - name: Install Appraisal dependencies + run: bundle exec appraisal install + shell: bash + - name: Install JS dependencies + run: yarn install + shell: bash + - name: Setup the environment + run: cp .sample.env .env + shell: bash + - run: cp spec/example_app/config/database.yml.sample spec/example_app/config/database.yml + shell: bash + - name: Setup the database + run: bundle exec rake db:setup + shell: bash + - name: Build assets + run: yarn run build && yarn run build:css + shell: bash diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index fdf8104b5d..b0e6f72279 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -13,7 +13,7 @@ jobs: strategy: fail-fast: false matrix: - ruby: ['3.0', 3.1, 3.2, 3.3] + ruby: [3.1, 3.2, 3.3] env: PGHOST: localhost PGUSER: administrate @@ -33,35 +33,45 @@ jobs: --health-timeout 5s --health-retries 5 steps: - - uses: actions/checkout@v3 - - name: Set up Ruby ${{ matrix.ruby }} - uses: ruby/setup-ruby@v1 + - uses: actions/checkout@v4 + - uses: ./.github/actions/setup with: ruby-version: ${{ matrix.ruby }} - bundler-cache: true - - name: Set up JS - uses: actions/setup-node@v4 - with: - cache: yarn - - name: Install Ruby dependencies - run: bundle install - - name: Install Appraisal dependencies - run: bundle exec appraisal install - - name: Install JS dependencies - run: yarn install - - name: Setup the environment - run: cp .sample.env .env - - run: cp spec/example_app/config/database.yml.sample spec/example_app/config/database.yml - - name: Setup the database - run: bundle exec rake db:setup - - name: Build assets - run: yarn run build && yarn run build:css - name: Run tests run: bundle exec rspec - - name: Appraise Rails 6.0 - run: bundle exec appraisal rails60 rspec - if: ${{ matrix.ruby <= '3.0' }} - - name: Appraise Rails 6.1 - run: bundle exec appraisal rails61 rspec - - name: Appraisal Rails 7.0 - run: bundle exec appraisal rails70 rspec + + appraisal: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + ruby: [3.1, 3.2, 3.3] + appraisal: [rails61, rails70, pundit21] + include: + - ruby: '3.0' + appraisal: rails60 + env: + PGHOST: localhost + PGUSER: administrate + PGPASSWORD: administrate + services: + postgres: + image: postgres + env: + POSTGRES_USER: administrate + POSTGRES_DB: administrate_test + POSTGRES_PASSWORD: administrate + ports: + - 5432:5432 + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/setup + with: + ruby-version: ${{ matrix.ruby }} + - name: Appraise Rails ${{ matrix.appraisal }} + run: bundle exec appraisal ${{ matrix.appraisal }} rspec