From b18a443e4be56ce5501e38b105917546d41fdae7 Mon Sep 17 00:00:00 2001 From: Eric Griswold Date: Mon, 1 Jul 2024 14:16:04 -0700 Subject: [PATCH] RE-16207: Create a 3.8.0 release / script cleanup In the process of doing a 3.8.0 release, I also found some places where scripts needed some care and documentation updated/clarified. --- CHANGELOG.md | 16 ++++++ README.md | 36 ++++++-------- build-chart | 7 ++- docs/index.yaml | 87 +++++++++++++++++++-------------- helm-charts/vmpooler/Chart.yaml | 2 +- helm-package | 12 +++++ update-changelog | 12 +++-- 7 files changed, 110 insertions(+), 62 deletions(-) create mode 100644 helm-package diff --git a/CHANGELOG.md b/CHANGELOG.md index 750b807..131eac6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Changelog +## [3.8.0](https://github.com/puppetlabs/vmpooler-deployment/tree/3.8.0) (2024-07-01) + +[Full Changelog](https://github.com/puppetlabs/vmpooler-deployment/compare/3.7.0...3.8.0) + +**Implemented enhancements:** + +- \(RE-15696\) Local Development - Add Grafana and remove redis mount [\#147](https://github.com/puppetlabs/vmpooler-deployment/pull/147) ([yachub](https://github.com/yachub)) + +**Fixed bugs:** + +- vsphere [\#153](https://github.com/puppetlabs/vmpooler-deployment/issues/153) + +**Merged pull requests:** + +- Bump jruby from 9.4.3.0-jdk11 to 9.4.5.0-jdk11 in /docker [\#149](https://github.com/puppetlabs/vmpooler-deployment/pull/149) ([dependabot[bot]](https://github.com/apps/dependabot)) + ## [3.7.0](https://github.com/puppetlabs/vmpooler-deployment/tree/3.7.0) (2023-10-05) [Full Changelog](https://github.com/puppetlabs/vmpooler-deployment/compare/3.6.0...3.7.0) diff --git a/README.md b/README.md index d1ea7fe..c7d7202 100644 --- a/README.md +++ b/README.md @@ -12,11 +12,11 @@ - [Contributing](#contributing) - [License](#license) -This repo contains Dockerfiles and a Helm chart that can be used to deploy [VMPooler](https://github.com/puppetlabs/vmpooler). The Release Engineering team at Puppet uses the code here as part of operating our VMPooler instances. +Contains Dockerfiles and a Helm chart that are used to deploy [VMPooler](https://github.com/puppetlabs/vmpooler). ## VMPooler Components -The docker image gnerated and hosted by this project contain the following VMPooler components: +The docker image contains these VMPooler components: - [VMPooler Core](https://github.com/puppetlabs/vmpooler) - [VMPooler Google CloudDNS Plugin](https://github.com/puppetlabs/vmpooler-dns-google-clouddns) @@ -26,34 +26,34 @@ The docker image gnerated and hosted by this project contain the following VMPoo ## Docker Registry -The GitHub Actions in this repository publish images to GitHub Packages. You can browse the VMPooler containers [here](https://github.com/puppetlabs/vmpooler-deployment/pkgs/container/vmpooler-deployment%2Fvmpooler). +GitHub Actions publishes images to GitHub Packages. Browse the VMPooler containers: https://github.com/puppetlabs/vmpooler-deployment/pkgs/container/vmpooler-deployment%2Fvmpooler -The vmpooler officially released docker image tags use a semantic version, where the version increments correlate to the increments in any of the gems at `docker/Gemfile`. +The vmpooler released docker image tags use semantic versioning; the version increments correlate to the increments in any of the gems at `docker/Gemfile`. Image tags starting with `pr-` are generated when opening and pushing to a pull request and will periodically be cleaned up. ## Helm Repository -The `docs/` folder in this repository represents a Helm repository served via GitHub Pages at https://puppetlabs.github.io/vmpooler-deployment/ +The `docs` folder represents a Helm repository served via GitHub Pages at https://puppetlabs.github.io/vmpooler-deployment ```bash -$ helm repo add vmpooler-deployment https://puppetlabs.github.io/vmpooler-deployment/ +$ helm repo add vmpooler-deployment https://puppetlabs.github.io/vmpooler-deployment "vmpooler-deployment" has been added to your repositories ``` ### Adding / updating charts -Make the desired changes to the helm chart in helm-charts/vmpooler and run `./update-chart`. +Update the helm chart in helm-charts/vmpooler. Run `./update-chart`. ## Development Prerequisites: -- [Docker](https://docs.docker.com/engine/install/) -- [Docker Compose](https://docs.docker.com/compose/install/) +- [Docker](https://docs.docker.com/engine/install) +- [Docker Compose](https://docs.docker.com/compose/install) 1. Become familiar with the configuration file `docker/vmpooler.yaml` as described in [VMPooler](https://github.com/puppetlabs/vmpooler) Core. - - The default configuration file only enables the dummy provider built into [VMPooler](https://github.com/puppetlabs/vmpooler) Core. See each project below for documentation on how to use provider specific options: + - The default configuration file enables the dummy provider built into [VMPooler](https://github.com/puppetlabs/vmpooler) Core. See each project for documentation on how to use provider specific options: - [vmpooler-provider-ec2](https://github.com/puppetlabs/vmpooler-provider-ec2) - [vmpooler-provider-gce](https://github.com/puppetlabs/vmpooler-provider-gce) - [vmpooler-provider-vsphere](https://github.com/puppetlabs/vmpooler-provider-vsphere) @@ -81,11 +81,11 @@ Prerequisites: 3. Run `./update-gemfile-lock` to update the `Gemfile.lock` 4. Run `docker compose build && docker compose up`. -When a dependency Helm chart is updated, be sure to run `./update-chart-lock` to update the lockfile, otherwise the test and release workflows will fail. +When a dependency Helm chart is updated, always run `./update-chart-lock` to update the lockfile, otherwise the test and release workflows will fail. ### Docker Compose URLs -These are the default ports used in the docker compose file, to change them edit the `ports` key under the desired service in either `docker/docker-compose.yml` or `docker/docker-compose.local.yml`. +These are the default ports used in the docker compose file. To change them edit the `ports` key under the service in either `docker/docker-compose.yml` or `docker/docker-compose.local.yml`. Tracing data is sent to the Jaeger instance, a prometheus server scrapes metrics, and both are pre-configured in Grafana as datasources for easy visualization and history of data. @@ -115,22 +115,18 @@ Artifactory Example: Create a GitHub tag and release, publish a new docker image, and helm chart by opening a release prep pull request and running the release action below. -**NOTE**: Due to the GitHub limitation that does not allow any method of bypassing status checks on a protected branch, the process below will technically publish the helm chart pointing to a nonexistent docker tag until the release workflow is run. +**NOTE**: Due to the GitHub limitation that does not allow any method of bypassing status checks on a protected branch, the process below will publish the helm chart pointing to a nonexistent docker tag until the release workflow is run. -1. Bump the "appVersion" key in `helm-charts/vmpooler/Chart.yaml` appropriately based on changes to `docker/Gemfile` and `docker/Gemfile.lock` in merged pull requests since the last release. +1. Increment the "appVersion" key in `helm-charts/vmpooler/Chart.yaml` appropriately based on changes to `docker/Gemfile` and `docker/Gemfile.lock` in merged pull requests since the last release. - This key pertains to the docker tag that will be pushed upon release. -2. Bump the "version" key in `helm-charts/vmpooler/Chart.yaml` appropriately based on changes to the chart itself and increments of the "appVersion" in merged pull requests since the last release. +2. Increment the "version" key in `helm-charts/vmpooler/Chart.yaml` appropriately based on changes to the chart itself and increments of the "appVersion" in merged pull requests since the last release. - This key pertains to the helm chart verison that will be pushed upon release. 3. Run `./update-changelog` to update `CHANGELOG.md`. 4. Run `./build-chart` to package the new chart and update the repo index. -5. Commit and push changes to a new branch, then open a pull request against `main` and be sure to add the "maintenance" label. +5. Commit and push changes to a new branch then open a pull request against `main` and be sure to add the "maintenance" label. 6. After the pull request is approved and merged, then navigate to Actions --> Docker and Helm Release --> run workflow --> Branch: main --> Run workflow. - This action will push a tagged docker image to the GitHub container registry and helm chart to GitHub pages. -## Contributing - -We welcome and encourage contributions! - ## License vmpooler-deployment 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. diff --git a/build-chart b/build-chart index ffe8010..cfb6c32 100755 --- a/build-chart +++ b/build-chart @@ -1,4 +1,7 @@ #!/usr/bin/env bash -docker run --rm -it -v $(pwd):/apps --entrypoint /bin/sh alpine/helm \ - -c 'helm repo add bitnami https://charts.bitnami.com/bitnami && cd /apps/helm-charts/vmpooler && helm dependency update && cd /apps/docs && helm package ../helm-charts/* && helm repo index --url https://puppetlabs.github.io/vmpooler-deployment/ .' +set -e +set -x + +docker run --rm --interactive --tty --volume=$(pwd):/apps \ + --entrypoint /bin/sh alpine/helm ./helm-package diff --git a/docs/index.yaml b/docs/index.yaml index 567f877..492186b 100644 --- a/docs/index.yaml +++ b/docs/index.yaml @@ -3,7 +3,22 @@ entries: vmpooler: - apiVersion: v2 appVersion: 5.6.0 - created: "2023-10-05T19:54:50.312950505Z" + created: "2024-07-01T21:04:47.485641439Z" + dependencies: + - name: redis + repository: https://charts.bitnami.com/bitnami + version: 16.13.2 + description: A Helm chart to deploy vmpooler + digest: 5dd1ffe3f60944ffd63596d47df20868aa9b850b2507cb37d1d353a8fb1f3a4b + icon: https://github.com/puppetlabs/vmpooler/raw/master/lib/vmpooler/public/img/logo.png + name: vmpooler + type: application + urls: + - https://puppetlabs.github.io/vmpooler-deployment/vmpooler-3.8.0.tgz + version: 3.8.0 + - apiVersion: v2 + appVersion: 5.6.0 + created: "2024-07-01T21:04:47.480988407Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -18,7 +33,7 @@ entries: version: 3.7.0 - apiVersion: v2 appVersion: 5.5.3 - created: "2023-10-05T19:54:50.308282755Z" + created: "2024-07-01T21:04:47.475945422Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -33,7 +48,7 @@ entries: version: 3.6.0 - apiVersion: v2 appVersion: 5.5.3 - created: "2023-10-05T19:54:50.304656796Z" + created: "2024-07-01T21:04:47.471557448Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -48,7 +63,7 @@ entries: version: 3.5.3 - apiVersion: v2 appVersion: 5.5.2 - created: "2023-10-05T19:54:50.300594963Z" + created: "2024-07-01T21:04:47.46670119Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -63,7 +78,7 @@ entries: version: 3.5.2 - apiVersion: v2 appVersion: 5.5.1 - created: "2023-10-05T19:54:50.296970171Z" + created: "2024-07-01T21:04:47.462214967Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -78,7 +93,7 @@ entries: version: 3.5.1 - apiVersion: v2 appVersion: 5.5.0 - created: "2023-10-05T19:54:50.292672588Z" + created: "2024-07-01T21:04:47.45713492Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -93,7 +108,7 @@ entries: version: 3.5.0 - apiVersion: v2 appVersion: 5.4.1 - created: "2023-10-05T19:54:50.288715671Z" + created: "2024-07-01T21:04:47.452574108Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -108,7 +123,7 @@ entries: version: 3.4.1 - apiVersion: v2 appVersion: 5.4.0 - created: "2023-10-05T19:54:50.284719588Z" + created: "2024-07-01T21:04:47.447577825Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -123,7 +138,7 @@ entries: version: 3.4.0 - apiVersion: v2 appVersion: 5.3.0 - created: "2023-10-05T19:54:50.280420505Z" + created: "2024-07-01T21:04:47.442734325Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -138,7 +153,7 @@ entries: version: 3.3.0 - apiVersion: v2 appVersion: 5.2.0 - created: "2023-10-05T19:54:50.276299171Z" + created: "2024-07-01T21:04:47.43829388Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -153,7 +168,7 @@ entries: version: 3.2.0 - apiVersion: v2 appVersion: 5.1.0 - created: "2023-10-05T19:54:50.272252755Z" + created: "2024-07-01T21:04:47.433427982Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -168,7 +183,7 @@ entries: version: 3.1.0 - apiVersion: v2 appVersion: 5.0.0 - created: "2023-10-05T19:54:50.26845388Z" + created: "2024-07-01T21:04:47.428978302Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -183,7 +198,7 @@ entries: version: 3.0.0 - apiVersion: v2 appVersion: 4.1.0 - created: "2023-10-05T19:54:50.26409863Z" + created: "2024-07-01T21:04:47.423984954Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -198,7 +213,7 @@ entries: version: 2.2.0 - apiVersion: v2 appVersion: 4.0.0 - created: "2023-10-05T19:54:50.259656796Z" + created: "2024-07-01T21:04:47.419531678Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -213,7 +228,7 @@ entries: version: 2.1.0 - apiVersion: v2 appVersion: 4.0.0 - created: "2023-10-05T19:54:50.256013255Z" + created: "2024-07-01T21:04:47.414379552Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -228,7 +243,7 @@ entries: version: 2.0.0 - apiVersion: v2 appVersion: 1.7.0-prod-all-providers - created: "2023-10-05T19:54:50.233063005Z" + created: "2024-07-01T21:04:47.38793871Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -243,7 +258,7 @@ entries: version: 1.19.0 - apiVersion: v2 appVersion: 1.7.0-prod-all-providers - created: "2023-10-05T19:54:50.22886013Z" + created: "2024-07-01T21:04:47.383533363Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -258,7 +273,7 @@ entries: version: 1.18.0 - apiVersion: v2 appVersion: 1.7.0-prod-all-providers - created: "2023-10-05T19:54:50.224906171Z" + created: "2024-07-01T21:04:47.37831166Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -273,7 +288,7 @@ entries: version: 1.17.0 - apiVersion: v2 appVersion: 1.6.0-prod-all-providers - created: "2023-10-05T19:54:50.221327505Z" + created: "2024-07-01T21:04:47.373770843Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -288,7 +303,7 @@ entries: version: 1.16.0 - apiVersion: v2 appVersion: 1.6.0-prod-all-providers - created: "2023-10-05T19:54:50.217222338Z" + created: "2024-07-01T21:04:47.368733052Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -303,7 +318,7 @@ entries: version: 1.15.0 - apiVersion: v2 appVersion: 1.6.0-prod-all-providers - created: "2023-10-05T19:54:50.213633963Z" + created: "2024-07-01T21:04:47.363711735Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -318,7 +333,7 @@ entries: version: 1.14.0 - apiVersion: v2 appVersion: 1.5.0-prod-all-providers - created: "2023-10-05T19:54:50.209512088Z" + created: "2024-07-01T21:04:47.359011629Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -333,7 +348,7 @@ entries: version: 1.13.0 - apiVersion: v2 appVersion: 1.5.0-prod-all-providers - created: "2023-10-05T19:54:50.205032713Z" + created: "2024-07-01T21:04:47.353679089Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -348,7 +363,7 @@ entries: version: 1.12.0 - apiVersion: v2 appVersion: 1.4.0-prod-all-providers - created: "2023-10-05T19:54:50.201916171Z" + created: "2024-07-01T21:04:47.350083371Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -363,7 +378,7 @@ entries: version: 1.11.1 - apiVersion: v2 appVersion: 1.3.0-prod-all-providers - created: "2023-10-05T19:54:50.198635213Z" + created: "2024-07-01T21:04:47.345958628Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -378,7 +393,7 @@ entries: version: 1.11.0 - apiVersion: v2 appVersion: 1.2.0-prod-all-providers - created: "2023-10-05T19:54:50.194437796Z" + created: "2024-07-01T21:04:47.342439398Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -393,7 +408,7 @@ entries: version: 1.10.1 - apiVersion: v2 appVersion: 1.2.0-prod-all-providers - created: "2023-10-05T19:54:50.190624213Z" + created: "2024-07-01T21:04:47.338150069Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -408,7 +423,7 @@ entries: version: 1.10.0 - apiVersion: v2 appVersion: 1.2.0-prod-all-providers - created: "2023-10-05T19:54:50.252056546Z" + created: "2024-07-01T21:04:47.410044226Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -423,7 +438,7 @@ entries: version: 1.9.0 - apiVersion: v2 appVersion: 1.2.0-prod-all-providers - created: "2023-10-05T19:54:50.249761588Z" + created: "2024-07-01T21:04:47.407017045Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -438,7 +453,7 @@ entries: version: 1.8.0 - apiVersion: v2 appVersion: 1.0.0-prod-all-providers - created: "2023-10-05T19:54:50.247455838Z" + created: "2024-07-01T21:04:47.404457432Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -453,7 +468,7 @@ entries: version: 1.7.1 - apiVersion: v2 appVersion: 1.0.0-prod-all-providers - created: "2023-10-05T19:54:50.244773671Z" + created: "2024-07-01T21:04:47.401914729Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -468,7 +483,7 @@ entries: version: 1.7.0 - apiVersion: v2 appVersion: 1.3.0 - created: "2023-10-05T19:54:50.242502046Z" + created: "2024-07-01T21:04:47.398778577Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -483,7 +498,7 @@ entries: version: 1.6.3 - apiVersion: v2 appVersion: 1.3.0 - created: "2023-10-05T19:54:50.240104546Z" + created: "2024-07-01T21:04:47.39614659Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -498,7 +513,7 @@ entries: version: 1.6.2 - apiVersion: v2 appVersion: 1.3.0 - created: "2023-10-05T19:54:50.237562338Z" + created: "2024-07-01T21:04:47.393616054Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -513,7 +528,7 @@ entries: version: 1.6.1 - apiVersion: v2 appVersion: 1.3.0 - created: "2023-10-05T19:54:50.235330338Z" + created: "2024-07-01T21:04:47.390528568Z" dependencies: - name: redis repository: https://charts.bitnami.com/bitnami @@ -526,4 +541,4 @@ entries: urls: - https://puppetlabs.github.io/vmpooler-deployment/vmpooler-1.6.0.tgz version: 1.6.0 -generated: "2023-10-05T19:54:50.185752796Z" +generated: "2024-07-01T21:04:47.334292972Z" diff --git a/helm-charts/vmpooler/Chart.yaml b/helm-charts/vmpooler/Chart.yaml index 69b9767..fb431ef 100644 --- a/helm-charts/vmpooler/Chart.yaml +++ b/helm-charts/vmpooler/Chart.yaml @@ -3,7 +3,7 @@ name: vmpooler description: A Helm chart to deploy vmpooler type: application icon: https://github.com/puppetlabs/vmpooler/raw/master/lib/vmpooler/public/img/logo.png -version: 3.7.0 +version: 3.8.0 appVersion: 5.6.0 dependencies: - name: redis diff --git a/helm-package b/helm-package new file mode 100644 index 0000000..a172c6a --- /dev/null +++ b/helm-package @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +set -e +set -x + +helm repo add bitnami https://charts.bitnami.com/bitnami +cd /apps/helm-charts/vmpooler +helm dependency update +cd /apps/docs +helm package ../helm-charts/* +helm repo index --url https://puppetlabs.github.io/vmpooler-deployment . + diff --git a/update-changelog b/update-changelog index 3cfe85a..9b4f167 100755 --- a/update-changelog +++ b/update-changelog @@ -1,5 +1,11 @@ #!/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 $(yq .version helm-charts/vmpooler/Chart.yaml) \ No newline at end of file +set -e +set -x + +future_release=$(yq .version helm-charts/vmpooler/Chart.yaml) + +docker run --interactive --tty --rm=true --env=CHANGELOG_GITHUB_TOKEN \ + --volume=$(pwd):/usr/local/src/your-app \ + githubchangeloggenerator/github-changelog-generator:1.16.2 \ + github_changelog_generator --future-release="$future_release"