Automatic Regular Releases #46
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
# This workflow requires a GALAXY_API_KEY secret present in the GitHub | |
# repository or organization. | |
# | |
# See: https://github.com/marketplace/actions/publish-ansible-role-to-galaxy | |
# See: https://github.com/ansible/galaxy/issues/46 | |
# | |
# Note on the file name: | |
# Reminding me (@hexylena) to make a release of a role was the last thing | |
# @Slugger70 asked me our group chat. I'd forgotten to do it and he was | |
# waiting on me for it, well, here's to you mate, none of us can forget to | |
# make a point release again. | |
name: "Automatic Regular Releases" | |
on: | |
workflow_dispatch: | |
schedule: | |
- cron: '0 0 * * 1' | |
jobs: | |
release: | |
name: Release | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out the codebase. | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python 3. | |
uses: actions/setup-python@v3 | |
with: | |
python-version: '3.x' | |
- name: Install Ansible. | |
run: pip3 install six ansible-base | |
- name: Check for changes | |
run: | | |
LATEST_TAG=$(git describe --tags --abbrev=0) | |
echo "The last released tag was ${LATEST_TAG}" | |
CHANGES=$(git diff ${LATEST_TAG} --name-only | wc -l) | |
echo "Found ${CHANGES} changed files" | |
git diff ${LATEST_TAG} --name-only | |
echo "changed_files=${CHANGES}" >> $GITHUB_ENV | |
- name: Create a new git tag | |
run: | | |
LATEST_TAG=$(git describe --tags --abbrev=0) | |
major_minor=$(echo "$LATEST_TAG" | sed 's/\(.*\..*\.\)\(.*\)/\1/') | |
patch=$(echo "$LATEST_TAG" | sed 's/\(.*\..*\.\)\(.*\)/\2/') | |
newpatch=$(echo "$patch + 1" | bc) | |
NEW_TAG="${major_minor}${newpatch}" | |
echo "$LATEST_TAG -> $NEW_TAG" | |
git config user.name github-actions | |
git config user.email [email protected] | |
git tag "$NEW_TAG" | |
git push --tags | |
echo "Creating new tag $NEW_TAG" >> $GITHUB_STEP_SUMMARY | |
if: env.changed_files > 0 | |
# We have to do this step as GHA prevents triggering it's own actions, to | |
# prevent runaway loops. | |
- name: Trigger a new import on Galaxy. | |
run: | | |
org=$(echo ${{ github.repository }} | cut -d/ -f1) | |
repo=$(echo ${{ github.repository }} | cut -d/ -f2) | |
key=${{ secrets.GALAXY_API_KEY }} | |
ansible-galaxy role import --api-key $key $org $repo --branch main | |
if: env.changed_files > 0 |