Skip to content

Commit

Permalink
πŸ“¦ v0.0.2-rc.1 (#143)
Browse files Browse the repository at this point in the history
### Features

- ✨  #117 Allow to load dotenv files (@roma-glushko)

### Improvements

- βœ¨πŸ‘· #91 Support for Windows (@roma-glushko)
- πŸ‘· #139 Build Glide for OpenBSD and ppc65le, s390x, riscv64 architectures (@roma-glushko)

### Miscellaneous

- πŸ‘· #92 Release binaries to Snapcraft (@roma-glushko)
- πŸ‘· #123 publish images to DockerHub (@roma-glushko)
- πŸ”§ #136 Migrated all API to Fiber (@roma-glushko) 
- πŸ‘· #139 Create a image tag with pure version (without distro suffix) (@roma-glushko)
  • Loading branch information
roma-glushko committed Feb 12, 2024
1 parent b02c949 commit 62a0c59
Show file tree
Hide file tree
Showing 30 changed files with 658 additions and 298 deletions.
1 change: 1 addition & 0 deletions .env.sample
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
OPENAI_API_KEY=
15 changes: 15 additions & 0 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,13 @@ jobs:
with:
fetch-depth: 0

- name: Snapcraft Setup
run: |
sudo apt-get update
sudo apt-get -yq --no-install-suggests --no-install-recommends install snapcraft
mkdir -p $HOME/.cache/snapcraft/download
mkdir -p $HOME/.cache/snapcraft/stage-packages
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v5
with:
Expand All @@ -41,6 +48,7 @@ jobs:
args: release --clean
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAP_TOKEN }}
DISCORD_WEBHOOK_ID: ${{ secrets.DISCORD_WEBHOOK_ID }}
DISCORD_WEBHOOK_TOKEN: ${{ secrets.DISCORD_WEBHOOK_TOKEN }}
BREW_TAP_PRIVATE_KEY: ${{ secrets.BREW_TAP_PRIVATE_KEY }}
Expand All @@ -64,6 +72,9 @@ jobs:
- name: login into Github Container Registry
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $ --password-stdin

- name: login into Github Container Registry
run: echo "${{ secrets.DOCKER_HUB_TOKEN }}" | docker login -u einstack $ --password-stdin

- name: build ${{ matrix.image }} image
working-directory: ./images
env:
Expand All @@ -73,3 +84,7 @@ jobs:
- name: publish ${{ matrix.image }} image to Github Container Registry
working-directory: ./images
run: VERSION=${{ github.ref_name }} make publish-ghcr-${{ matrix.image }}

- name: publish ${{ matrix.image }} image to Github Container Registry
working-directory: ./images
run: VERSION=${{ github.ref_name }} make publish-docherhub-${{ matrix.image }}
112 changes: 111 additions & 1 deletion .goreleaser.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,21 @@ builds:
- linux
- darwin
- freebsd
- openbsd
- windows
goarch:
- amd64
- arm
- arm64
- ppc64le
- s390x
- riscv64
goarm:
- '7'
- '6'
ignore:
- goos: darwin
goarch: '386'
- goos: openbsd
goarch: arm
- goos: openbsd
Expand All @@ -30,7 +37,7 @@ builds:
goarch: arm
- goos: freebsd
goarch: arm64
- goos: linux
- goos: windows
goarch: arm

changelog:
Expand All @@ -45,6 +52,8 @@ archives:
format: zip
files:
- LICENSE
- CHANGELOG.md
- ROADMAP.md

checksum:
name_template: "{{ .ProjectName }}_v{{ .Version }}_checksums.txt"
Expand Down Expand Up @@ -221,6 +230,107 @@ brews:
url: 'git@github.com:EinStack/homebrew-tap.git'
private_key: '{{ .Env.BREW_TAP_PRIVATE_KEY }}'

snapcrafts:
- #
# ID of the snapcraft config, must be unique.
#
# Default: 'default'
id: glide

# Build IDs for the builds you want to create snapcraft packages for.
builds:
- glide

# You can change the name of the package.
#
# Default: '{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}{{ with .Arm }}v{{ . }}{{ end }}{{ with .Mips }}_{{ . }}{{ end }}{{ if not (eq .Amd64 "v1") }}{{ .Amd64 }}{{ end }}'
# Templates: allowed
name_template: '{{ .ProjectName }}_v{{ .Tag }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}'

# The name of the snap. This is optional.
#
# Default: ProjectName
name: glide

# The canonical title of the application, displayed in the software
# centre graphical frontends.
#
# Since: v1.19
title: Glide

# Whether to publish the snap to the snapcraft store.
# Remember you need to `snapcraft login` first.
publish: true

