- needs:
- - setup_matrix
-
- runs-on: ubuntu-20.04
- strategy:
- fail-fast: false
- matrix: ${{fromJson(needs.setup_matrix.outputs.matrix)}}
-
- env:
- BUILDEVENT_FILE: '../buildevents.txt'
-
- steps:
- - run: |
- echo 'platform=${{ matrix.platform }}' >> $BUILDEVENT_FILE
- echo 'collection=${{ matrix.collection }}' >> $BUILDEVENT_FILE
-
- - name: "Honeycomb: Start recording"
- uses: kvrhdn/gha-buildevents@v1.0.2
- with:
- apikey: ${{ env.HONEYCOMB_WRITEKEY }}
- dataset: ${{ env.HONEYCOMB_DATASET }}
- job-status: ${{ job.status }}
- matrix-key: ${{ matrix.platform }}-${{ matrix.collection }}
-
- - name: "Honeycomb: start first step"
- run: |
- echo STEP_ID=${{ matrix.platform }}-${{ matrix.collection }}-1 >> $GITHUB_ENV
- echo STEP_START=$(date +%s) >> $GITHUB_ENV
-
- - name: Checkout Source
- uses: actions/checkout@v2
-
- - name: Activate Ruby 2.7
- uses: actions/setup-ruby@v1
- with:
- ruby-version: "2.7"
-
- - name: Cache gems
- uses: actions/cache@v2
- with:
- path: vendor/gems
- key: ${{ runner.os }}-${{ github.event_name }}-${{ hashFiles('**/Gemfile') }}
- restore-keys: |
- ${{ runner.os }}-${{ github.event_name }}-
- ${{ runner.os }}-
-
- - name: "Honeycomb: Record cache setup time"
- if: ${{ always() }}
- run: |
- buildevents step $TRACE_ID $STEP_ID $STEP_START 'Cache retrieval'
- echo STEP_ID=${{ matrix.platform }}-${{ matrix.collection }}-2 >> $GITHUB_ENV
- echo STEP_START=$(date +%s) >> $GITHUB_ENV
-
- - name: Bundler Setup
- run: |
- buildevents cmd $TRACE_ID $STEP_ID 'bundle config path vendor/gems' -- bundle config path vendor/gems
- buildevents cmd $TRACE_ID $STEP_ID 'bundle config jobs 8' -- bundle config jobs 8
- buildevents cmd $TRACE_ID $STEP_ID 'bundle config retry 3' -- bundle config retry 3
- buildevents cmd $TRACE_ID $STEP_ID 'bundle install' -- bundle install
- buildevents cmd $TRACE_ID $STEP_ID 'bundle clean' -- bundle clean
- echo ::group::bundler environment
- buildevents cmd $TRACE_ID $STEP_ID 'bundle env' -- bundle env
- echo ::endgroup::
-
- - name: "Honeycomb: Record Bundler Setup time"
- if: ${{ always() }}
- run: |
- buildevents step $TRACE_ID $STEP_ID $STEP_START 'Bundler Setup'
- echo STEP_ID=${{ matrix.platform }}-${{ matrix.collection }}-3 >> $GITHUB_ENV
- echo STEP_START=$(date +%s) >> $GITHUB_ENV
-
- - name: Provision test environment
- run: |
- buildevents cmd $TRACE_ID $STEP_ID 'rake litmus:provision ${{ matrix.platform }}' -- bundle exec rake 'litmus:provision[provision::provision_service,${{ matrix.platform }}]'
- echo ::group::=== REQUEST ===
- cat request.json || true
- echo
- echo ::endgroup::
- echo ::group::=== INVENTORY ===
- sed -e 's/password: .*/password: "[redacted]"/' < inventory.yaml || true
- echo ::endgroup::
-
- # The provision service hands out machines as soon as they're provisioned.
- # The GCP VMs might still take a while to spool up and configure themselves fully.
- # This retry loop spins until all agents have been installed successfully.
- - name: Install agent
- uses: nick-invision/retry@v1
- with:
- timeout_minutes: 30
- max_attempts: 5
- retry_wait_seconds: 60
- command: buildevents cmd $TRACE_ID $STEP_ID 'rake litmus:install_agent ${{ matrix.collection }}' -- bundle exec rake 'litmus:install_agent[${{ matrix.collection }}]'
-
- # The agent installer on windows does not finish in time for this to work. To
- # work around this for now, retry after a minute if installing the module failed.
- - name: Install module
- uses: nick-invision/retry@v1
- with:
- timeout_minutes: 30
- max_attempts: 2
- retry_wait_seconds: 60
- command: buildevents cmd $TRACE_ID $STEP_ID 'rake litmus:install_module' -- bundle exec rake 'litmus:install_module'
-
- - name: "Honeycomb: Record deployment times"
- if: ${{ always() }}
- run: |
- echo ::group::honeycomb step
- buildevents step $TRACE_ID $STEP_ID $STEP_START 'Deploy test system'
- echo STEP_ID=${{ matrix.platform }}-${{ matrix.collection }}-4 >> $GITHUB_ENV
- echo STEP_START=$(date +%s) >> $GITHUB_ENV
- echo ::endgroup::
-
- - name: Run acceptance tests
- run: |
- buildevents cmd $TRACE_ID $STEP_ID 'rake litmus:acceptance:parallel' -- bundle exec rake 'litmus:acceptance:parallel'
-
- - name: "Honeycomb: Record acceptance testing times"
- if: ${{ always() }}
- run: |
- buildevents step $TRACE_ID $STEP_ID $STEP_START 'Run acceptance tests'
- echo STEP_ID=${{ matrix.platform }}-${{ matrix.collection }}-5 >> $GITHUB_ENV
- echo STEP_START=$(date +%s) >> $GITHUB_ENV
-
- - name: Remove test environment
- if: ${{ always() }}
- run: |
- if [ -f inventory.yaml ]; then
- buildevents cmd $TRACE_ID $STEP_ID 'rake litmus:tear_down' -- bundle exec rake 'litmus:tear_down'
- echo ::group::=== REQUEST ===
- cat request.json || true
- echo
- echo ::endgroup::
- fi
-
- - name: "Honeycomb: Record removal times"
- if: ${{ always() }}
- run: |
- buildevents step $TRACE_ID $STEP_ID $STEP_START 'Remove test environment'