name: Test on: push: branches: [main] workflow_dispatch: inputs: branch: required: false type: string default: master jobs: test: name: Test strategy: matrix: os: [ubuntu-latest] ruby: ['2.6', '2.7'] runs-on: ${{ matrix.os }} steps: - uses: actions-ecosystem/action-regex-match@v2 id: regex-match if: ${{ github.event_name == 'workflow_dispatch' }} with: text: ${{ github.event.inputs.branch }} regex: '^[a-zA-Z0-9_/\-]+$' - name: Break on invalid branch name run: exit 1 if: ${{ github.event_name == 'workflow_dispatch' && steps.regex-match.outputs && steps.regex-match.outputs.match == '' }} - uses: actions/checkout@v2 - uses: ruby/setup-ruby@v1 with: ruby-version: ${{matrix.ruby}} bundler-cache: true - uses: actions/cache@v2 with: path: "./vendor/bundle" key: v1/${{ runner.os }}/ruby-${{ matrix.ruby }}/${{ hashFiles('**/Gemfile.lock') }} restore-keys: v1/${{ runner.os }}/ruby-${{ matrix.ruby }}/ - uses: actions/setup-node@v3 with: node-version: 16 - name: Get yarn cache directory path id: yarn-cache-dir-path run: echo "::set-output name=dir::$(yarn cache dir)" - uses: actions/cache@v3 with: path: ${{ steps.yarn-cache-dir-path.outputs.dir }} key: v1/${{ runner.os }}/node-${{ matrix.node }}/${{ hashFiles('**/yarn.lock') }} restore-keys: v1/${{ runner.os }}/node-${{ matrix.node }}/ - run: yarn - name: Set up @percy/cli from git if: ${{ github.event_name == 'workflow_dispatch' }} run: | cd /tmp git clone --branch ${{ github.event.inputs.branch }} --depth 1 https://github.com/percy/cli cd cli PERCY_PACKAGES=`find packages -mindepth 1 -maxdepth 1 -type d | sed -e 's/packages/@percy/g' | tr '\n' ' '` git log -1 yarn yarn build yarn global:link cd ${{ github.workspace }} yarn remove @percy/cli && yarn link `echo $PERCY_PACKAGES` npx percy --version - run: npx percy exec --testing -- bundle exec rspec