# Single-line elevator pitch for your amazing snap.
# 79 char long at most.
summary: A open simple blazing-fast model gateway

# This the description of your snap. You have a paragraph or two to tell the
# most important story about your snap. Keep it under 100 words though,
# we live in tweetspace and your description wants to look good in the snap
# store.
description: A open simple blazing-fast model gateway for rapid development of production GenAI apps

# Channels in store where snap will be pushed.
#
# More info about channels here:
# https://snapcraft.io/docs/reference/channels
#
# Default:
# grade is 'stable': ["edge", "beta", "candidate", "stable"]
# grade is 'devel': ["edge", "beta"]
# Templates: allowed (since v1.15)
channel_templates:
- edge
- beta
- candidate
- stable

# A guardrail to prevent you from releasing a snap to all your users before
# it is ready.
# `devel` will let you release only to the `edge` and `beta` channels in the
# store. `stable` will let you release also to the `candidate` and `stable`
# channels.
grade: stable

# Snaps can be setup to follow three different confinement policies:
# `strict`, `devmode` and `classic`. A strict confinement where the snap
# can only read and write in its own namespace is recommended. Extra
# permissions for strict snaps can be declared as `plugs` for the app, which
# are explained later. More info about confinement here:
# https://snapcraft.io/docs/reference/confinement
confinement: strict

# Your app's license, based on SPDX license expressions:
# https://spdx.org/licenses
license: Apache-2.0

# A snap of type base to be used as the execution environment for this snap.
# Valid values are:
# * bare - Empty base snap;
# * core - Ubuntu Core 16;
# * core18 - Ubuntu Core 18.
base: core20

# A list of features that must be supported by the core in order for
# this snap to install.
#
# Since: v1.19
assumes:
- snapd2.38

# Each binary built by GoReleaser is an app inside the snap. In this section
# you can declare extra details for those binaries. It is optional.
# See: https://snapcraft.io/docs/snapcraft-app-and-service-metadata
apps:
# The name of the app must be the same name as the binary built or the snapcraft name.
glide:
# You can override the command name.
#
# Default: AppName
command: glide

announce:
discord:
# Whether its enabled or not.
Expand Down
18 changes: 18 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,24 @@ The changelog consists of three categories:
- **Improvements** - bugfixes, performance and other types of improvements to existing functionality
- **Miscellaneous** - all other updates like build, release, CLI, etc.

## 0.0.2-rc.1 (Feb 12th, 2024)

### Features

- ✨#117 Allow to load dotenv files (@roma-glushko)

### Improvements

- βœ¨πŸ‘·#91 Support for Windows (@roma-glushko)
- πŸ‘· #139 Build Glide for OpenBSD and ppc65le, s390x, riscv64 architectures (@roma-glushko)

### Miscellaneous

- πŸ‘· #92 Release binaries to Snapcraft (@roma-glushko)
- πŸ‘· #123 publish images to DockerHub (@roma-glushko)
- πŸ”§ #136 Migrated all API to Fiber (@roma-glushko)
- πŸ‘· #139 Create a image tag with pure version (without distro suffix) (@roma-glushko)

## 0.0.1 (Jan 31st, 2024)

### Features
Expand Down
75 changes: 75 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# Contribution Guide

First off, we are super excited that you are willing to improve Glide πŸ™Œ

There are three areas to contribute:

- **Technical**: Help us to improve existing functionality, fix bugs, and bring on new features both to Glide and related repositories like Python SDK.
- **Documentation**: Improve documentation content, uncover undocumented features & gotchas, write guides and walkthroughs.
- **Vision**: Help us to uncover use cases where Glide could have helped that might be useful for a broader set of people

---

## Technical Contribution

### Communication & Coordination

