|
|
@@ -0,0 +1,198 @@ |
|
|
name: "PR Testing" |
|
|
|
|
|
on: [pull_request] |
|
|
|
|
|
env: |
|
|
HONEYCOMB_WRITEKEY: 7f3c63a70eecc61d635917de46bea4e6 |
|
|
HONEYCOMB_DATASET: litmus tests |
|
|
|
|
|
jobs: |
|
|
setup_matrix: |
|
|
name: "Setup Test Matrix" |
|
|
runs-on: ubuntu-20.04 |
|
|
outputs: |
|
|
matrix: ${{ steps.get-matrix.outputs.matrix }} |
|
|
|
|
|
steps: |
|
|
- name: "Honeycomb: Start recording" |
|
|
uses: kvrhdn/gha-buildevents@v1.0.2 |
|
|
with: |
|
|
apikey: ${{ env.HONEYCOMB_WRITEKEY }} |
|
|
dataset: ${{ env.HONEYCOMB_DATASET }} |
|
|
job-status: ${{ job.status }} |
|
|
|
|
|
- name: "Honeycomb: Start first step" |
|
|
run: | |
|
|
echo STEP_ID=0 >> $GITHUB_ENV |
|
|
echo STEP_START=$(date +%s) >> $GITHUB_ENV |
|
|
|
|
|
- name: Checkout Source |
|
|
uses: actions/checkout@v2 |
|
|
if: ${{ github.repository_owner == 'puppetlabs' }} |
|
|
|
|
|
- name: Activate Ruby 2.7 |
|
|
uses: actions/setup-ruby@v1 |
|
|
if: ${{ github.repository_owner == 'puppetlabs' }} |
|
|
with: |
|
|
ruby-version: "2.7" |
|
|
|
|
|
- name: Cache gems |
|
|
uses: actions/cache@v2 |
|
|
if: ${{ github.repository_owner == 'puppetlabs' }} |
|
|
with: |
|
|
path: vendor/gems |
|
|
key: ${{ runner.os }}-${{ github.event_name }}-${{ hashFiles('**/Gemfile') }} |
|
|
restore-keys: | |
|
|
${{ runner.os }}-${{ github.event_name }}- |
|
|
${{ runner.os }}- |
|
|
|
|
|
- name: Install gems |
|
|
if: ${{ github.repository_owner == 'puppetlabs' }} |
|
|
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 |
|
|
|
|
|
- name: Setup Acceptance Test Matrix |
|
|
id: get-matrix |
|
|
if: ${{ github.repository_owner == 'puppetlabs' }} |
|
|
run: | |
|
|
if [ '${{ github.repository_owner }}' == 'puppetlabs' ]; then |
|
|
buildevents cmd $TRACE_ID $STEP_ID matrix_from_metadata -- bundle exec matrix_from_metadata |
|
|
else |
|
|
echo "::set-output name=matrix::{}" |
|
|
fi |
|
|
|
|
|
- name: "Honeycomb: Record setup time" |
|
|
if: ${{ always() }} |
|
|
run: | |
|
|
buildevents step $TRACE_ID $STEP_ID $STEP_START 'Setup Test Matrix' |
|
|
|
|
|
Acceptance: |
|
|
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:: |
|
|
|
|
|
- name: Install agent |
|
|
run: | |
|
|
buildevents cmd $TRACE_ID $STEP_ID 'rake litmus:install_agent ${{ matrix.collection }}' -- bundle exec rake 'litmus:install_agent[${{ matrix.collection }}]' |
|
|
|
|
|
- name: Install module |
|
|
run: | |
|
|
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' |