Skip to content

Check for new Mattermost Releases #359

Check for new Mattermost Releases

Check for new Mattermost Releases #359

Workflow file for this run

name: Check for new Mattermost Releases
on:
workflow_dispatch:
schedule:
- cron: '0 0 * * *' # Vérifie toutes les jours à minuit
jobs:
check-releases:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Get latest release from the monitored repo
id: get_release
run: |
latest_release=$(curl -s https://api.github.com/repos/mattermost/mattermost/releases/latest | jq -r .tag_name)
echo "LATEST_RELEASE=$latest_release" >> $GITHUB_ENV
- name: Compare with last known release
id: compare_release
run: |
set -o allexport
source .env
set +o allexport
echo "Last known release: $MATTERMOST_IMAGE_TAG"
echo "Latest release: ${{ env.LATEST_RELEASE }}"
if [ "${{ env.LATEST_RELEASE }}" != "$MATTERMOST_IMAGE_TAG" ]; then
if [[ "${{ env.LATEST_RELEASE }}" =~ v([0-9]+)\.([0-9]+)\.([0-9]+) ]]; then
major="${BASH_REMATCH[1]}"
minor="${BASH_REMATCH[2]}"
patch="${BASH_REMATCH[3]}"
if [[ "$MATTERMOST_IMAGE_TAG" =~ v([0-9]+)\.([0-9]+)\.([0-9]+) ]]; then
current_major="${BASH_REMATCH[1]}"
current_minor="${BASH_REMATCH[2]}"
current_patch="${BASH_REMATCH[3]}"
if [[ \
"$major" -gt "$current_major" \
|| ("$major" -eq "$current_major" && "$minor" -gt "$current_minor") \
|| ("$major" -eq "$current_major" && "$minor" -eq "$current_minor" && "$patch" -gt "$current_patch") \
]]; then
echo "New release detected"
# If branch exists, do nothing
if git ls-remote --heads origin | grep -q "upgrade-$major.$minor.$patch"; then
echo "Branch upgrade-$major.$minor.$patch already exists"
echo "NEW_RELEASE=false" >> $GITHUB_ENV
exit 0
fi
# Branch DNE, update MATTERMOST_IMAGE_TAG
sed -i 's/MATTERMOST_IMAGE_TAG=\(.*\)/MATTERMOST_IMAGE_TAG=${{ env.LATEST_RELEASE }}/' .env
sed -i "s/${MATTERMOST_IMAGE_TAG}/${{ env.LATEST_RELEASE }}/g" README.md
echo "BRANCH_NAME=upgrade-$major.$minor.$patch" >> $GITHUB_ENV
echo "TAG_NAME=v$major.$minor.$patch" >> $GITHUB_ENV
echo "NEW_RELEASE=true" >> $GITHUB_ENV
else
echo "No new release"
echo "NEW_RELEASE=false" >> $GITHUB_ENV
fi
fi
fi
else
echo "No new release"
echo "NEW_RELEASE=false" >> $GITHUB_ENV
fi
- name: Update Mattermost version
id: set_branch_for_upgrade
if: env.NEW_RELEASE == 'true'
run: |
git config --global user.name 'github-actions'
git config --global user.email 'github-actions@github.com'
git add .
git commit -m "chore: Upgrade to ${{ env.LATEST_RELEASE }}"
git tag ${{ env.TAG_NAME }}
git push origin $(git branch --show-current) ${{ env.TAG_NAME }}
- name: Trigger a build
if: env.NEW_RELEASE == 'true'
uses: benc-uk/workflow-dispatch@v1
with:
workflow: build-docker-images.yml
ref: ${{ env.TAG_NAME }}