Skip to content

Release prep v41.0.0 #116

Release prep v41.0.0

Release prep v41.0.0 #116

name: Pull Request Merge to Release Prep
on:
pull_request:
types:
- closed
jobs:
if_merged:
if: github.event.pull_request.merged == true && startsWith(github.head_ref, 'release-prep')
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v2
- name: "Get version"
id: "get_version"
run: |
version=$(grep -o "version = '[^']*'" .version | awk -F"'" '{print $2}')
echo "version=$version" >> $GITHUB_OUTPUT
latest_tag=$(curl -sL https://api.github.com/repos/${GITHUB_REPOSITORY}/tags | jq -r '.[0].name')
current_version=$(echo "$latest_tag" | cut -d'.' -f1 | sed 's/[^0-9]//g')
new_version=$(echo $version | cut -d'.' -f1)
echo "current_version=$current_version" >> $GITHUB_OUTPUT
if [ "$new_version" -gt "$current_version" ]; then
echo "major_version_upgrade=true" >> $GITHUB_OUTPUT
echo "base_branch=main" >> $GITHUB_OUTPUT
else
echo "major_version_upgrade=false" >> $GITHUB_OUTPUT
echo "base_branch=$current_version.0.0" >> $GITHUB_OUTPUT
fi
- name: "Create release"
run: |
echo "$base_branch"
gh release create v${{ steps.get_version.outputs.version }} --title v${{ steps.get_version.outputs.version }} --target ${{ steps.get_version.outputs.base_branch }}
export GH_HOST=github.com
gh extension install chelnak/gh-changelog
gh changelog get --latest > OUTPUT.md
gh release edit v${{ steps.get_version.outputs.version }} -F OUTPUT.md
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: "Setup ruby"
uses: "ruby/setup-ruby@v1"
with:
ruby-version: "3.1.2"
bundler-cache: "true"
- name: Install jq and bundle install
run: |
sudo apt-get install jq libjq-dev
export RUBYJQ_USE_SYSTEM_LIBRARIES=1
bundle install
- name: "Bundle environment"
run: |
echo ::group::bundler environment
bundle env
echo ::endgroup::
- name: "Build a new release"
run: |
echo "Building new release"
mkdir -p /home/runner/work/puppet-forge-api/puppet-forge-api/pkg && bundle exec harrison package
- name: "Setup twingate"
uses: twingate/github-action@v1
with:
service-key: ${{ secrets.TWINGATE_KEY }}
- name: "Deploy"
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
run: |
export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
mkdir -p ~/.ssh/
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
echo "${{ secrets.SSH_PUB_KEY }}" > ~/.ssh/id_rsa.pub
chmod 600 ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa.pub
version=$(ls -tr pkg | tail -1)
for env in dev stage prod; do
echo "Starting deploy to $env"
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
cd /home/runner/work/puppet-forge-api/puppet-forge-api && bundle exec harrison deploy pkg/$version --env $env --no-confirm
echo "Successfully deployed to $env"
done