mirror of
				https://github.com/mealie-recipes/mealie.git
				synced 2025-10-27 08:14:30 -04:00 
			
		
		
		
	dev: Create a Python package, build Docker images from it (#4551)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com> Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com> Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
This commit is contained in:
		
							
								
								
									
										14
									
								
								.github/workflows/e2e.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								.github/workflows/e2e.yml
									
									
									
									
										vendored
									
									
								
							| @@ -3,8 +3,15 @@ on: | ||||
|   workflow_call: | ||||
|  | ||||
| jobs: | ||||
|   build-package: | ||||
|     name: "Build Python package" | ||||
|     uses: ./.github/workflows/partial-package.yml | ||||
|     with: | ||||
|       tag: e2e | ||||
|  | ||||
|   test: | ||||
|     timeout-minutes: 60 | ||||
|     needs: build-package | ||||
|     runs-on: ubuntu-latest | ||||
|     defaults: | ||||
|       run: | ||||
| @@ -18,11 +25,18 @@ jobs: | ||||
|         cache-dependency-path: ./tests/e2e/yarn.lock | ||||
|     - name: Set up Docker Buildx | ||||
|       uses: docker/setup-buildx-action@v3 | ||||
|     - name: Retrieve Python package | ||||
|       uses: actions/download-artifact@v4 | ||||
|       with: | ||||
|         name: backend-dist | ||||
|         path: dist | ||||
|     - name: Build Image | ||||
|       uses: docker/build-push-action@v5 | ||||
|       with: | ||||
|         file: ./docker/Dockerfile | ||||
|         context: . | ||||
|         build-contexts: | | ||||
|           packages=dist | ||||
|         push: false | ||||
|         load: true | ||||
|         tags: mealie:e2e | ||||
|   | ||||
							
								
								
									
										2
									
								
								.github/workflows/nightly.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/nightly.yml
									
									
									
									
										vendored
									
									
								
							| @@ -21,7 +21,7 @@ jobs: | ||||
|     uses: ./.github/workflows/partial-backend.yml | ||||
|  | ||||
|   frontend-tests: | ||||
|     name: "Frontend and End-to-End Tests" | ||||
|     name: "Frontend Tests" | ||||
|     uses: ./.github/workflows/partial-frontend.yml | ||||
|  | ||||
|   build-release: | ||||
|   | ||||
							
								
								
									
										2
									
								
								.github/workflows/partial-backend.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/partial-backend.yml
									
									
									
									
										vendored
									
									
								
							| @@ -1,4 +1,4 @@ | ||||
| name: Backend Test/Lint | ||||
| name: Backend Lint and Test | ||||
|  | ||||
| on: | ||||
|   workflow_call: | ||||
|   | ||||
							
								
								
									
										19
									
								
								.github/workflows/partial-builder.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										19
									
								
								.github/workflows/partial-builder.yml
									
									
									
									
										vendored
									
									
								
							| @@ -16,7 +16,14 @@ on: | ||||
|         required: true | ||||
|  | ||||
| jobs: | ||||
|   build-package: | ||||
|     name: "Build Python package" | ||||
|     uses: ./.github/workflows/partial-package.yml | ||||
|     with: | ||||
|       tag: ${{ inputs.tag }} | ||||
|  | ||||
|   publish: | ||||
|     needs: build-package | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - name: Checkout repository | ||||
| @@ -35,18 +42,22 @@ jobs: | ||||
|           username: ${{ secrets.DOCKERHUB_USERNAME }} | ||||
|           password: ${{ secrets.DOCKERHUB_TOKEN }} | ||||
|  | ||||
|       - name: Override __init__.py | ||||
|         run: | | ||||
|           echo "__version__ = \"${{ inputs.tag }}\"" > ./mealie/__init__.py | ||||
|  | ||||
|       - uses: depot/setup-action@v1 | ||||
|  | ||||
|       - name: Retrieve Python package | ||||
|         uses: actions/download-artifact@v4 | ||||
|         with: | ||||
|           name: backend-dist | ||||
|           path: dist | ||||
|  | ||||
|       - name: Build and push Docker image, via Depot.dev | ||||
|         uses: depot/build-push-action@v1 | ||||
|         with: | ||||
|           project: srzjb6mhzm | ||||
|           file: ./docker/Dockerfile | ||||
|           context: . | ||||
|           build-contexts: | | ||||
|             packages=dist | ||||
|           platforms: linux/amd64,linux/arm64 | ||||
|           push: true | ||||
|           tags: | | ||||
|   | ||||
							
								
								
									
										36
									
								
								.github/workflows/partial-frontend.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										36
									
								
								.github/workflows/partial-frontend.yml
									
									
									
									
										vendored
									
									
								
							| @@ -1,4 +1,4 @@ | ||||
| name: Frontend Build/Lin | ||||
| name: Frontend Lint and Test | ||||
|  | ||||
| on: | ||||
|   workflow_call: | ||||
| @@ -41,37 +41,3 @@ jobs: | ||||
|       - name: Run tests 🧪 | ||||
|         run: yarn test:ci | ||||
|         working-directory: "frontend" | ||||
|  | ||||
|   build: | ||||
|     runs-on: ubuntu-latest | ||||
|  | ||||
|     steps: | ||||
|       - name: Checkout 🛎 | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: Setup node env 🏗 | ||||
|         uses: actions/setup-node@v4.0.0 | ||||
|         with: | ||||
|           node-version: 16 | ||||
|           check-latest: true | ||||
|  | ||||
|       - name: Get yarn cache directory path 🛠 | ||||
|         id: yarn-cache-dir-path | ||||
|         run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT | ||||
|  | ||||
|       - name: Cache node_modules 📦 | ||||
|         uses: actions/cache@v4 | ||||
|         id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) | ||||
|         with: | ||||
|           path: ${{ steps.yarn-cache-dir-path.outputs.dir }} | ||||
|           key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} | ||||
|           restore-keys: | | ||||
|             ${{ runner.os }}-yarn- | ||||
|  | ||||
|       - name: Install dependencies 👨🏻💻 | ||||
|         run: yarn | ||||
|         working-directory: "frontend" | ||||
|  | ||||
|       - name: Run Build 🚚 | ||||
|         run: yarn build | ||||
|         working-directory: "frontend" | ||||
|   | ||||
							
								
								
									
										102
									
								
								.github/workflows/partial-package.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								.github/workflows/partial-package.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,102 @@ | ||||
