Check for new Mattermost Releases #359
This file contains hidden or 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
| 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 }} |