From 547d7fac9e571833e704ec749d98eb4fbb4ab7af Mon Sep 17 00:00:00 2001 From: jordanbreen28 <jordan.breen@perforce.com> Date: Tue, 4 Apr 2023 13:02:22 +0100 Subject: [PATCH] (CONT-844) - Update workflow templates Prior to this commit, pdk-templates included templates for workflows that became obselete with the deployment of reusable workflows to all our supported modules. This commit updates the workflow templates, so that the correct template is applied when running pdk. --- config_defaults.yml | 13 +- .../.github/workflows/auto_release.yml.erb | 94 +------- moduleroot/.github/workflows/ci.yml.erb | 18 ++ moduleroot/.github/workflows/nightly.yml.erb | 215 +----------------- moduleroot/.github/workflows/pr_test.yml.erb | 199 ---------------- moduleroot/.github/workflows/release.yml.erb | 44 +--- moduleroot/.github/workflows/spec.yml.erb | 145 ------------ 7 files changed, 35 insertions(+), 693 deletions(-) create mode 100644 moduleroot/.github/workflows/ci.yml.erb delete mode 100644 moduleroot/.github/workflows/pr_test.yml.erb delete mode 100644 moduleroot/.github/workflows/spec.yml.erb diff --git a/config_defaults.yml b/config_defaults.yml index 2a7dbab..5ea9e67 100644 --- a/config_defaults.yml +++ b/config_defaults.yml @@ -657,18 +657,11 @@ spec/spec_helper.rb: mock_with: ":rspec" strict_level: ":warning" strict_variables: true - -.github/workflows/nightly.yml: - unmanaged: true - slack-notifications: - channel: '#team-cat-bots' - name: 'GABot' -.github/workflows/pr_test.yml: - unmanaged: true .github/workflows/auto_release.yml: unmanaged: true -.github/workflows/spec.yml: +.github/workflows/ci.yml: + unmanaged: true +.github/workflows/nightly.yml: unmanaged: true - checks: 'validate lint check rubocop' .github/workflows/release.yml: unmanaged: true diff --git a/moduleroot/.github/workflows/auto_release.yml.erb b/moduleroot/.github/workflows/auto_release.yml.erb index e44d435..ea88b5d 100644 --- a/moduleroot/.github/workflows/auto_release.yml.erb +++ b/moduleroot/.github/workflows/auto_release.yml.erb @@ -8,95 +8,7 @@ on: <% end -%> workflow_dispatch: -env: -<% if common['honeycomb']['enabled'] -%> - HONEYCOMB_WRITEKEY: <%= common['honeycomb']['writekey'] %> - HONEYCOMB_DATASET: <%= common['honeycomb']['dataset'] %> -<% end -%> -<% if common['service_url'] -%> - SERVICE_URL: <%= common['service_url'] %> -<% end -%> - CHANGELOG_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - jobs: - auto_release: - name: "Automatic release prep" - runs-on: ubuntu-20.04 - - steps: -<% if common['honeycomb']['enabled'] -%> - - name: "Honeycomb: Start recording" - uses: puppetlabs/kvrhdn-gha-buildevents@pdk-templates-v1 - with: - apikey: ${{ env.HONEYCOMB_WRITEKEY }} - dataset: ${{ env.HONEYCOMB_DATASET }} - job-status: ${{ job.status }} - - - name: "Honeycomb: start first step" - run: | - echo STEP_ID="auto-release" >> $GITHUB_ENV - echo STEP_START=$(date +%s) >> $GITHUB_ENV -<% end -%> - - name: "Checkout Source" - if: ${{ github.repository_owner == '<%= common['owner'] %>' }} - uses: actions/checkout@v3 - with: - fetch-depth: 0 - persist-credentials: false - - - name: "PDK Release prep" - uses: docker://puppet/pdk:2.6.1.0 - with: - args: 'release prep --force' - env: - CHANGELOG_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: "Get Version" - if: ${{ github.repository_owner == '<%= common['owner'] %>' }} - id: gv - run: | - echo "::set-output name=ver::$(jq --raw-output .version metadata.json)" - - - name: "Check if a release is necessary" - if: ${{ github.repository_owner == '<%= common['owner'] %>' }} - id: check - run: | - git diff --quiet CHANGELOG.md && echo "::set-output name=release::false" || echo "::set-output name=release::true" - - - name: "Commit changes" - if: ${{ github.repository_owner == '<%= common['owner'] %>' && steps.check.outputs.release == 'true' }} - run: | - git config --local user.email "${{ github.repository_owner }}@users.noreply.github.com" - git config --local user.name "GitHub Action" - git add . - git commit -m "Release prep v${{ steps.gv.outputs.ver }}" - - - name: Create Pull Request - id: cpr - uses: puppetlabs/peter-evans-create-pull-request@v3 - if: ${{ github.repository_owner == '<%= common['owner'] %>' && steps.check.outputs.release == 'true' }} - with: - token: ${{ secrets.GITHUB_TOKEN }} - commit-message: "Release prep v${{ steps.gv.outputs.ver }}" - branch: "release-prep" - delete-branch: true - title: "Release prep v${{ steps.gv.outputs.ver }}" - body: | - Automated release-prep through [pdk-templates](https://github.com/puppetlabs/pdk-templates/blob/main/moduleroot/.github/workflows/auto_release.yml.erb) from commit ${{ github.sha }}. - Please verify before merging: - - [ ] last [nightly](https://github.com/${{ github.repository }}/actions/workflows/nightly.yml) run is green - - [ ] [Changelog](https://github.com/${{ github.repository }}/blob/release-prep/CHANGELOG.md) is readable and has no unlabeled pull requests - - [ ] Ensure the [changelog](https://github.com/${{ github.repository }}/blob/release-prep/CHANGELOG.md) version and [metadata](https://github.com/${{ github.repository }}/blob/release-prep/metadata.json) version match - labels: "maintenance" - - - name: PR outputs - if: ${{ github.repository_owner == '<%= common['owner'] %>' && steps.check.outputs.release == 'true' }} - run: | - echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}" - echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}" -<% if common['honeycomb']['enabled'] -%> - - name: "Honeycomb: Record finish step" - if: ${{ always() }} - run: | - buildevents step $TRACE_ID $STEP_ID $STEP_START 'Finished auto release workflow' -<% end -%> + release_prep: + uses: "puppetlabs/cat-github-actions/.github/workflows/module_release_prep.yml@main" + secrets: "inherit" diff --git a/moduleroot/.github/workflows/ci.yml.erb b/moduleroot/.github/workflows/ci.yml.erb new file mode 100644 index 0000000..e3d7cd8 --- /dev/null +++ b/moduleroot/.github/workflows/ci.yml.erb @@ -0,0 +1,18 @@ +<% common = config_for('common') -%> +name: "ci" + +on: + pull_request: + branches: + - "main" + workflow_dispatch: + +jobs: + Spec: + uses: "puppetlabs/cat-github-actions/.github/workflows/module_ci.yml@main" + secrets: "inherit" + + Acceptance: + needs: Spec + uses: "puppetlabs/cat-github-actions/.github/workflows/module_acceptance.yml@main" + secrets: "inherit" diff --git a/moduleroot/.github/workflows/nightly.yml.erb b/moduleroot/.github/workflows/nightly.yml.erb index 244688d..7b961d6 100644 --- a/moduleroot/.github/workflows/nightly.yml.erb +++ b/moduleroot/.github/workflows/nightly.yml.erb @@ -3,214 +3,15 @@ name: "nightly" on: schedule: - - cron: '0 0 * * *' - -<% if common['honeycomb']['enabled'] or common['service_url'] %> -env: -<% if common['honeycomb']['enabled'] -%> - HONEYCOMB_WRITEKEY: <%= common['honeycomb']['writekey'] %> - HONEYCOMB_DATASET: <%= common['honeycomb']['dataset'] %> -<% end -%> -<% if common['service_url'] -%> - SERVICE_URL: <%= common['service_url'] %> -<% end -%> -<% end -%> + - cron: "0 0 * * *" + workflow_dispatch: jobs: - setup_matrix: - if: ${{ github.repository_owner == '<%= common['owner'] %>' }} - name: "Setup Test Matrix" - runs-on: ubuntu-20.04 - outputs: - matrix: ${{ steps.get-matrix.outputs.matrix }} - - steps: -<% if common['honeycomb']['enabled'] -%> - - name: "Honeycomb: Start recording" - uses: puppetlabs/kvrhdn-gha-buildevents@pdk-templates-v1 - with: - apikey: ${{ env.HONEYCOMB_WRITEKEY }} - dataset: ${{ env.HONEYCOMB_DATASET }} - job-status: ${{ job.status }} - - - name: "Honeycomb: Start first step" - run: | - echo STEP_ID=setup-environment >> $GITHUB_ENV - echo STEP_START=$(date +%s) >> $GITHUB_ENV -<% end -%> - - name: Checkout Source - uses: actions/checkout@v3 - if: ${{ github.repository_owner == '<%= common['owner'] %>' }} + Spec: + uses: "puppetlabs/cat-github-actions/.github/workflows/module_ci.yml@main" + secrets: "inherit" - - name: Activate Ruby 2.7 - uses: ruby/setup-ruby@v1 - if: ${{ github.repository_owner == '<%= common['owner'] %>' }} - with: - ruby-version: "2.7" - bundler-cache: true - - - name: Print bundle environment - if: ${{ github.repository_owner == '<%= common['owner'] %>' }} - run: | - echo ::group::bundler environment - buildevents cmd $TRACE_ID $STEP_ID 'bundle env' -- bundle env - echo ::endgroup:: -<% if common['honeycomb']['enabled'] -%> - - name: "Honeycomb: Record Setup Environment time" - if: ${{ github.repository_owner == '<%= common['owner'] %>' }} - run: | - buildevents step $TRACE_ID $STEP_ID $STEP_START 'Setup Environment' - echo STEP_ID=Setup-Acceptance-Test-Matrix >> $GITHUB_ENV - echo STEP_START=$(date +%s) >> $GITHUB_ENV -<% end -%> - - name: Setup Acceptance Test Matrix - id: get-matrix - if: ${{ github.repository_owner == '<%= common['owner'] %>' }} - run: | - if [ '${{ github.repository_owner }}' == '<%= common['owner'] %>' ]; then - buildevents cmd $TRACE_ID $STEP_ID matrix_from_metadata -- bundle exec matrix_from_metadata_v2 <%= "--exclude-platforms '#{@configs['exclude_platforms']}'" unless @configs['exclude_platforms'].nil? %> - else - echo "::set-output name=matrix::{}" - fi -<% if common['honeycomb']['enabled'] -%> - - name: "Honeycomb: Record Setup Test Matrix time" - if: ${{ always() }} - run: | - buildevents step $TRACE_ID $STEP_ID $STEP_START 'Setup Test Matrix' -<% end -%> Acceptance: - name: "${{matrix.platforms.label}}, ${{matrix.collection}}" - 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.platforms.image }}' >> $BUILDEVENT_FILE - echo 'collection=${{ matrix.collection }}' >> $BUILDEVENT_FILE - echo 'label=${{ matrix.platforms.label }}' >> $BUILDEVENT_FILE - - - - name: "Honeycomb: Start recording" - uses: puppetlabs/kvrhdn-gha-buildevents@pdk-templates-v1 - with: - apikey: ${{ env.HONEYCOMB_WRITEKEY }} - dataset: ${{ env.HONEYCOMB_DATASET }} - job-status: ${{ job.status }} - matrix-key: ${{ matrix.platforms.label }}-${{ matrix.collection }} - - - name: "Honeycomb: start first step" - run: | - echo STEP_ID=${{ matrix.platforms.image }}-${{ matrix.collection }}-1 >> $GITHUB_ENV - echo STEP_START=$(date +%s) >> $GITHUB_ENV - - - name: Checkout Source - uses: actions/checkout@v3 - - - name: Activate Ruby 2.7 - uses: ruby/setup-ruby@v1 - with: - ruby-version: "2.7" - bundler-cache: true - - - name: Print bundle environment - run: | - echo ::group::bundler environment - buildevents cmd $TRACE_ID $STEP_ID 'bundle env' -- bundle env - echo ::endgroup:: - - - name: "Honeycomb: Record Setup Environment time" - if: ${{ always() }} - run: | - buildevents step $TRACE_ID $STEP_ID $STEP_START 'Setup Environment' - echo STEP_ID=${{ matrix.platforms.image }}-${{ matrix.collection }}-2 >> $GITHUB_ENV - echo STEP_START=$(date +%s) >> $GITHUB_ENV - - - name: Provision test environment - run: | - buildevents cmd $TRACE_ID $STEP_ID 'rake litmus:provision ${{ matrix.platforms.image }}' -- bundle exec rake 'litmus:provision[${{matrix.platforms.provider}},${{ matrix.platforms.image }}]' - echo ::group::=== REQUEST === - cat request.json || true - echo - echo ::endgroup:: - echo ::group::=== INVENTORY === - if [ -f 'spec/fixtures/litmus_inventory.yaml' ]; - then - FILE='spec/fixtures/litmus_inventory.yaml' - elif [ -f 'inventory.yaml' ]; - then - FILE='inventory.yaml' - fi - sed -e 's/password: .*/password: "[redacted]"/' < $FILE || 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.platforms.image }}-${{ matrix.collection }}-3 >> $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.platforms.image }}-${{ matrix.collection }}-4 >> $GITHUB_ENV - echo STEP_START=$(date +%s) >> $GITHUB_ENV - - - name: Remove test environment - if: ${{ always() }} - continue-on-error: true - run: | - if [[ -f inventory.yaml || -f spec/fixtures/litmus_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' - -<% if @configs['slack-notifications'] -%> - slack-workflow-status: - if: ${{ github.repository_owner == '<%= common['owner'] %>' }} - name: Post Workflow Status To Slack - needs: - - Acceptance - runs-on: ubuntu-20.04 - steps: - - name: Slack Workflow Notification - uses: puppetlabs/Gamesight-slack-workflow-status@pdk-templates-v1 - with: - # Required Input - repo_token: ${{ secrets.GITHUB_TOKEN }} - slack_webhook_url: ${{ secrets.SLACK_WEBHOOK }} - # Optional Input - channel: '<%= @configs['slack-notifications']['channel'] %>' - name: '<%= @configs['slack-notifications']['name'] %>' -<% end -%> + needs: Spec + uses: "puppetlabs/cat-github-actions/.github/workflows/module_acceptance.yml@main" + secrets: "inherit" diff --git a/moduleroot/.github/workflows/pr_test.yml.erb b/moduleroot/.github/workflows/pr_test.yml.erb deleted file mode 100644 index 0bb2f36..0000000 --- a/moduleroot/.github/workflows/pr_test.yml.erb +++ /dev/null @@ -1,199 +0,0 @@ -<% common = config_for('common') -%> -name: "PR Testing" - -on: [pull_request] - -<% if common['honeycomb']['enabled'] or common['service_url'] %> -env: -<% if common['honeycomb']['enabled'] -%> - HONEYCOMB_WRITEKEY: <%= common['honeycomb']['writekey'] %> - HONEYCOMB_DATASET: <%= common['honeycomb']['dataset'] %> -<% end -%> -<% if common['service_url'] -%> - SERVICE_URL: <%= common['service_url'] %> -<% end -%> -<% end -%> - -jobs: - setup_matrix: - name: "Setup Test Matrix" - runs-on: ubuntu-20.04 - outputs: - matrix: ${{ steps.get-matrix.outputs.matrix }} - - steps: -<% if common['honeycomb']['enabled'] -%> - - name: "Honeycomb: Start recording" - uses: puppetlabs/kvrhdn-gha-buildevents@pdk-templates-v1 - with: - apikey: ${{ env.HONEYCOMB_WRITEKEY }} - dataset: ${{ env.HONEYCOMB_DATASET }} - job-status: ${{ job.status }} - - - name: "Honeycomb: Start first step" - run: | - echo STEP_ID=setup-environment >> $GITHUB_ENV - echo STEP_START=$(date +%s) >> $GITHUB_ENV -<% end -%> - - name: Checkout Source - uses: actions/checkout@v3 - if: ${{ github.repository_owner == '<%= common['owner'] %>' }} - - - name: Activate Ruby 2.7 - uses: ruby/setup-ruby@v1 - if: ${{ github.repository_owner == '<%= common['owner'] %>' }} - with: - ruby-version: "2.7" - bundler-cache: true - - - name: Print bundle environment - if: ${{ github.repository_owner == '<%= common['owner'] %>' }} - run: | - echo ::group::bundler environment - buildevents cmd $TRACE_ID $STEP_ID 'bundle env' -- bundle env - echo ::endgroup:: -<% if common['honeycomb']['enabled'] -%> - - name: "Honeycomb: Record Setup Environment time" - if: ${{ github.repository_owner == '<%= common['owner'] %>' }} - run: | - buildevents step $TRACE_ID $STEP_ID $STEP_START 'Setup Environment' - echo STEP_ID=Setup-Acceptance-Test-Matrix >> $GITHUB_ENV - echo STEP_START=$(date +%s) >> $GITHUB_ENV -<% end -%> - - name: Run validation steps - run: | - bundle exec rake validate - if: ${{ github.repository_owner == '<%= common['owner'] %>' }} - - - name: Setup Acceptance Test Matrix - id: get-matrix - run: | - if [ '${{ github.repository_owner }}' == '<%= common['owner'] %>' ]; then - buildevents cmd $TRACE_ID $STEP_ID matrix_from_metadata -- bundle exec matrix_from_metadata_v2 <%= "--exclude-platforms '#{@configs['exclude_platforms']}'" unless @configs['exclude_platforms'].nil? %> - else - echo "::set-output name=matrix::{}" - fi -<% if common['honeycomb']['enabled'] -%> - - name: "Honeycomb: Record Setup Test Matrix time" - if: ${{ always() }} - run: | - buildevents step $TRACE_ID $STEP_ID $STEP_START 'Setup Test Matrix' -<% end -%> - Acceptance: - name: "${{matrix.platforms.label}}, ${{matrix.collection}}" - needs: - - setup_matrix - if: ${{ needs.setup_matrix.outputs.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.platforms.image }}' >> $BUILDEVENT_FILE - echo 'collection=${{ matrix.collection }}' >> $BUILDEVENT_FILE - echo 'label=${{ matrix.platforms.label }}' >> $BUILDEVENT_FILE -<% if common['honeycomb']['enabled'] -%> - - name: "Honeycomb: Start recording" - uses: puppetlabs/kvrhdn-gha-buildevents@pdk-templates-v1 - with: - apikey: ${{ env.HONEYCOMB_WRITEKEY }} - dataset: ${{ env.HONEYCOMB_DATASET }} - job-status: ${{ job.status }} - matrix-key: ${{ matrix.platforms.label }}-${{ matrix.collection }} - - - name: "Honeycomb: start first step" - run: | - echo STEP_ID=${{ matrix.platforms.image }}-${{ matrix.collection }}-1 >> $GITHUB_ENV - echo STEP_START=$(date +%s) >> $GITHUB_ENV -<% end -%> - - name: Checkout Source - uses: actions/checkout@v3 - - - name: Activate Ruby 2.7 - uses: ruby/setup-ruby@v1 - with: - ruby-version: "2.7" - bundler-cache: true - - - name: Print bundle environment - run: | - echo ::group::bundler environment - buildevents cmd $TRACE_ID $STEP_ID 'bundle env' -- bundle env - echo ::endgroup:: -<% if common['honeycomb']['enabled'] -%> - - name: "Honeycomb: Record Setup Environment time" - if: ${{ always() }} - run: | - buildevents step $TRACE_ID $STEP_ID $STEP_START 'Setup Environment' - echo STEP_ID=${{ matrix.platforms.image }}-${{ matrix.collection }}-2 >> $GITHUB_ENV - echo STEP_START=$(date +%s) >> $GITHUB_ENV -<% end -%> - - name: Provision test environment - run: | - buildevents cmd $TRACE_ID $STEP_ID 'rake litmus:provision ${{ matrix.platforms.image }}' -- bundle exec rake 'litmus:provision[${{matrix.platforms.provider}},${{ matrix.platforms.image }}]' - echo ::group::=== REQUEST === - cat request.json || true - echo - echo ::endgroup:: - echo ::group::=== INVENTORY === - if [ -f 'spec/fixtures/litmus_inventory.yaml' ]; - then - FILE='spec/fixtures/litmus_inventory.yaml' - elif [ -f 'inventory.yaml' ]; - then - FILE='inventory.yaml' - fi - sed -e 's/password: .*/password: "[redacted]"/' < $FILE || 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' -<% if common['honeycomb']['enabled'] -%> - - 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.platforms.image }}-${{ matrix.collection }}-3 >> $GITHUB_ENV - echo STEP_START=$(date +%s) >> $GITHUB_ENV - echo ::endgroup:: -<% end -%> - - name: Run acceptance tests - run: | - buildevents cmd $TRACE_ID $STEP_ID 'rake litmus:acceptance:parallel' -- bundle exec rake 'litmus:acceptance:parallel' -<% if common['honeycomb']['enabled'] -%> - - name: "Honeycomb: Record acceptance testing times" - if: ${{ always() }} - run: | - buildevents step $TRACE_ID $STEP_ID $STEP_START 'Run acceptance tests' - echo STEP_ID=${{ matrix.platforms.image }}-${{ matrix.collection }}-4 >> $GITHUB_ENV - echo STEP_START=$(date +%s) >> $GITHUB_ENV -<% end -%> - - name: Remove test environment - if: ${{ always() }} - continue-on-error: true - run: | - if [[ -f inventory.yaml || -f spec/fixtures/litmus_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 -<% if common['honeycomb']['enabled'] -%> - - name: "Honeycomb: Record removal times" - if: ${{ always() }} - run: | - buildevents step $TRACE_ID $STEP_ID $STEP_START 'Remove test environment' -<% end -%> diff --git a/moduleroot/.github/workflows/release.yml.erb b/moduleroot/.github/workflows/release.yml.erb index 206ab68..6db9c9b 100644 --- a/moduleroot/.github/workflows/release.yml.erb +++ b/moduleroot/.github/workflows/release.yml.erb @@ -5,44 +5,6 @@ on: workflow_dispatch: jobs: - create-github-release: - name: Deploy GitHub Release - runs-on: ubuntu-20.04 - steps: - - name: Checkout code - uses: actions/checkout@v3 - with: - ref: ${{ github.ref }} - clean: true - fetch-depth: 0 - - name: Get Version - id: gv - run: | - echo "::set-output name=ver::$(jq --raw-output .version metadata.json)" - - name: Create Release - uses: actions/create-release@v1 - id: create_release - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: "v${{ steps.gv.outputs.ver }}" - draft: false - prerelease: false - - deploy-forge: - name: Deploy to Forge - runs-on: ubuntu-20.04 - steps: - - name: Checkout code - uses: actions/checkout@v3 - with: - ref: ${{ github.ref }} - clean: true - - name: "PDK Build" - uses: docker://puppet/pdk:nightly - with: - args: 'build' - - name: "Push to Forge" - uses: docker://puppet/pdk:nightly - with: - args: 'release publish --forge-token ${{ secrets.FORGE_API_KEY }} --force' + release: + uses: "puppetlabs/cat-github-actions/.github/workflows/module_release.yml@main" + secrets: "inherit" diff --git a/moduleroot/.github/workflows/spec.yml.erb b/moduleroot/.github/workflows/spec.yml.erb deleted file mode 100644 index 9652e59..0000000 --- a/moduleroot/.github/workflows/spec.yml.erb +++ /dev/null @@ -1,145 +0,0 @@ -<% common = config_for('common') -%> -name: "Spec Tests" - -on: - schedule: - - cron: '0 0 * * *' - workflow_dispatch: - pull_request: - -<% if common['honeycomb']['enabled'] or common['service_url'] %> -env: -<% if common['honeycomb']['enabled'] -%> - HONEYCOMB_WRITEKEY: <%= common['honeycomb']['writekey'] %> - HONEYCOMB_DATASET: <%= common['honeycomb']['dataset'] %> -<% end -%> -<% if common['service_url'] -%> - SERVICE_URL: <%= common['service_url'] %> -<% end -%> -<% end -%> - -jobs: - setup_matrix: - name: "Setup Test Matrix" - runs-on: ubuntu-20.04 - outputs: - spec_matrix: ${{ steps.get-matrix.outputs.spec_matrix }} - - steps: -<% if common['honeycomb']['enabled'] -%> - - name: "Honeycomb: Start recording" - uses: puppetlabs/kvrhdn-gha-buildevents@pdk-templates-v1 - with: - apikey: ${{ env.HONEYCOMB_WRITEKEY }} - dataset: ${{ env.HONEYCOMB_DATASET }} - job-status: ${{ job.status }} - - - name: "Honeycomb: Start first step" - run: | - echo STEP_ID=setup-environment >> $GITHUB_ENV - echo STEP_START=$(date +%s) >> $GITHUB_ENV -<% end -%> - - name: Checkout Source - uses: actions/checkout@v3 - if: ${{ github.repository_owner == '<%= common['owner'] %>' }} - - - name: Activate Ruby 2.7 - uses: ruby/setup-ruby@v1 - if: ${{ github.repository_owner == '<%= common['owner'] %>' }} - with: - ruby-version: "2.7" - bundler-cache: true - - - name: Print bundle environment - if: ${{ github.repository_owner == '<%= common['owner'] %>' }} - run: | - echo ::group::bundler environment - buildevents cmd $TRACE_ID $STEP_ID 'bundle env' -- bundle env - echo ::endgroup:: -<% if common['honeycomb']['enabled'] -%> - - name: "Honeycomb: Record Setup Environment time" - if: ${{ github.repository_owner == '<%= common['owner'] %>' }} - run: | - buildevents step $TRACE_ID $STEP_ID $STEP_START 'Setup Environment' - echo STEP_ID=Setup-Acceptance-Test-Matrix >> $GITHUB_ENV - echo STEP_START=$(date +%s) >> $GITHUB_ENV -<% end -%> - - name: Run Static & Syntax Tests - if: ${{ github.repository_owner == '<%= common['owner'] %>' }} - run: | - buildevents cmd $TRACE_ID $STEP_ID 'static_syntax_checks' -- bundle exec rake <%= @configs['checks'] %> - - - name: Setup Spec Test Matrix - id: get-matrix - run: | - if [ '${{ github.repository_owner }}' == '<%= common['owner'] %>' ]; then - buildevents cmd $TRACE_ID $STEP_ID matrix_from_metadata -- bundle exec matrix_from_metadata_v2 - else - echo "::set-output name=spec_matrix::{}" - fi -<% if common['honeycomb']['enabled'] -%> - - name: "Honeycomb: Record Setup Test Matrix time" - if: ${{ always() }} - run: | - buildevents step $TRACE_ID $STEP_ID $STEP_START 'Setup Test Matrix' -<% end -%> - Spec: - name: "Spec Tests (Puppet: ${{matrix.puppet_version}}, Ruby Ver: ${{matrix.ruby_version}})" - needs: - - setup_matrix - if: ${{ needs.setup_matrix.outputs.spec_matrix != '{}' }} - - runs-on: ubuntu-20.04 - strategy: - fail-fast: false - matrix: ${{fromJson(needs.setup_matrix.outputs.spec_matrix)}} - - env: - BUILDEVENT_FILE: '../buildevents.txt' - PUPPET_GEM_VERSION: ${{ matrix.puppet_version }} - FACTER_GEM_VERSION: 'https://github.com/puppetlabs/facter#main' - - steps: - - run: | - echo "SANITIZED_PUPPET_VERSION=$(echo '${{ matrix.puppet_version }}' | sed 's/~> //g')" >> $GITHUB_ENV - - - run: | - echo 'puppet_version=${{ env.SANITIZED_PUPPET_VERSION }}' >> $BUILDEVENT_FILE -<% if common['honeycomb']['enabled'] -%> - - name: "Honeycomb: Start first step" - run: | - echo "STEP_ID=${{ env.SANITIZED_PUPPET_VERSION }}-spec" >> $GITHUB_ENV - echo STEP_START=$(date +%s) >> $GITHUB_ENV - - - name: "Honeycomb: Start recording" - uses: puppetlabs/kvrhdn-gha-buildevents@pdk-templates-v1 - with: - apikey: ${{ env.HONEYCOMB_WRITEKEY }} - dataset: ${{ env.HONEYCOMB_DATASET }} - job-status: ${{ job.status }} - matrix-key: ${{ env.SANITIZED_PUPPET_VERSION }} -<% end -%> - - name: Checkout Source - uses: actions/checkout@v3 - - - name: "Activate Ruby ${{ matrix.ruby_version }}" - uses: ruby/setup-ruby@v1 - with: - ruby-version: ${{matrix.ruby_version}} - bundler-cache: true - - - name: Print bundle environment - run: | - echo ::group::bundler environment - buildevents cmd $TRACE_ID $STEP_ID 'bundle env' -- bundle env - echo ::endgroup:: - -<% if @configs['use_ruby_task_helper'] -%> - - name: Create task helper symlink - run: | - ln -s "${PWD}/spec/fixtures/modules/ruby_task_helper" .. -<% end -%> - - - name: Run parallel_spec tests - run: | - buildevents cmd $TRACE_ID $STEP_ID 'rake parallel_spec Puppet ${{ matrix.puppet_version }}, Ruby ${{ matrix.ruby_version }}' -- bundle exec rake parallel_spec -- GitLab