Skip to content

Refactor release-prep and action due to issue running via docker #14

Refactor release-prep and action due to issue running via docker

Refactor release-prep and action due to issue running via docker #14

Workflow file for this run

name: Release Gem
on: push
jobs:
validate-release:
runs-on: ubuntu-latest
if: github.repository == 'puppetlabs/vmpooler'
outputs:
cv: ${{ steps.cv.outputs.version }}
nv: ${{ steps.nv.outputs.version }}
steps:
- uses: actions/checkout@v3
- name: Install Ruby 3.1
uses: ruby/setup-ruby@v1
with:
ruby-version: 'ruby-3.1'
- 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: |
version=$(grep VERSION lib/vmpooler/version.rb |rev |cut -d "'" -f2 |rev)
echo "version=$version" >> $GITHUB_OUTPUT
echo "Found version $version from lib/vmpooler/version.rb"
- name: Generate Changelog
run : |
gem install github_changelog_generator -v '~> 1.16'
CONSOLE_LEVEL=debug github_changelog_generator --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
run : |
github_changelog_generator \
--since-tag ${{ steps.cv.outputs.result }} \
--future-release ${{ steps.nv.outputs.version }} \
--output release-notes.md
env:
CHANGELOG_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/upload-artifact@v3
with:
name: release-notes
path: release-notes.md
publish-release:
runs-on: ubuntu-latest
needs: validate-release
if: github.repository == 'puppetlabs/vmpooler'
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
with:
name: release-notes
path: release-notes.md
- name: Test Outputs
run : |
cat release-notes.md
echo ${{ needs.validate-release.outputs.nv.version }}
# - name: Tag Release
# uses: ncipollo/release-action@v1
# with:
# tag: ${{ needs.validate-release.outputs.nv.version }}
# token: ${{ secrets.GITHUB_TOKEN }}
# bodyfile: release-notes.md
# draft: false
# prerelease: false
# # This step should closely match what is used in `docker/Dockerfile` in vmpooler-deployment
# - name: Install Ruby jruby-9.4.3.0
# uses: ruby/setup-ruby@v1
# with:
# ruby-version: 'jruby-9.4.3.0'
# - name: Build gem
# run: gem build *.gemspec
# - name: Publish gem
# 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
# gem push *.gem
# env:
# GEM_HOST_API_KEY: '${{ secrets.RUBYGEMS_AUTH_TOKEN }}'