From 5c8b16fbafb6a9e5ec624e9c6ccce7ef7890c5a6 Mon Sep 17 00:00:00 2001 From: Danny Avila Date: Mon, 1 Apr 2024 15:48:57 -0400 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20v0.7.0=20(#2266)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ✨ v0.7.0 * chore: gitignore * 🐳 ci: update release image workflows --- .github/workflows/container.yml | 82 +++++++++-------------- .github/workflows/main-image-workflow.yml | 47 ++++++++----- .gitignore | 5 +- .husky/pre-commit | 3 +- Dockerfile | 2 + Dockerfile.multi | 2 + client/src/components/Chat/Footer.tsx | 3 +- client/src/components/Input/Footer.tsx | 3 +- e2e/jestSetup.js | 2 +- index.html | 2 +- packages/data-provider/src/config.ts | 2 +- prettier.config.js | 2 +- 12 files changed, 80 insertions(+), 75 deletions(-) diff --git a/.github/workflows/container.yml b/.github/workflows/container.yml index ffc2016ec..2480405eb 100644 --- a/.github/workflows/container.yml +++ b/.github/workflows/container.yml @@ -1,28 +1,36 @@ -name: Docker Compose Build on Tag +name: Docker Images Build on Tag -# The workflow is triggered when a tag is pushed on: push: tags: - - "*" + - 'v*' jobs: build: runs-on: ubuntu-latest + strategy: + matrix: + include: + - target: api-build + file: Dockerfile.multi + image_name: librechat-api + - target: node + file: Dockerfile + image_name: librechat steps: # Check out the repository - name: Checkout uses: actions/checkout@v4 - # Set up Docker - - name: Set up Docker - uses: docker/setup-buildx-action@v3 - - # Set up QEMU for cross-platform builds + # Set up QEMU - name: Set up QEMU uses: docker/setup-qemu-action@v3 + # Set up Docker Buildx + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + # Log in to GitHub Container Registry - name: Log in to GitHub Container Registry uses: docker/login-action@v2 @@ -31,53 +39,29 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - # Prepare Docker Build - - name: Build Docker images + # Login to Docker Hub + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + # Prepare the environment + - name: Prepare environment run: | cp .env.example .env - # Tag and push librechat-api - - name: Docker metadata for librechat-api - id: meta-librechat-api - uses: docker/metadata-action@v5 - with: - images: | - ghcr.io/${{ github.repository_owner }}/librechat-api - tags: | - type=raw,value=latest - type=semver,pattern={{version}} - type=semver,pattern={{major}} - type=semver,pattern={{major}}.{{minor}} - - - name: Build and librechat-api + # Build and push Docker images for each target + - name: Build and push Docker images uses: docker/build-push-action@v5 with: - file: Dockerfile.multi context: . + file: ${{ matrix.file }} push: true - tags: ${{ steps.meta-librechat-api.outputs.tags }} - platforms: linux/amd64,linux/arm64 - target: api-build - - # Tag and push librechat - - name: Docker metadata for librechat - id: meta-librechat - uses: docker/metadata-action@v5 - with: - images: | - ghcr.io/${{ github.repository_owner }}/librechat tags: | - type=raw,value=latest - type=semver,pattern={{version}} - type=semver,pattern={{major}} - type=semver,pattern={{major}}.{{minor}} - - - name: Build and librechat - uses: docker/build-push-action@v5 - with: - file: Dockerfile - context: . - push: true - tags: ${{ steps.meta-librechat.outputs.tags }} + ghcr.io/${{ github.repository_owner }}/${{ matrix.image_name }}:${{ github.ref_name }} + ghcr.io/${{ github.repository_owner }}/${{ matrix.image_name }}:latest + ${{ secrets.DOCKERHUB_USERNAME }}/${{ matrix.image_name }}:${{ github.ref_name }} + ${{ secrets.DOCKERHUB_USERNAME }}/${{ matrix.image_name }}:latest platforms: linux/amd64,linux/arm64 - target: node \ No newline at end of file + target: ${{ matrix.target }} diff --git a/.github/workflows/main-image-workflow.yml b/.github/workflows/main-image-workflow.yml index a990e04ae..2a055f4d1 100644 --- a/.github/workflows/main-image-workflow.yml +++ b/.github/workflows/main-image-workflow.yml @@ -1,12 +1,20 @@ name: Docker Compose Build Latest Main Image Tag (Manual Dispatch) -# The workflow is manually triggered on: workflow_dispatch: jobs: build: runs-on: ubuntu-latest + strategy: + matrix: + include: + - target: api-build + file: Dockerfile.multi + image_name: librechat-api + - target: node + file: Dockerfile + image_name: librechat steps: - name: Checkout @@ -30,26 +38,29 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - # Docker metadata for librechat - - name: Docker metadata for librechat - id: meta-librechat - uses: docker/metadata-action@v5 + # Login to Docker Hub + - name: Login to Docker Hub + uses: docker/login-action@v3 with: - images: ghcr.io/${{ github.repository_owner }}/librechat - tags: | - type=raw,value=${{ env.LATEST_TAG }},enable=true - type=raw,value=latest,enable=true - type=semver,pattern={{version}} - type=semver,pattern={{major}} - type=semver,pattern={{major}}.{{minor}} + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} - # Build and push librechat with only linux/amd64 platform - - name: Build and push librechat + # Prepare the environment + - name: Prepare environment + run: | + cp .env.example .env + + # Build and push Docker images for each target + - name: Build and push Docker images uses: docker/build-push-action@v5 with: - file: Dockerfile context: . + file: ${{ matrix.file }} push: true - tags: ${{ steps.meta-librechat.outputs.tags }} - platforms: linux/amd64 - target: node + tags: | + ghcr.io/${{ github.repository_owner }}/${{ matrix.image_name }}:${{ env.LATEST_TAG }} + ghcr.io/${{ github.repository_owner }}/${{ matrix.image_name }}:latest + ${{ secrets.DOCKERHUB_USERNAME }}/${{ matrix.image_name }}:${{ env.LATEST_TAG }} + ${{ secrets.DOCKERHUB_USERNAME }}/${{ matrix.image_name }}:latest + platforms: linux/amd64,linux/arm64 + target: ${{ matrix.target }} diff --git a/.gitignore b/.gitignore index 2b05c83ca..c55115988 100644 --- a/.gitignore +++ b/.gitignore @@ -93,4 +93,7 @@ auth.json !client/src/components/Nav/SettingsTabs/Data/ # User uploads -uploads/ \ No newline at end of file +uploads/ + +# owner +release/ \ No newline at end of file diff --git a/.husky/pre-commit b/.husky/pre-commit index af8562807..3d79821bb 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1,5 @@ -#!/usr/bin/env sh +# v0.7.0 +#!/usr/bin/env sh set -e . "$(dirname -- "$0")/_/husky.sh" [ -n "$CI" ] && exit 0 diff --git a/Dockerfile b/Dockerfile index cc845c055..31350bc6e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,5 @@ +# v0.7.0 + # Base node image FROM node:18-alpine AS node diff --git a/Dockerfile.multi b/Dockerfile.multi index b8bec395a..b94c47577 100644 --- a/Dockerfile.multi +++ b/Dockerfile.multi @@ -1,3 +1,5 @@ +# v0.7.0 + # Build API, Client and Data Provider FROM node:20-alpine AS base diff --git a/client/src/components/Chat/Footer.tsx b/client/src/components/Chat/Footer.tsx index 6095a95ed..f5ee1b167 100644 --- a/client/src/components/Chat/Footer.tsx +++ b/client/src/components/Chat/Footer.tsx @@ -1,4 +1,5 @@ import React from 'react'; +import { Constants } from 'librechat-data-provider'; import { useGetStartupConfig } from 'librechat-data-provider/react-query'; import { useLocalize } from '~/hooks'; @@ -38,7 +39,7 @@ export default function Footer() { ) : ( <> - {config?.appTitle || 'LibreChat'} v0.6.10 + {config?.appTitle || 'LibreChat'} {Constants.VERSION} {' - '} {localize('com_ui_new_footer')} diff --git a/client/src/components/Input/Footer.tsx b/client/src/components/Input/Footer.tsx index 62c9a3d10..c5fabecc6 100644 --- a/client/src/components/Input/Footer.tsx +++ b/client/src/components/Input/Footer.tsx @@ -1,3 +1,4 @@ +import { Constants } from 'librechat-data-provider'; import { useGetStartupConfig } from 'librechat-data-provider/react-query'; import { useLocalize } from '~/hooks'; @@ -12,7 +13,7 @@ export default function Footer() { ) : ( <> - {config?.appTitle || 'LibreChat'} v0.6.10 + {config?.appTitle || 'LibreChat'} {Constants.VERSION} {' - '}. {localize('com_ui_pay_per_call')} diff --git a/e2e/jestSetup.js b/e2e/jestSetup.js index 64f5bc40a..aadb509ef 100644 --- a/e2e/jestSetup.js +++ b/e2e/jestSetup.js @@ -1,3 +1,3 @@ -// v0.6.10 +// v0.7.0 // See .env.test.example for an example of the '.env.test' file. require('dotenv').config({ path: './e2e/.env.test' }); diff --git a/index.html b/index.html index b2655426d..b49a9f23f 100644 --- a/index.html +++ b/index.html @@ -1,4 +1,4 @@ - + diff --git a/packages/data-provider/src/config.ts b/packages/data-provider/src/config.ts index 56faa115d..89b4a9ced 100644 --- a/packages/data-provider/src/config.ts +++ b/packages/data-provider/src/config.ts @@ -521,7 +521,7 @@ export enum Constants { /** * Key for the app's version. */ - VERSION = 'v0.6.10', + VERSION = 'v0.7.0', /** * Key for the Custom Config's version (librechat.yaml). */ diff --git a/prettier.config.js b/prettier.config.js index 9f1e18e9a..b5f346f46 100644 --- a/prettier.config.js +++ b/prettier.config.js @@ -1,4 +1,4 @@ -// v0.6.10 +// v0.7.0 module.exports = { tailwindConfig: './client/tailwind.config.cjs', printWidth: 100,