diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ecb285f8..adf53c93 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,24 +3,50 @@ on: push: branches: [main] pull_request: + schedule: + - cron: "0 0 * * *" # Once/day + jobs: + versions: + name: Get latest versions + runs-on: ubuntu-latest + strategy: + matrix: + product: ["ruby", "rails"] + outputs: + ruby: ${{ steps.supported.outputs.ruby }} + rails: ${{ steps.supported.outputs.rails }} + steps: + - id: supported + run: | + product="${{ matrix.product }}" + data=$(curl https://endoflife.date/api/$product.json) + supported=$(echo $data | jq '[.[] | select(.eol > (now | strftime("%Y-%m-%d")))]') + echo "${product}=$(echo $supported | jq -c 'map(.latest)')" >> $GITHUB_OUTPUT test: - name: Test on Ruby ${{ matrix.ruby }} and Rails ${{ matrix.rails }} + needs: versions runs-on: ubuntu-latest + name: Test on Ruby ${{ matrix.ruby }} and Rails ${{ matrix.rails }} strategy: fail-fast: false matrix: - ruby: ['3.0', '3.1', '3.2', '3.3'] - rails: ['6.1.0', '7.0.0', '7.1.0'] + ruby: ${{ fromJSON(needs.versions.outputs.ruby) }} + rails: ${{ fromJSON(needs.versions.outputs.rails) }} env: RAILS_VERSION: ${{ matrix.rails }} steps: - name: Check out repository code uses: actions/checkout@v4 - name: Set up Ruby + id: setup-ruby uses: ruby/setup-ruby@v1 with: bundler-cache: true ruby-version: ${{ matrix.ruby }} + continue-on-error: true + - name: Incompatible Versions + if: steps.setup-ruby.outcome == 'failure' + run: echo "Ruby ${{ matrix.ruby }} is not supported with Rails ${{ matrix.rails }}" - name: Run Rake + if: steps.setup-ruby.outcome != 'failure' run: bundle exec rake