From 1bba644da5419841119e34760691f268d2893e3e Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 30 Jan 2023 09:08:16 -0500 Subject: [PATCH 1/5] Add jruby-9.4 to testing --- .github/workflows/testing.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 068495e..86955f6 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -19,8 +19,9 @@ jobs: matrix: ruby-version: - 'jruby-9.3.6.0' + - 'jruby-9.4.0.0' steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: @@ -35,8 +36,9 @@ jobs: matrix: ruby-version: - 'jruby-9.3.6.0' + - 'jruby-9.4.0.0' steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: From b672364a5388f3824e84dd74ffbbc7c058588f5a Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 30 Jan 2023 09:08:27 -0500 Subject: [PATCH 2/5] Update release workflow --- .github/workflows/release.yml | 66 +++++++++++++++++++++++++++++++---- 1 file changed, 59 insertions(+), 7 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e0538bf..1ed0981 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,4 +1,4 @@ -name: Release +name: Release Gem on: workflow_dispatch @@ -7,25 +7,77 @@ jobs: runs-on: ubuntu-latest if: github.repository == 'puppetlabs/vmpooler-provider-ec2' steps: - - uses: actions/checkout@v2 - - name: Get Version - id: gv + - uses: actions/checkout@v3 + + - name: Get Current Version + uses: actions/github-script@v6 + id: cv + with: + script: | + const { data: response } = await github.rest.repos.getLatestRelease({ + owner: context.repo.owner, + repo: context.repo.repo, + }) + console.log(`The latest release is ${response.tag_name}`) + return response.tag_name + result-encoding: string + + - name: Get Next Version + id: nv run: | - echo "::set-output name=ver::$(grep VERSION lib/vmpooler-provider-ec2/version.rb |rev |cut -d "'" -f2 |rev)" + version=$(grep VERSION lib/vmpooler-provider-ec2/version.rb |rev |cut -d "'" -f2 |rev) + echo "version=$version" >> $GITHUB_OUTPUT + echo "Found version $version from lib/vmpooler-provider-ec2/version.rb" + + - name: Generate Changelog + uses: docker://githubchangeloggenerator/github-changelog-generator:1.16.2 + with: + args: >- + --future-release ${{ steps.nv.outputs.version }} + env: + CHANGELOG_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Validate Changelog + run : | + set -e + if [[ -n $(git status --porcelain) ]]; then + echo "Here is the current git status:" + git status + echo + echo "The following changes were detected:" + git --no-pager diff + echo "Uncommitted PRs found in the changelog. Please submit a release prep PR of changes after running `./update-changelog`" + exit 1 + fi + + - name: Generate Release Notes + uses: docker://githubchangeloggenerator/github-changelog-generator:1.16.2 + with: + args: >- + --since-tag ${{ steps.cv.outputs.result }} + --future-release ${{ steps.nv.outputs.version }} + --output release-notes.md + env: + CHANGELOG_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Tag Release uses: ncipollo/release-action@v1 with: - tag: ${{ steps.gv.outputs.ver }} + tag: ${{ steps.nv.outputs.version }} token: ${{ secrets.GITHUB_TOKEN }} + bodyfile: release-notes.md draft: false prerelease: false - generateReleaseNotes: true + + # This step should closely match what is used in `docker/Dockerfile` in vmpooler-deployment - name: Install Ruby jruby-9.3.6.0 uses: ruby/setup-ruby@v1 with: ruby-version: 'jruby-9.3.6.0' + - name: Build gem run: gem build *.gemspec + - name: Publish gem run: | mkdir -p $HOME/.gem From 845de6b3533bea7bc6f55bf00a3493a908a02e45 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 30 Jan 2023 09:24:55 -0500 Subject: [PATCH 3/5] Add changelog and release instructions --- .github_changelog_generator | 3 +++ CHANGELOG.md | 37 +++++++++++++++++++++++++++++++++++++ README.md | 26 ++++++++++++++++++++++++++ update-changelog | 5 +++++ update-gemfile-lock | 7 +++++++ 5 files changed, 78 insertions(+) create mode 100644 .github_changelog_generator create mode 100644 CHANGELOG.md create mode 100755 update-changelog create mode 100755 update-gemfile-lock diff --git a/.github_changelog_generator b/.github_changelog_generator new file mode 100644 index 0000000..0572251 --- /dev/null +++ b/.github_changelog_generator @@ -0,0 +1,3 @@ +project=vmpooler-provider-ec2 +user=puppetlabs +exclude_labels=maintenance \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..375e395 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,37 @@ +# Changelog + +## [Unreleased](https://github.com/puppetlabs/vmpooler-provider-ec2/tree/HEAD) + +[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-ec2/compare/0.0.2...HEAD) + +**Merged pull requests:** + +- \(RE-15111\) Migrate Snyk to Mend Scanning [\#12](https://github.com/puppetlabs/vmpooler-provider-ec2/pull/12) ([yachub](https://github.com/yachub)) +- \(RE-14811\) Remove DIO as codeowners [\#11](https://github.com/puppetlabs/vmpooler-provider-ec2/pull/11) ([yachub](https://github.com/yachub)) +- Add Snyk action [\#10](https://github.com/puppetlabs/vmpooler-provider-ec2/pull/10) ([yachub](https://github.com/yachub)) +- Add release-engineering to codeowners [\#9](https://github.com/puppetlabs/vmpooler-provider-ec2/pull/9) ([yachub](https://github.com/yachub)) + +## [0.0.2](https://github.com/puppetlabs/vmpooler-provider-ec2/tree/0.0.2) (2022-08-02) + +[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-ec2/compare/0.0.1...0.0.2) + +**Merged pull requests:** + +- Update version.rb [\#8](https://github.com/puppetlabs/vmpooler-provider-ec2/pull/8) ([sbeaulie](https://github.com/sbeaulie)) + +## [0.0.1](https://github.com/puppetlabs/vmpooler-provider-ec2/tree/0.0.1) (2022-08-02) + +[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-ec2/compare/be877a20c5dc7b7ba839ca2c046c6407d1ed22b4...0.0.1) + +**Merged pull requests:** + +- \(DIO-3163\) Implement Cloud DNS for EC2 VMs [\#7](https://github.com/puppetlabs/vmpooler-provider-ec2/pull/7) ([sbeaulie](https://github.com/sbeaulie)) +- \(DIO-3163\) Code improvements after initial testing in vmpooler [\#6](https://github.com/puppetlabs/vmpooler-provider-ec2/pull/6) ([sbeaulie](https://github.com/sbeaulie)) +- Revert "Update net-ssh requirement from ~\> 6.2.0.rc2 to \>= 6.2, \< 7.1" [\#4](https://github.com/puppetlabs/vmpooler-provider-ec2/pull/4) ([sbeaulie](https://github.com/sbeaulie)) +- Change the way we load secrets so that we do not have to pass them as… [\#3](https://github.com/puppetlabs/vmpooler-provider-ec2/pull/3) ([sbeaulie](https://github.com/sbeaulie)) +- Update net-ssh requirement from ~\> 6.2.0.rc2 to \>= 6.2, \< 7.1 [\#2](https://github.com/puppetlabs/vmpooler-provider-ec2/pull/2) ([dependabot[bot]](https://github.com/apps/dependabot)) +- Added aws dependency and renamed directories [\#1](https://github.com/puppetlabs/vmpooler-provider-ec2/pull/1) ([sbeaulie](https://github.com/sbeaulie)) + + + +\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)* diff --git a/README.md b/README.md index 2909f3f..9d79a66 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,15 @@ # vmpooler-provider-aws +- [vmpooler-provider-aws](#vmpooler-provider-aws) + - [Usage](#usage) + - [Provisioning the new nodes](#provisioning-the-new-nodes) + - [DNS](#dns) + - [Labels](#labels) + - [Pre-requisite](#pre-requisite) + - [Update the Gemfile Lock](#update-the-gemfile-lock) + - [Releasing](#releasing) + - [License](#license) + This is a provider for [VMPooler](https://github.com/puppetlabs/vmpooler) allows using aws to create instances, disks, snapshots, or destroy instances for specific pools. @@ -55,6 +65,22 @@ do not have the pool label, and can be configured to allow a specific list of un - An IAM user must exist in the target AWS account with permissions to create, delete vms etc - if using DNS see section above, and a service account with permissions to change Cloud DNS need to exist +## Update the Gemfile Lock + +To update the `Gemfile.lock` run `./update-gemfile-lock`. + +Verify, and update if needed, that the docker tag in the script and GitHub action workflows matches what is used in the [vmpooler-deployment Dockerfile](https://github.com/puppetlabs/vmpooler-deployment/blob/main/docker/Dockerfile). + +## Releasing + +Follow these steps to publish a new GitHub release, and build and push the gem to . + +1. Bump the "VERSION" in `lib/vmpooler-provider-ec2/version.rb` appropriately based on changes in `CHANGELOG.md` since the last release. +2. Run `./update-gemfile-lock` to update `Gemfile.lock`. +3. Run `./update-changelog` to update `CHANGELOG.md`. +4. Commit and push changes to a new branch, then open a pull request against `main` and be sure to add the "maintenance" label. +5. After the pull request is approved and merged, then navigate to Actions --> Release Gem --> run workflow --> Branch: main --> Run workflow. + ## License vmpooler-provider-aws is distributed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html). See the [LICENSE](LICENSE) file for more details. \ No newline at end of file diff --git a/update-changelog b/update-changelog new file mode 100755 index 0000000..f3949d4 --- /dev/null +++ b/update-changelog @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +docker run -it --rm -e CHANGELOG_GITHUB_TOKEN -v $(pwd):/usr/local/src/your-app \ + githubchangeloggenerator/github-changelog-generator:1.16.2 \ + github_changelog_generator --future-release $(grep VERSION lib/vmpooler-provider-ec2/version.rb |rev |cut -d "'" -f2 |rev) diff --git a/update-gemfile-lock b/update-gemfile-lock new file mode 100755 index 0000000..74e9c78 --- /dev/null +++ b/update-gemfile-lock @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +# The container tag should closely match what is used in `docker/Dockerfile` in vmpooler-deployment +docker run -it --rm \ + -v $(pwd):/app \ + jruby:9.3.6-jdk \ + /bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends make git && cd /app && gem install bundler && bundle install --jobs 3 && bundle update; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"' From 4287880807690a6c66df70dd43dc9c2f221a6fcb Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 30 Jan 2023 09:25:15 -0500 Subject: [PATCH 4/5] vmpooler should be a dependency --- Gemfile.lock | 253 ++++++++++++++++++++++++++++++++++ vmpooler-provider-ec2.gemspec | 6 +- 2 files changed, 255 insertions(+), 4 deletions(-) create mode 100644 Gemfile.lock diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..a1f1434 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,253 @@ +PATH + remote: . + specs: + vmpooler-provider-ec2 (0.0.2) + aws-sdk-ec2 (~> 1) + net-ssh (>= 6.2, < 7.1) + vmpooler (~> 2.3, >= 1.3.0) + vmpooler-provider-gce (~> 0.4, >= 0.4.0) + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.1) + public_suffix (>= 2.0.2, < 6.0) + ast (2.4.2) + aws-eventstream (1.2.0) + aws-partitions (1.701.0) + aws-sdk-core (3.170.0) + aws-eventstream (~> 1, >= 1.0.2) + aws-partitions (~> 1, >= 1.651.0) + aws-sigv4 (~> 1.5) + jmespath (~> 1, >= 1.6.1) + aws-sdk-ec2 (1.361.0) + aws-sdk-core (~> 3, >= 3.165.0) + aws-sigv4 (~> 1.1) + aws-sigv4 (1.5.2) + aws-eventstream (~> 1, >= 1.0.2) + bindata (2.4.14) + builder (3.2.4) + climate_control (1.2.0) + coderay (1.1.3) + concurrent-ruby (1.2.0) + connection_pool (2.3.0) + declarative (0.0.20) + deep_merge (1.2.2) + diff-lcs (1.5.0) + docile (1.4.0) + faraday (2.7.4) + faraday-net_http (>= 2.0, < 3.1) + ruby2_keywords (>= 0.0.4) + faraday-net_http (3.0.2) + ffi (1.15.5-java) + google-apis-compute_v1 (0.60.0) + google-apis-core (>= 0.9.1, < 2.a) + google-apis-core (0.10.0) + addressable (~> 2.5, >= 2.5.1) + googleauth (>= 0.16.2, < 2.a) + httpclient (>= 2.8.1, < 3.a) + mini_mime (~> 1.0) + representable (~> 3.0) + retriable (>= 2.0, < 4.a) + rexml + webrick + google-apis-dns_v1 (0.29.0) + google-apis-core (>= 0.9.1, < 2.a) + google-cloud-core (1.6.0) + google-cloud-env (~> 1.0) + google-cloud-errors (~> 1.0) + google-cloud-dns (0.35.1) + google-apis-dns_v1 (~> 0.1) + google-cloud-core (~> 1.6) + googleauth (>= 0.16.2, < 2.a) + zonefile (~> 1.04) + google-cloud-env (1.6.0) + faraday (>= 0.17.3, < 3.0) + google-cloud-errors (1.3.0) + googleauth (1.2.0) + faraday (>= 0.17.3, < 3.a) + jwt (>= 1.4, < 3.0) + memoist (~> 0.16) + multi_json (~> 1.11) + os (>= 0.9, < 2.0) + signet (>= 0.16, < 2.a) + httpclient (2.8.3) + jmespath (1.6.2) + jwt (2.6.0) + memoist (0.16.2) + method_source (1.0.0) + mini_mime (1.1.2) + mock_redis (0.36.0) + ruby2_keywords + multi_json (1.15.0) + mustermann (2.0.2) + ruby2_keywords (~> 0.0.1) + net-ldap (0.17.1) + net-ssh (7.0.1) + nio4r (2.5.8-java) + opentelemetry-api (1.1.0) + opentelemetry-common (0.19.6) + opentelemetry-api (~> 1.0) + opentelemetry-exporter-jaeger (0.20.1) + opentelemetry-api (~> 1.0) + opentelemetry-common (~> 0.19.2) + opentelemetry-sdk (~> 1.0) + thrift + opentelemetry-instrumentation-base (0.19.0) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-concurrent_ruby (0.19.2) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.19.0) + opentelemetry-instrumentation-http_client (0.19.4) + opentelemetry-api (~> 1.0) + opentelemetry-common (~> 0.19.3) + opentelemetry-instrumentation-base (~> 0.19.0) + opentelemetry-instrumentation-redis (0.21.3) + opentelemetry-api (~> 1.0) + opentelemetry-common (~> 0.19.3) + opentelemetry-instrumentation-base (~> 0.19.0) + opentelemetry-instrumentation-sinatra (0.19.3) + opentelemetry-api (~> 1.0) + opentelemetry-common (~> 0.19.3) + opentelemetry-instrumentation-base (~> 0.19.0) + opentelemetry-registry (0.2.0) + opentelemetry-api (~> 1.1) + opentelemetry-resource_detectors (0.19.1) + google-cloud-env + opentelemetry-sdk + opentelemetry-sdk (1.2.0) + opentelemetry-api (~> 1.1) + opentelemetry-common (~> 0.19.3) + opentelemetry-registry (~> 0.2) + opentelemetry-semantic_conventions + opentelemetry-semantic_conventions (1.8.0) + opentelemetry-api (~> 1.0) + os (1.1.4) + parallel (1.22.1) + parser (3.2.0.0) + ast (~> 2.4.1) + pickup (0.0.11) + prometheus-client (2.1.0) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + public_suffix (5.0.1) + puma (5.6.5-java) + nio4r (~> 2.0) + rack (2.2.6.2) + rack-protection (2.2.4) + rack + rack-test (2.0.2) + rack (>= 1.3) + rainbow (3.1.1) + rake (13.0.6) + redis (4.8.0) + regexp_parser (2.6.2) + representable (3.2.0) + declarative (< 0.1.0) + trailblazer-option (>= 0.1.1, < 0.2.0) + uber (< 0.2.0) + retriable (3.1.2) + rexml (3.2.5) + rspec (3.12.0) + rspec-core (~> 3.12.0) + rspec-expectations (~> 3.12.0) + rspec-mocks (~> 3.12.0) + rspec-core (3.12.0) + rspec-support (~> 3.12.0) + rspec-expectations (3.12.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.12.0) + rspec-mocks (3.12.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.12.0) + rspec-support (3.12.0) + rubocop (1.28.2) + parallel (~> 1.10) + parser (>= 3.1.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml + rubocop-ast (>= 1.17.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 1.4.0, < 3.0) + rubocop-ast (1.24.1) + parser (>= 3.1.1.0) + ruby-progressbar (1.11.0) + ruby2_keywords (0.0.5) + signet (0.17.0) + addressable (~> 2.8) + faraday (>= 0.17.5, < 3.a) + jwt (>= 1.5, < 3.0) + multi_json (~> 1.10) + simplecov (0.22.0) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + sinatra (2.2.4) + mustermann (~> 2.0) + rack (~> 2.2) + rack-protection (= 2.2.4) + tilt (~> 2.0) + spicy-proton (2.1.15) + bindata (~> 2.3) + spoon (0.0.6) + ffi + statsd-ruby (1.5.0) + thor (1.2.1) + thrift (0.17.0) + tilt (2.0.11) + trailblazer-option (0.1.2) + uber (0.1.0) + unicode-display_width (2.4.2) + vmpooler (2.4.0) + concurrent-ruby (~> 1.1) + connection_pool (~> 2.2) + deep_merge (~> 1.2) + net-ldap (~> 0.16) + opentelemetry-exporter-jaeger (= 0.20.1) + opentelemetry-instrumentation-concurrent_ruby (= 0.19.2) + opentelemetry-instrumentation-http_client (= 0.19.4) + opentelemetry-instrumentation-redis (= 0.21.3) + opentelemetry-instrumentation-sinatra (= 0.19.3) + opentelemetry-resource_detectors (= 0.19.1) + opentelemetry-sdk (~> 1.0, >= 1.0.2) + pickup (~> 0.0.11) + prometheus-client (~> 2.0) + puma (~> 5.0, >= 5.0.4) + rack (~> 2.2) + rake (~> 13.0) + redis (~> 4.1) + sinatra (~> 2.0) + spicy-proton (~> 2.1) + statsd-ruby (~> 1.4) + vmpooler-provider-gce (0.4.0) + google-apis-compute_v1 (~> 0.14) + google-cloud-dns (~> 0.35.1) + googleauth (>= 0.16.2, < 1.3.0) + webrick (1.8.1) + yarjuf (2.0.0) + builder + rspec (~> 3) + zonefile (1.06) + +PLATFORMS + universal-java-1.8 + +DEPENDENCIES + climate_control (>= 0.2.0) + mock_redis (>= 0.17.0) + pry + rack-test (>= 0.6) + rspec (>= 3.2) + rubocop (~> 1.28.2) + simplecov (>= 0.11.2) + thor (~> 1.0, >= 1.0.1) + vmpooler-provider-ec2! + yarjuf (>= 2.0) + +BUNDLED WITH + 2.4.5 diff --git a/vmpooler-provider-ec2.gemspec b/vmpooler-provider-ec2.gemspec index e084e70..5f7cdd9 100644 --- a/vmpooler-provider-ec2.gemspec +++ b/vmpooler-provider-ec2.gemspec @@ -17,10 +17,8 @@ Gem::Specification.new do |s| s.require_paths = ["lib"] s.add_dependency 'aws-sdk-ec2', '~> 1' s.add_dependency 'net-ssh', '>= 6.2', '< 7.1' - - s.add_development_dependency 'vmpooler', '>= 1.3.0', '~> 2.3' - #s.add_development_dependency 'vmpooler-provider-gce', '>= 0.4.0', '~> 0.4' - s.add_development_dependency 'vmpooler-provider-gce', '>= 0.4.0', '~> 0.4' + s.add_dependency 'vmpooler', '>= 1.3.0', '~> 2.3' + s.add_dependency 'vmpooler-provider-gce', '>= 0.4.0', '~> 0.4' # Testing dependencies s.add_development_dependency 'climate_control', '>= 0.2.0' From c2582e9fb2c00788514d9ef01cd3dd7127a8ba6a Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 30 Jan 2023 14:58:28 -0500 Subject: [PATCH 5/5] Add platform universal-java-11 to lockfile --- Gemfile.lock | 1 + 1 file changed, 1 insertion(+) diff --git a/Gemfile.lock b/Gemfile.lock index a1f1434..5d95955 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -236,6 +236,7 @@ GEM PLATFORMS universal-java-1.8 + universal-java-11 DEPENDENCIES climate_control (>= 0.2.0)