aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuchian Nemes <luchihoratiu@gmail.com>2021-12-23 17:59:03 +0200
committerLuchian Nemes <luchihoratiu@gmail.com>2022-01-06 15:07:07 +0200
commitc2a4f7cd15f380233bcf8aff5af304bdd0f47d4f (patch)
treeccf454a4c752a3b2f0969709ba697331a6b10a4f
parent515ae9466b33dcde8018588c389750834f49214d (diff)
downloadpuppet-sshkeys_core-c2a4f7cd15f380233bcf8aff5af304bdd0f47d4f.tar.gz
puppet-sshkeys_core-c2a4f7cd15f380233bcf8aff5af304bdd0f47d4f.tar.bz2
(MODULES-11073) Gather and set output data in GHA workflow
This commit exposes information about Puppet environment to be easily retrieved when checking the last passing CI.
-rw-r--r--.github/workflows/daily_unit_tests_with_nightly_puppet_gem.yaml68
-rw-r--r--.github/workflows/dispatch_unit_tests_with_nightly_puppet_gem.yaml129
2 files changed, 129 insertions, 68 deletions
diff --git a/.github/workflows/daily_unit_tests_with_nightly_puppet_gem.yaml b/.github/workflows/daily_unit_tests_with_nightly_puppet_gem.yaml
deleted file mode 100644
index fa160c7..0000000
--- a/.github/workflows/daily_unit_tests_with_nightly_puppet_gem.yaml
+++ /dev/null
@@ -1,68 +0,0 @@
----
-name: '[Daily] Unit Tests with nightly Puppet gem'
-
-on:
- workflow_dispatch:
-
-jobs:
- daily_unit_tests_with_nightly_puppet_gem:
- name: ${{ matrix.os_type }} / Puppet${{ matrix.puppet_version }} gem / Ruby ${{ matrix.ruby }}
- strategy:
- matrix:
- os: [ 'ubuntu-18.04', 'macos-10.15', 'windows-2016' ]
- puppet_version: [ 6, 7 ]
- include:
- - puppet_version: 6
- ruby: 2.5
- - puppet_version: 7
- ruby: 2.7
-
- - os: 'ubuntu-18.04'
- os_type: 'Linux'
- env_set_cmd: 'export '
- gem_file: 'puppet-latest.gem'
- - os: 'macos-10.15'
- os_type: 'macOS'
- env_set_cmd: 'export '
- gem_file: 'puppet-latest-universal-darwin.gem'
- - os: 'windows-2016'
- os_type: 'Windows'
- env_set_cmd: '$env:'
- gem_file: 'puppet-latest-x64-mingw32.gem'
-
- runs-on: ${{ matrix.os }}
- steps:
- - name: Checkout code
- uses: actions/checkout@v2
-
- - name: Install ruby version ${{ matrix.ruby }}
- uses: ruby/setup-ruby@v1
- with:
- ruby-version: ${{ matrix.ruby }}
-
- - name: Install the latest nightly build of puppet${{ matrix.puppet_version }} gem
- run: |
- curl http://nightlies.puppet.com/downloads/gems/puppet${{ matrix.puppet_version }}-nightly/${{ matrix.gem_file }} --output puppet.gem
- gem install puppet.gem -N
-
- - name: Prepare testing environment with bundler
- run: |
- git config --global core.longpaths true
- bundle config set system 'true'
- bundle config set --local without 'release'
- ${{ matrix.env_set_cmd }}PUPPET_GEM_VERSION=$(ruby -e 'puts /puppet\s+\((.+)\)/.match(`gem list -eld puppet`)[1]')
- bundle update --jobs 4 --retry 3
-
- - name: Run unit tests
- run: bundle exec rake parallel_spec
-
- notify-via-slack:
- name: Notify workflow conclusion via Slack
- if: ${{ always() }}
- needs: daily_unit_tests_with_nightly_puppet_gem
- runs-on: 'ubuntu-latest'
- steps:
- - uses: luchihoratiu/notify-via-slack@main
- with:
- SLACK_CHANNEL: ${{ secrets.SLACK_CHANNEL }}
- SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
diff --git a/.github/workflows/dispatch_unit_tests_with_nightly_puppet_gem.yaml b/.github/workflows/dispatch_unit_tests_with_nightly_puppet_gem.yaml
new file mode 100644
index 0000000..a0b2248
--- /dev/null
+++ b/.github/workflows/dispatch_unit_tests_with_nightly_puppet_gem.yaml
@@ -0,0 +1,129 @@
+---
+name: '[Dispatched] Unit Tests with nightly Puppet gem'
+
+on:
+ workflow_dispatch:
+ inputs:
+ pa_ref:
+ description: 'Puppet Agent SHA to use in this run'
+
+jobs:
+ set_output_data:
+ name: 'Prepare input and output data'
+ runs-on: 'ubuntu-latest'
+ outputs:
+ puppet_sha: ${{ steps.setup_world.outputs.puppet_sha }}
+ ruby_version: ${{ steps.setup_world.outputs.ruby_version }}
+ puppet_version: ${{ steps.setup_world.outputs.puppet_version }}
+ puppet_short_commit: ${{ steps.setup_world.outputs.puppet_short_commit }}
+
+ steps:
+ - name: Gather and set data
+ id: setup_world
+ run: |
+ pa_ref=${{ github.event.inputs.pa_ref }}
+ res=$(curl -s https://raw.githubusercontent.com/puppetlabs/puppet-agent/${pa_ref}/configs/components/puppet.json)
+
+ puppet_remote=$(echo $res | cut -d '"' -f 4)
+ puppet_sha=$(echo $res | cut -d '"' -f 8)
+
+ mkdir puppet
+ pushd puppet
+ git init
+ git remote add origin ${puppet_remote}
+ git fetch
+ puppet_short_commit=$(git describe ${puppet_sha} | sed -r 's/-/./g' | rev | cut -c 4- | rev)
+ puppet_version=${puppet_short_commit:0:1}
+ popd
+ rm -rf puppet
+
+ case $puppet_version in
+ 6)
+ ruby_version='2.5'
+ ;;
+ 7)
+ ruby_version='2.7'
+ ;;
+ esac
+
+ echo "::set-output name=puppet_sha::$puppet_sha"
+ echo "::set-output name=ruby_version::$ruby_version"
+ echo "::set-output name=puppet_version::$puppet_version"
+ echo "::set-output name=puppet_short_commit::$puppet_short_commit"
+
+ - name: "Puppet Agent SHA: ${{ github.event.inputs.pa_ref }}"
+ run: "echo ${{ github.event.inputs.pa_ref }}"
+
+ - name: "Puppet SHA: ${{ steps.setup_world.outputs.puppet_sha }}"
+ run: "echo ${{ steps.setup_world.outputs.puppet_sha }}"
+
+ - name: "Puppet Short Commit: ${{ steps.setup_world.outputs.puppet_short_commit }}"
+ run: "echo ${{ steps.setup_world.outputs.puppet_short_commit }}"
+
+ - name: "Puppet Version: ${{ steps.setup_world.outputs.puppet_version }}"
+ run: "echo ${{ steps.setup_world.outputs.puppet_version }}"
+
+ - name: "Ruby Version: ${{ steps.setup_world.outputs.ruby_version }}"
+ run: "echo ${{ steps.setup_world.outputs.ruby_version }}"
+
+ unit_tests_with_nightly_puppet_gem:
+ name: ${{ matrix.os_type }} / Puppet${{ needs.set_output_data.outputs.puppet_version }} gem / Ruby${{ needs.set_output_data.outputs.ruby_version }}
+ needs: set_output_data
+ env:
+ puppet_version: ${{ needs.set_output_data.outputs.puppet_version }}
+ ruby_version: ${{ needs.set_output_data.outputs.ruby_version }}
+
+ strategy:
+ matrix:
+ os: [ 'ubuntu-18.04', 'macos-10.15', 'windows-2016' ]
+ include:
+ - os: 'ubuntu-18.04'
+ os_type: 'Linux'
+ env_set_cmd: 'export '
+ gem_file_postfix: '.gem'
+ - os: 'macos-10.15'
+ os_type: 'macOS'
+ env_set_cmd: 'export '
+ gem_file_postfix: '-universal-darwin.gem'
+ - os: 'windows-2016'
+ os_type: 'Windows'
+ env_set_cmd: '$env:'
+ gem_file_postfix: '-x64-mingw32.gem'
+
+ runs-on: ${{ matrix.os }}
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v2
+
+ - name: Install ruby version ${{ env.ruby_version }}
+ uses: ruby/setup-ruby@v1
+ with:
+ ruby-version: ${{ env.ruby_version }}
+
+ - name: Install the latest nightly build of puppet${{ env.puppet_version }} gem
+ run: |
+ curl http://nightlies.puppet.com/downloads/gems/puppet${{ env.puppet_version }}-nightly/puppet-${{ needs.set_output_data.outputs.puppet_short_commit }}${{ matrix.gem_file_postfix }} --output puppet.gem
+ gem install puppet.gem -N
+
+ - name: Prepare testing environment with bundler
+ run: |
+ git config --global core.longpaths true
+ bundle config set system 'true'
+ bundle config set --local without 'release'
+
+ ${{ matrix.env_set_cmd }}PUPPET_GEM_VERSION=${{ needs.set_output_data.outputs.puppet_short_commit }}
+ bundle update --jobs 4 --retry 3
+
+ - name: Run unit tests
+ run: bundle exec rake parallel_spec
+
+ notify-via-slack:
+ name: Notify workflow conclusion via Slack
+ if: ${{ always() }}
+ needs: unit_tests_with_nightly_puppet_gem
+ runs-on: 'ubuntu-latest'
+ steps:
+ - uses: luchihoratiu/notify-via-slack@main
+ with:
+ SLACK_CHANNEL: ${{ secrets.SLACK_CHANNEL }}
+ SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}