mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-12-06 02:15:22 -05:00
152 lines
5.2 KiB
YAML
152 lines
5.2 KiB
YAML
name: Docker Build Production
|
|
|
|
on:
|
|
release:
|
|
types: [published]
|
|
|
|
jobs:
|
|
commit-version-bump:
|
|
name: Commit version bump to repository
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: write
|
|
outputs:
|
|
commit-sha: ${{ steps.commit.outputs.commit-sha }}
|
|
steps:
|
|
- name: Generate GitHub App Token
|
|
id: app-token
|
|
uses: actions/create-github-app-token@v1
|
|
with:
|
|
app-id: ${{ secrets.COMMIT_BOT_APP_ID }}
|
|
private-key: ${{ secrets.COMMIT_BOT_APP_PRIVATE_KEY }}
|
|
|
|
- name: Checkout 🛎
|
|
uses: actions/checkout@v4
|
|
with:
|
|
token: ${{ steps.app-token.outputs.token }}
|
|
|
|
- name: Extract Version From Tag Name
|
|
run: echo "VERSION_NUM=$(echo ${{ github.event.release.tag_name }} | sed 's/^v//')" >> $GITHUB_ENV
|
|
|
|
- name: Configure Git
|
|
run: |
|
|
git config user.name "mealie-commit-bot[bot]"
|
|
git config user.email "mealie-commit-bot[bot]@users.noreply.github.com"
|
|
|
|
- name: Update all version strings
|
|
run: |
|
|
sed -i 's/^version = "[^"]*"/version = "${{ env.VERSION_NUM }}"/' pyproject.toml
|
|
sed -i '/^name = "mealie"$/,/^version = / s/^version = "[^"]*"/version = "${{ env.VERSION_NUM }}"/' uv.lock
|
|
sed -i 's/\("version": "\)[^"]*"/\1${{ env.VERSION_NUM }}"/' frontend/package.json
|
|
sed -i 's/:v[0-9]*\.[0-9]*\.[0-9]*/:v${{ env.VERSION_NUM }}/' docs/docs/documentation/getting-started/installation/installation-checklist.md
|
|
sed -i 's/:v[0-9]*\.[0-9]*\.[0-9]*/:v${{ env.VERSION_NUM }}/' docs/docs/documentation/getting-started/installation/sqlite.md
|
|
sed -i 's/:v[0-9]*\.[0-9]*\.[0-9]*/:v${{ env.VERSION_NUM }}/' docs/docs/documentation/getting-started/installation/postgres.md
|
|
|
|
- name: Commit and push changes
|
|
id: commit
|
|
run: |
|
|
git add pyproject.toml frontend/package.json uv.lock docs/
|
|
git commit -m "chore: bump version to ${{ github.event.release.tag_name }}"
|
|
git push origin HEAD:${{ github.event.repository.default_branch }}
|
|
echo "commit-sha=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT
|
|
|
|
- name: Move release tag to new commit
|
|
run: |
|
|
git tag -f ${{ github.event.release.tag_name }}
|
|
git push -f origin ${{ github.event.release.tag_name }}
|
|
|
|
backend-tests:
|
|
name: "Backend Server Tests"
|
|
uses: ./.github/workflows/test-backend.yml
|
|
needs:
|
|
- commit-version-bump
|
|
|
|
frontend-tests:
|
|
name: "Frontend Tests"
|
|
uses: ./.github/workflows/test-frontend.yml
|
|
needs:
|
|
- commit-version-bump
|
|
|
|
build-package:
|
|
name: Build Package
|
|
uses: ./.github/workflows/build-package.yml
|
|
needs:
|
|
- commit-version-bump
|
|
with:
|
|
tag: ${{ github.event.release.tag_name }}
|
|
|
|
publish:
|
|
permissions:
|
|
contents: read
|
|
packages: write
|
|
# The id-token write permission is needed to connect to Depot.dev
|
|
# as part of the partial-builder.yml action. It needs to be declared
|
|
# in the parent action, as noted here:
|
|
# https://github.com/orgs/community/discussions/76409#discussioncomment-8131390
|
|
id-token: write
|
|
name: Build Tagged Release
|
|
uses: ./.github/workflows/publish.yml
|
|
needs:
|
|
- backend-tests
|
|
- frontend-tests
|
|
- build-package
|
|
with:
|
|
tag: ${{ github.event.release.tag_name }}
|
|
tags: |
|
|
hkotel/mealie:latest
|
|
ghcr.io/${{ github.repository }}:latest
|
|
secrets:
|
|
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
|
|
rollback-on-failure:
|
|
name: Rollback version commit if deployment fails
|
|
needs:
|
|
- commit-version-bump
|
|
- publish
|
|
if: always() && needs.publish.result == 'failure'
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: write
|
|
steps:
|
|
- name: Generate GitHub App Token
|
|
id: app-token
|
|
uses: actions/create-github-app-token@v1
|
|
with:
|
|
app-id: ${{ secrets.COMMIT_BOT_APP_ID }}
|
|
private-key: ${{ secrets.COMMIT_BOT_APP_PRIVATE_KEY }}
|
|
|
|
- name: Checkout 🛎
|
|
uses: actions/checkout@v4
|
|
with:
|
|
token: ${{ steps.app-token.outputs.token }}
|
|
fetch-depth: 0
|
|
|
|
- name: Configure Git
|
|
run: |
|
|
git config user.name "mealie-commit-bot[bot]"
|
|
git config user.email "mealie-commit-bot[bot]@users.noreply.github.com"
|
|
|
|
- name: Delete release tag
|
|
run: |
|
|
git push --delete origin ${{ github.event.release.tag_name }}
|
|
|
|
- name: Revert version bump commit
|
|
run: |
|
|
git revert --no-edit ${{ needs.commit-version-bump.outputs.commit-sha }}
|
|
git push origin HEAD:${{ github.event.repository.default_branch }}
|
|
|
|
notify-discord:
|
|
name: Notify Discord
|
|
needs:
|
|
- publish
|
|
if: success()
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Discord notification
|
|
env:
|
|
DISCORD_WEBHOOK: ${{ secrets.DISCORD_RELEASE_WEBHOOK }}
|
|
uses: Ilshidur/action-discord@0.3.2
|
|
with:
|
|
args: "🚀 Version {{ EVENT_PAYLOAD.release.tag_name }} of Mealie has been released. See the release notes https://github.com/mealie-recipes/mealie/releases/tag/{{ EVENT_PAYLOAD.release.tag_name }}"
|