Skip to content

Commit 87971cb

Browse files
jessereynoldsbastelfreak
authored andcommitted
Rename gem to openbolt and prepare for 5.0.0 alpha release
- rename gemspec file - update gem version string in gemspec and version.rb to 5.0.0-alpha.0 - add vox rake task for version bump and modify to allow for semver rubygem prerelease version strings - add github_changelog_generator gem to Gemfile in the optional release group - update the project README (have I replaced too many instances of ‘Bolt’ with ‘OpenBolt’? - update github actions workflows etc to enable gem release and publish
1 parent 41ec43c commit 87971cb

File tree

9 files changed

+234
-22
lines changed

9 files changed

+234
-22
lines changed

.github/release.yml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
---
2+
# https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes
3+
4+
changelog:
5+
exclude:
6+
labels:
7+
- duplicate
8+
- invalid
9+
- modulesync
10+
- question
11+
- skip-changelog
12+
- wont-fix
13+
- wontfix
14+
- github_actions
15+
16+
categories:
17+
- title: Breaking Changes 🛠
18+
labels:
19+
- backwards-incompatible
20+
21+
- title: New Features 🎉
22+
labels:
23+
- enhancement
24+
25+
- title: Bug Fixes 🐛
26+
labels:
27+
- bug
28+
29+
- title: Documentation Updates 📚
30+
labels:
31+
- documentation
32+
- docs
33+
34+
- title: Dependency Updates ⬆️
35+
labels:
36+
- dependencies
37+
38+
- title: Other Changes
39+
labels:
40+
- "*"

.github/workflows/gem_release.yaml

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
---
2+
name: Gem Release
3+
4+
on:
5+
push:
6+
tags:
7+
- '*'
8+
9+
permissions: {}
10+
11+
jobs:
12+
build-release:
13+
# Prevent releases from forked repositories
14+
if: github.repository_owner == 'OpenVoxProject'
15+
name: Build the gem
16+
runs-on: ubuntu-24.04
17+
steps:
18+
- uses: actions/checkout@v4
19+
- name: Install Ruby
20+
uses: ruby/setup-ruby@v1
21+
with:
22+
ruby-version: 'ruby'
23+
- name: Build gem
24+
shell: bash
25+
run: gem build --verbose *.gemspec
26+
- name: Upload gem to GitHub cache
27+
uses: actions/upload-artifact@v4
28+
with:
29+
name: gem-artifact
30+
path: '*.gem'
31+
retention-days: 1
32+
compression-level: 0
33+
34+
create-github-release:
35+
needs: build-release
36+
name: Create GitHub release
37+
runs-on: ubuntu-24.04
38+
permissions:
39+
contents: write # clone repo and create release
40+
steps:
41+
- name: Download gem from GitHub cache
42+
uses: actions/download-artifact@v4
43+
with:
44+
name: gem-artifact
45+
- name: Create Release
46+
shell: bash
47+
env:
48+
GH_TOKEN: ${{ github.token }}
49+
run: gh release create --repo ${{ github.repository }} ${{ github.ref_name }} --generate-notes *.gem
50+
51+
release-to-github:
52+
needs: build-release
53+
name: Release to GitHub
54+
runs-on: ubuntu-24.04
55+
permissions:
56+
packages: write # publish to rubygems.pkg.github.com
57+
steps:
58+
- name: Download gem from GitHub cache
59+
uses: actions/download-artifact@v4
60+
with:
61+
name: gem-artifact
62+
- name: Publish gem to GitHub packages
63+
run: gem push --host https://rubygems.pkg.github.com/${{ github.repository_owner }} *.gem
64+
env:
65+
GEM_HOST_API_KEY: ${{ secrets.GITHUB_TOKEN }}
66+
67+
release-to-rubygems:
68+
needs: build-release
69+
name: Release gem to rubygems.org
70+
runs-on: ubuntu-24.04
71+
environment: release # recommended by rubygems.org
72+
permissions:
73+
id-token: write # rubygems.org authentication
74+
steps:
75+
- name: Download gem from GitHub cache
76+
uses: actions/download-artifact@v4
77+
with:
78+
name: gem-artifact
79+
- uses: rubygems/[email protected]
80+
- name: Publish gem to rubygems.org
81+
shell: bash
82+
run: gem push *.gem
83+
84+
release-verification:
85+
name: Check that all releases are done
86+
runs-on: ubuntu-24.04
87+
permissions:
88+
contents: read # minimal permissions that we have to grant
89+
needs:
90+
- create-github-release
91+
- release-to-github
92+
- release-to-rubygems
93+
steps:
94+
- name: Download gem from GitHub cache
95+
uses: actions/download-artifact@v4
96+
with:
97+
name: gem-artifact
98+
- name: Install Ruby
99+
uses: ruby/setup-ruby@v1
100+
with:
101+
ruby-version: 'ruby'
102+
- name: Wait for release to propagate
103+
shell: bash
104+
run: |
105+
gem install rubygems-await
106+
gem await *.gem
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: 'Prepare Release'
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
version:
7+
description: 'Version to be released.'
8+
required: false
9+
default: ''
10+
type: string
11+
base-branch:
12+
description: 'The branch that will be used as the origin for the release branch.'
13+
required: false
14+
default: ''
15+
type: string
16+
17+
permissions: {}
18+
19+
jobs:
20+
prepare_release:
21+
uses: OpenVoxProject/shared-actions/.github/workflows/prepare_release.yml@main
22+
with:
23+
allowed_owner: 'OpenVoxProject'
24+
base-branch: ${{ github.event.inputs.base-branch }}
25+
version: ${{ github.event.inputs.version }}
26+
secrets:
27+
github_pat: ${{ secrets.OPENVOXBOT_COMMIT_AND_PRS }}
28+
ssh_private_key: ${{ secrets.OPENVOXBOT_SSH_PRIVATE_KEY }}

.github/workflows/release.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: 'Release'
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
version:
7+
description: 'Version to be released.'
8+
required: false
9+
default: ''
10+
type: string
11+
base-branch:
12+
description: 'The branch where we do this release.'
13+
required: false
14+
default: ''
15+
type: string
16+
17+
permissions: {}
18+
19+
jobs:
20+
release:
21+
uses: OpenVoxProject/shared-actions/.github/workflows/release.yml@main
22+
with:
23+
allowed_owner: 'OpenVoxProject'
24+
base-branch: ${{ github.event.inputs.base-branch }}
25+
version: ${{ github.event.inputs.version }}
26+
secrets:
27+
github_pat: ${{ secrets.OPENVOXBOT_COMMIT_AND_PRS }}
28+
ssh_private_key: ${{ secrets.OPENVOXBOT_SSH_PRIVATE_KEY }}

CODEOWNERS

Lines changed: 0 additions & 1 deletion
This file was deleted.

Gemfile

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ group(:test) do
3131
gem "rubocop-rake", require: false
3232
end
3333

34+
group(:release, optional: true) do
35+
gem 'faraday-retry', '~> 2.1', require: false
36+
gem 'github_changelog_generator', '~> 1.16.4', require: false
37+
end
38+
3439
group(:packaging) do
3540
gem 'packaging', '~> 0.105'
3641
end

README.md

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,47 +3,53 @@
33
[![Windows Status](https://github.com/puppetlabs/bolt/workflows/Windows/badge.svg?branch=main)](https://github.com/puppetlabs/bolt/actions)
44
[![Version](https://img.shields.io/github/v/tag/puppetlabs/bolt?label=version)](./CHANGELOG.md)
55
[![Platforms](https://img.shields.io/badge/platforms-linux%20%7C%20windows%20%7C%20macos-lightgrey)](./documentation/bolt_installing.md)
6-
[![License](https://img.shields.io/github/license/puppetlabs/bolt)](./LICENSE)
6+
[![License](https://img.shields.io/github/license/OpenVoxProject/openbolt)](./LICENSE)
77

88
<p align="center">
99
<img src="resources/bolt-logo-dark.png" width="50%" alt="bolt logo"/>
1010
</p>
1111

12-
Bolt is an open source orchestration tool that automates the manual work it takes to maintain your infrastructure. Use Bolt to automate tasks that you perform on an as-needed basis or as part of a greater orchestration workflow. For example, you can use Bolt to patch and update systems, troubleshoot servers, deploy applications, or stop and restart services. Bolt can be installed on your local workstation and connects directly to remote targets with SSH or WinRM, so you are not required to install any agent software.
12+
OpenBolt is an open source orchestration tool that automates the manual work it takes to maintain your infrastructure. Use OpenBolt to automate tasks that you perform on an as-needed basis or as part of a greater orchestration workflow. For example, you can use OpenBolt to patch and update systems, troubleshoot servers, deploy applications, or stop and restart services. OpenBolt can be installed on your local workstation and connects directly to remote targets with SSH or WinRM, so you are not required to install any agent software.
13+
14+
OpenBolt is a community implementation of [Puppet Bolt](https://github.com/puppetlabs/bolt).
1315

1416
### Bring order to the chaos with orchestration
1517

16-
Run simple plans to rid yourself of the headaches of orchestrating complex workflows. Create and share Bolt plans to easily expand across your application stack.
18+
Run simple plans to rid yourself of the headaches of orchestrating complex workflows. Create and share OpenBolt plans to easily expand across your application stack.
1719

1820
### Use what you have to automate simple tasks or complex workflows
1921

2022
Get going with your existing scripts and plans, including YAML, PowerShell, Bash, Python or Ruby, or reuse content from the [Puppet Forge](https://forge.puppet.com).
2123

22-
### Get up and running with Bolt even faster
24+
### Documentation
25+
26+
OpenBolt's documentation can be found under [documentation](./documentation). See also the [Puppet Bolt Docs site](https://help.puppet.com/bolt/current/topics/bolt.htm)
27+
28+
At the time of writing, the OpenVoxProject does not have a documentation website.
29+
But your help is very welcome!
30+
Reach out to the [Documentation Special Interest Group](https://github.com/voxpupuli/community-triage/wiki/SIG.Documentation) if you want to help.
2331

24-
Speed up your Bolt knowledge with a step-by-step introduction to basic Bolt functionality with our [getting started guide](https://puppet.com/docs/bolt/latest/getting_started_with_bolt.html) and [self-paced training](https://puppet.com/learning-training/kits/intro-to-bolt).
32+
### Learning Resources
2533

26-
More information and documentation is available on the [Bolt website](https://puppet.com/docs/bolt/latest/bolt.html).
34+
- Puppet Bolt [getting started guide](https://puppet.com/docs/bolt/latest/getting_started_with_bolt.html)
35+
- Puppet Bolt [self-paced training](https://puppet.com/learning-training/kits/intro-to-bolt).
2736

2837
## Supported platforms
2938

30-
Bolt can be installed on Linux, Windows, and macOS. For complete installation details, see the [installation docs](./documentation/bolt_installing.md).
39+
OpenBolt can be installed on Linux, Windows, and macOS. For complete installation details, see the [installation docs](./documentation/bolt_installing.md).
3140

32-
For alternate installation methods and running from source code, see our [contributing guidelines](https://github.com/puppetlabs/bolt/blob/main/CONTRIBUTING.md).
41+
For alternate installation methods and running from source code, see our [contributing guidelines](https://github.com/OpenVoxProject/openbolt/blob/main/CONTRIBUTING.md).
3342

3443
## Getting help
3544

36-
Join [#bolt](https://slack.puppet.com/) on the Puppet Community slack to chat with Bolt developers and the community.
45+
Join #bolt on the Vox Pupuli slack to chat with OpenBolt developers and the community.
3746

3847
## Contributing
3948

40-
We welcome error reports and pull requests to Bolt. See our [contributing guidelines](./CONTRIBUTING.md) for how to help.
41-
42-
## Kudos
43-
44-
Thank you to [Marcin Bunsch](https://github.com/marcinbunsch) for allowing Puppet to use the `bolt` gem name.
49+
We welcome error reports and pull requests to OpenBolt. See our [contributing guidelines](./CONTRIBUTING.md) for how to help.
4550

4651
## License
4752

48-
Bolt is available as open source under the terms of the [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) license.
49-
53+
See [LICENSE](LICENSE) file.
54+
OpenBolt is licensed by the OpenVox Project as a community maintained implementation of Bolt.
55+
The OpenVox Project can be contacted at: [email protected].

lib/bolt/applicator.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ def initialize(inventory, executor, modulepath, plugin_dirs, project,
3232
end
3333

3434
private def libexec
35-
@libexec ||= File.join(Gem::Specification.find_by_name('bolt').gem_dir, 'libexec')
35+
@libexec ||= File.join(Gem::Specification.find_by_name('openbolt').gem_dir, 'libexec')
3636
end
3737

3838
def custom_facts_task

bolt.gemspec renamed to openbolt.gemspec

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
66
require 'bolt/version'
77

88
Gem::Specification.new do |spec|
9-
spec.name = "bolt"
9+
spec.name = "openbolt"
1010
spec.version = Bolt::VERSION
11-
spec.authors = ["Puppet"]
12-
spec.email = ["[email protected]"]
11+
spec.authors = ['OpenVox Project']
12+
spec.email = ['[email protected]']
1313

1414
spec.summary = "Execute commands remotely over SSH and WinRM"
1515
spec.description = "Execute commands remotely over SSH and WinRM"
16-
spec.homepage = "https://github.com/puppetlabs/bolt"
16+
spec.homepage = 'https://github.com/OpenVoxProject/openbolt/'
1717
spec.license = "Apache-2.0"
1818
spec.files = Dir['exe/*'] +
1919
Dir['lib/**/*.rb'] +

0 commit comments

Comments
 (0)