We value your time.
To make your onboarding as smooth as possible while reducing amount of back and forth,
we coordinate and communicate in [the EinStack's Discord space](https://discord.gg/rsBzprY7uT) before jumping on anything major.

Overcommunication is the key to solving many problems.

### GEPs

We are using [enhancement proposals](https://github.com/EinStack/geps) to
define bigger problems and suggest our solutions to them.

The enhancement proposals share your ideas on solving the problem and let other people give a feedback,
identify areas to investigate, brainstorm alternatives.

To start a new GEP, you don't have to know all the answers to all questions.
You can outline gaps and let other people contribute their ideas on possible solutions.

### Dev Commands

Many useful commands are in [the root makefile](Makefile).
We use make as a convenient interface to automate a bunch of commands like codebase linting, running tests, running dev binary, etc.
Be sure to take a look at all available commands.

### CI Checks

All important checks are automated on the level of pull request checks.
Be sure to keep your PRs green, before moving the PR to the review stage.

## Improve Our Documentation

### Typos & Uncovered Functionality

If you spot a typo or incorrect information, please do use the `raise issue` or `suggest edits` functionality directly on the documentation page.

If you see some uncovered functionality, please fill briefly [a Github issue](https://github.com/EinStack/docs/issues).

### Guides

A special place takes our guides. Guide is a walkthrough that solves a concrete use case or problem step by step.

To inspire our end users and illustrate the true capabilities of Glide, we want to grow the number of guides.

If you have any specific use cases to cover, please do let us know in [Discord](https://discord.gg/rsBzprY7uT) or [our docs repo](https://github.com/EinStack/docs) (even if you don't have a chance to work on that).

## Expand Our Vision

If you feel like we have overlooked
some useful functionality or features that would be great to have,
feel free to create a new discussion in [our Github Discussions](https://github.com/EinStack/glide/discussions/categories/ideas).

We will review and discuss all ideas and will try to fit them into [the Glide's roadmap](ROADMAP.md).

## Don't want to contribute but uses Glide

That's perfectly fine!

Feel free to connect with us in [Discord](https://discord.gg/rsBzprY7uT) and ask any question you have.
Remember, there are no dumb questions, but there can be missing opportunities to make your life easier if you don't speak up about things you struggle with.

37 changes: 33 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ Check out our [documentation](https://glide.einstack.ai)!
- **High availability** and **resiliency** when working with external model providers. Automatic **fallbacks** on provider failures, rate limits, transient errors. Smart retries to reduce communication latency.
- Support **popular LLM providers**.
- **High performance**. Performance is our priority. We want to keep Glide "invisible" for your latency-wise, while providing rich functionality.
- **Production-ready observability** via OpenTelemetry, emit metrics on models health, allows whitebox monitoring.
- **Production-ready observability** via OpenTelemetry, emit metrics on models health, allows whitebox monitoring (coming soon)
- Straightforward and simple maintenance and configuration, centralized API key control & management & rotation, etc.

## Supported Providers
Expand Down Expand Up @@ -72,6 +72,9 @@ Detailed info on routers can be found [here](https://glide.einstack.ai/essential

### Installation

> [!Note]
> Windows users should follow an instruction right from [the demo README file](https://github.com/EinStack/glide-demo) that specifies how to do the steps without the `make` command as Windows doesn't come with it by default.
The easiest way to deploy Glide is to our [demo repository](https://github.com/EinStack/glide-demo.git) and [docker-compose](https://docs.docker.com/compose/).

### 1. Clone the demo repository
Expand Down Expand Up @@ -120,7 +123,7 @@ See [API Reference](https://glide.einstack.ai/api-reference/introduction) for mo

### API Docs

Finally, Glide comes with OpenAPI documentation that is accessible via http://127.0.0.1:9099/v1/swagger/index.html
Finally, Glide comes with OpenAPI documentation that is accessible via http://127.0.0.1:9099/v1/swagger

That's it πŸ™Œ

Expand All @@ -139,11 +142,37 @@ brew install einstack/tap/glide

### Snapcraft (Linux)

Coming Soon
[![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-white.svg)](https://snapcraft.io/glide)

```bash
snap install glide
```

To upgrade the already installed package, you just need to run:

```bash
snap refresh glide
```

Detailed instruction on Snapcraft installation for different Linux distos:

- [Arch](https://snapcraft.io/install/glide/arch)
- [CentOS](https://snapcraft.io/install/glide/centos)
- [Debian](https://snapcraft.io/install/glide/debian)
- [elementaryOS](https://snapcraft.io/install/glide/elementary)
- [Fedora](https://snapcraft.io/install/glide/fedora)
- [KDE Neon](https://snapcraft.io/install/glide/kde-neon)
- [Kubuntu](https://snapcraft.io/install/glide/kubuntu)
- [Manjaro](https://snapcraft.io/install/glide/manjaro)
- [Pop! OS](https://snapcraft.io/install/glide/pop)
- [openSUSE](https://snapcraft.io/install/glide/opensuse)
- [RHEL](https://snapcraft.io/install/glide/rhel)
- [Ubuntu](https://snapcraft.io/install/glide/ubuntu)
- [Raspberry Pi](https://snapcraft.io/install/glide/raspbian)

### Docker Images

Glide provides official images in our [GHCR](https://github.com/EinStack/glide/pkgs/container/glide):
Glide provides official images in our [GHCR](https://github.com/EinStack/glide/pkgs/container/glide) & [DockerHub](https://hub.docker.com/u/einstack ):

- Alpine 3.19:
```bash
Expand Down
Loading

0 comments on commit 62a0c59

Please sign in to comment.