Test #146
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Test | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| 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@v3 | |
| 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' }} | |
| env: | |
| BRANCH: ${{ github.event.inputs.branch }} | |
| run: | | |
| cd /tmp | |
| git clone --branch "$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 | |
| # Expose the freshly built `percy` on PATH. yarn link symlinks the | |
| # package but not its bin, so `npx percy` would miss it and download | |
| # the unrelated public `percy`. Link is best-effort; PATH is what | |
| # makes percy resolvable. | |
| echo "$(yarn global bin)" >> "$GITHUB_PATH" | |
| export PATH="$(yarn global bin):$PATH" | |
| cd ${{ github.workspace }} | |
| yarn remove @percy/cli >/dev/null 2>&1 || true | |
| yarn link `echo $PERCY_PACKAGES` >/dev/null 2>&1 || true | |
| percy --version | |
| - run: npx percy exec --testing -- bundle exec rspec |