-
Notifications
You must be signed in to change notification settings - Fork 66
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Move to Puppet release GitHub Actions #242
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
name: Automated release prep | ||
|
||
on: | ||
workflow_dispatch: | ||
|
||
jobs: | ||
auto_release_prep: | ||
uses: puppetlabs/release-engineering-repo-standards/.github/workflows/auto_release_prep.yml@v1 | ||
secrets: inherit | ||
with: | ||
project-type: ruby | ||
version-file-path: lib/beaker-puppet/version.rb |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,32 +1,94 @@ | ||
name: Release | ||
name: Release Gem | ||
|
||
on: | ||
push: | ||
tags: | ||
- '*' | ||
on: workflow_dispatch | ||
|
||
jobs: | ||
release: | ||
runs-on: ubuntu-latest | ||
if: github.repository_owner == 'voxpupuli' | ||
if: github.repository == 'puppetlabs/beaker-puppet' | ||
steps: | ||
- uses: actions/checkout@v4 | ||
|
||
- name: Get Current Version | ||
uses: actions/github-script@v7 | ||
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: | | ||
version=$(awk '/VERSION/ {print $3}' lib/beaker-puppet/version.rb | tr --delete \') | ||
echo "version=$version" >> $GITHUB_OUTPUT | ||
echo "Found version $version from lib/beaker-puppet/version.rb" | ||
|
||
- name: Generate Changelog | ||
uses: docker://githubchangeloggenerator/github-changelog-generator:1.16.2 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. at vox pupuli we had random concurrency issues with versions below 1.16.4 where PRs and issues got the wrong author in the CHANGELOG.md. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yeah, we've ran into that issue with some of our modules too but that was when using the gem. I haven't had personal experience with the Docker image (I did not write this workflow), but I have not heard of any issues from other Puppet teams who've used this workflow. |
||
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.nv.outputs.version }} | ||
token: ${{ secrets.GITHUB_TOKEN }} | ||
bodyfile: release-notes.md | ||
draft: false | ||
prerelease: false | ||
|
||
- name: Install Ruby 3.0 | ||
uses: ruby/setup-ruby@v1 | ||
with: | ||
ruby-version: '3.0' | ||
env: | ||
BUNDLE_WITHOUT: release | ||
ruby-version: '3.0' | ||
|
||
- name: Build gem | ||
run: gem build --strict --verbose *.gemspec | ||
- name: Publish gem to rubygems.org | ||
run: gem push *.gem | ||
|
||
- name: Configure credentials | ||
run: | | ||
mkdir -p $HOME/.gem | ||
touch $HOME/.gem/credentials | ||
chmod 0600 $HOME/.gem/credentials | ||
printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials | ||
printf -- ":github: Bearer ${{ secrets.GITHUB_TOKEN }}\n" > $HOME/.gem/credentials | ||
env: | ||
GEM_HOST_API_KEY: '${{ secrets.RUBYGEMS_AUTH_TOKEN }}' | ||
- name: Setup GitHub packages access | ||
run: | | ||
mkdir -p ~/.gem | ||
echo ":github: Bearer ${{ secrets.GITHUB_TOKEN }}" >> ~/.gem/credentials | ||
chmod 0600 ~/.gem/credentials | ||
|
||
- name: Publish gem to rubygems.org | ||
run: gem push *.gem | ||
|
||
- name: Publish gem to GitHub packages | ||
mhashizume marked this conversation as resolved.
Show resolved
Hide resolved
|
||
run: gem push --key github --host https://rubygems.pkg.github.com/voxpupuli *.gem |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is totally fine, but: For Vox Pupuli we switched from
github.repository
togithub.repository_owner
because it turned out people often copy and paste the action to new repos we have and forget to adjust it :D