| name: Package build | ||||
|  | ||||
| on: | ||||
|   workflow_call: | ||||
|     inputs: | ||||
|       tag: | ||||
|         required: true | ||||
|         type: string | ||||
|  | ||||
| jobs: | ||||
|   build-frontend: | ||||
|     name: Build frontend | ||||
|     runs-on: ubuntu-latest | ||||
|  | ||||
|     steps: | ||||
|       - name: Checkout 🛎 | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: Setup node env 🏗 | ||||
|         uses: actions/setup-node@v4.0.0 | ||||
|         with: | ||||
|           node-version: 16 | ||||
|           check-latest: true | ||||
|  | ||||
|       - name: Get yarn cache directory path 🛠 | ||||
|         id: yarn-cache-dir-path | ||||
|         run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT | ||||
|  | ||||
|       - name: Cache node_modules 📦 | ||||
|         uses: actions/cache@v4 | ||||
|         id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) | ||||
|         with: | ||||
|           path: ${{ steps.yarn-cache-dir-path.outputs.dir }} | ||||
|           key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} | ||||
|           restore-keys: | | ||||
|             ${{ runner.os }}-yarn- | ||||
|  | ||||
|       - name: Install dependencies 👨🏻💻 | ||||
|         run: yarn | ||||
|         working-directory: "frontend" | ||||
|  | ||||
|       - name: Run Build 🚚 | ||||
|         run: yarn generate | ||||
|         working-directory: "frontend" | ||||
|  | ||||
|       - name: Archive built frontend | ||||
|         uses: actions/upload-artifact@v4 | ||||
|         with: | ||||
|           name: frontend-dist | ||||
|           path: frontend/dist | ||||
|           retention-days: 5 | ||||
|  | ||||
|   build-package: | ||||
|     name: Build Python package | ||||
|     needs: build-frontend | ||||
|     runs-on: ubuntu-latest | ||||
|  | ||||
|     steps: | ||||
|       - name: Install Task | ||||
|         uses: arduino/setup-task@v2 | ||||
|         with: | ||||
|           version: 3.x | ||||
|           repo-token: ${{ secrets.GITHUB_TOKEN }} | ||||
|  | ||||
|       - name: Check out repository | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: Set up python | ||||
|         uses: actions/setup-python@v5 | ||||
|         with: | ||||
|           python-version: "3.12" | ||||
|  | ||||
|       - name: Install Poetry | ||||
|         uses: snok/install-poetry@v1 | ||||
|         with: | ||||
|           virtualenvs-create: true | ||||
|           virtualenvs-in-project: true | ||||
|           plugins: | | ||||
|             poetry-plugin-export | ||||
|  | ||||
|       - name: Retrieve built frontend | ||||
|         uses: actions/download-artifact@v4 | ||||
|         with: | ||||
|           name: frontend-dist | ||||
|           path: mealie/frontend | ||||
|  | ||||
|       - name: Override __init__.py | ||||
|         run: | | ||||
|           echo "__version__ = \"${{ inputs.tag }}\"" > ./mealie/__init__.py | ||||
|  | ||||
|       - name: Build package and requirements.txt | ||||
|         env: | ||||
|           SKIP_PACKAGE_DEPS: true | ||||
|         run: | | ||||
|           task py:package | ||||
|  | ||||
|       - name: Archive built package | ||||
|         uses: actions/upload-artifact@v4 | ||||
|         with: | ||||
|           name: backend-dist | ||||
|           path: dist | ||||
|           retention-days: 5 | ||||
							
								
								
									
										2
									
								
								.github/workflows/pull-requests.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/pull-requests.yml
									
									
									
									
										vendored
									
									
								
							| @@ -19,7 +19,7 @@ jobs: | ||||
|     uses: ./.github/workflows/partial-backend.yml | ||||
|  | ||||
|   frontend-tests: | ||||
|     name: "Frontend and End-to-End Tests" | ||||
|     name: "Frontend Tests" | ||||
|     uses: ./.github/workflows/partial-frontend.yml | ||||
|  | ||||
|   container-scanning: | ||||
|   | ||||
							
								
								
									
										2
									
								
								.github/workflows/release.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/release.yml
									
									
									
									
										vendored
									
									
								
							| @@ -10,7 +10,7 @@ jobs: | ||||
|     uses: ./.github/workflows/partial-backend.yml | ||||
|  | ||||
|   frontend-tests: | ||||
|     name: "Frontend and End-to-End Tests" | ||||
|     name: "Frontend Tests" | ||||
|     uses: ./.github/workflows/partial-frontend.yml | ||||
|  | ||||
|   build-release: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user