mirror of
https://github.com/meilisearch/MeiliSearch
synced 2024-11-25 22:34:28 +01:00
Remove Azure CI
Add gh actions for cargo check using rust nightly Add readme about actions workflows Add basic Dockerfile Add action workflow for docker publish Change check action to test action Update workflow readme without rust nightly Rename test action file Add gh actions to push latest docker image from master Update github action for publish docker image Add 2 steps dockerfile based on alpine Update readme badges to match new CI
This commit is contained in:
parent
ab3e8d6537
commit
04c2b37d82
5
.dockerignore
Normal file
5
.dockerignore
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
target
|
||||||
|
Dockerfile
|
||||||
|
.dockerignore
|
||||||
|
.git
|
||||||
|
.gitignore
|
13
.github/workflows/README.md
vendored
Normal file
13
.github/workflows/README.md
vendored
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
# GitHub actions workflow for MeiliDB
|
||||||
|
|
||||||
|
> **Note:**
|
||||||
|
|
||||||
|
> - We do not use [cache](https://github.com/actions/cache) yet but we could use it to speed up CI
|
||||||
|
|
||||||
|
## Workflow
|
||||||
|
|
||||||
|
- On each pull request, we are triggering `cargo test`.
|
||||||
|
- On each commit on master, we are building the latest docker image.
|
||||||
|
|
||||||
|
## TODO
|
||||||
|
- On each tag, we should build the tagged docker image and the binaries for Debian & CentOS
|
19
.github/workflows/publish-docker-latest.yml
vendored
Normal file
19
.github/workflows/publish-docker-latest.yml
vendored
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
name: Publish latest image to Docker Hub
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- name: Publish to Registry
|
||||||
|
uses: elgohr/Publish-Docker-Github-Action@master
|
||||||
|
with:
|
||||||
|
name: getmeili/meilisearch
|
||||||
|
username: ${{ secrets.DOCKER_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
20
.github/workflows/publish-docker-tag.yml
vendored
Normal file
20
.github/workflows/publish-docker-tag.yml
vendored
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- '*'
|
||||||
|
|
||||||
|
name: Publish tagged image to Docker Hub
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- name: Publish to Registry
|
||||||
|
uses: elgohr/Publish-Docker-Github-Action@master
|
||||||
|
with:
|
||||||
|
name: getmeili/meilisearch
|
||||||
|
username: ${{ secrets.DOCKER_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||||
|
tags: true
|
20
.github/workflows/test.yml
vendored
Normal file
20
.github/workflows/test.yml
vendored
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
on: [pull_request]
|
||||||
|
|
||||||
|
name: Cargo test
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check:
|
||||||
|
name: MeiliDB
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
profile: minimal
|
||||||
|
toolchain: stable
|
||||||
|
override: true
|
||||||
|
- name: Run cargo test
|
||||||
|
uses: actions-rs/cargo@v1
|
||||||
|
with:
|
||||||
|
command: test
|
28
Dockerfile
Normal file
28
Dockerfile
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
# Compile
|
||||||
|
FROM alpine:3.10 AS compiler
|
||||||
|
|
||||||
|
RUN apk update --quiet
|
||||||
|
RUN apk add curl
|
||||||
|
RUN apk add build-base
|
||||||
|
RUN apk add libressl-dev
|
||||||
|
|
||||||
|
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
||||||
|
|
||||||
|
WORKDIR /meilisearch
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
ENV RUSTFLAGS="-C target-feature=-crt-static"
|
||||||
|
|
||||||
|
RUN $HOME/.cargo/bin/cargo build --release
|
||||||
|
|
||||||
|
# Run
|
||||||
|
FROM alpine:3.10
|
||||||
|
|
||||||
|
RUN apk update --quiet
|
||||||
|
RUN apk add libressl
|
||||||
|
RUN apk add build-base
|
||||||
|
|
||||||
|
COPY --from=compiler /meilisearch/target/release/meilidb-http .
|
||||||
|
|
||||||
|
CMD ./meilidb-http
|
11
README.md
11
README.md
@ -1,6 +1,6 @@
|
|||||||
# MeiliDB
|
# MeiliDB
|
||||||
|
|
||||||
[![Build Status](https://dev.azure.com/thomas0884/thomas/_apis/build/status/meilisearch.MeiliDB?branchName=master)](https://dev.azure.com/thomas0884/thomas/_build/latest?definitionId=1&branchName=master)
|
[![Build Status](https://github.com/meilisearch/MeiliDB/workflows/Cargo%20test/badge.svg)](https://dev.azure.com/thomas0884/thomas/_build/latest?definitionId=1&branchName=master)
|
||||||
[![dependency status](https://deps.rs/repo/github/meilisearch/MeiliDB/status.svg)](https://deps.rs/repo/github/meilisearch/MeiliDB)
|
[![dependency status](https://deps.rs/repo/github/meilisearch/MeiliDB/status.svg)](https://deps.rs/repo/github/meilisearch/MeiliDB)
|
||||||
[![License](https://img.shields.io/badge/license-commons%20clause-lightgrey)](https://commonsclause.com/)
|
[![License](https://img.shields.io/badge/license-commons%20clause-lightgrey)](https://commonsclause.com/)
|
||||||
|
|
||||||
@ -27,7 +27,7 @@ It uses [LMDB](https://en.wikipedia.org/wiki/Lightning_Memory-Mapped_Database) a
|
|||||||
|
|
||||||
You can [read the deep dive](deep-dive.md) if you want more information on the engine, it describes the whole process of generating updates and handling queries or you can take a look at the [typos and ranking rules](typos-ranking-rules.md) if you want to know the default rules used to sort the documents.
|
You can [read the deep dive](deep-dive.md) if you want more information on the engine, it describes the whole process of generating updates and handling queries or you can take a look at the [typos and ranking rules](typos-ranking-rules.md) if you want to know the default rules used to sort the documents.
|
||||||
|
|
||||||
We will be proud if you submit issues and pull requests. You can help to grow this project and start contributing by checking [issues tagged "good-first-issue"](https://github.com/meilisearch/MeiliDB/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22). It is a good start!
|
We will be glad if you submit issues and pull requests. You can help to grow this project and start contributing by checking [issues tagged "good-first-issue"](https://github.com/meilisearch/MeiliDB/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22). It is a good start!
|
||||||
|
|
||||||
[![crates.io demo gif](misc/crates-io-demo.gif)](https://crates.meilisearch.com)
|
[![crates.io demo gif](misc/crates-io-demo.gif)](https://crates.meilisearch.com)
|
||||||
|
|
||||||
@ -47,7 +47,6 @@ If you have not installed Rust and its package manager `cargo` yet, go to [the i
|
|||||||
You can deploy the server on your own machine, it will listen to HTTP requests on the 8080 port by default.
|
You can deploy the server on your own machine, it will listen to HTTP requests on the 8080 port by default.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
rustup override set nightly
|
|
||||||
cargo run --release
|
cargo run --release
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -112,8 +111,8 @@ curl 'http://127.0.0.1:8080/indexes/movies/search?q=botman'
|
|||||||
|
|
||||||
## Performances
|
## Performances
|
||||||
|
|
||||||
With a dataset composed of _100 353_ documents with _352_ attributes each and _3_ of them indexed.
|
With a dataset composed of _100 353_ documents with _352_ attributes each and _3_ of them indexed.
|
||||||
So more than _300 000_ fields indexed for _35 million_ stored we can handle more than _2.8k req/sec_ with an average response time of _9 ms_ on an Intel i7-7700 (8) @ 4.2GHz.
|
So more than _300 000_ fields indexed for _35 million_ stored we can handle more than _2.8k req/sec_ with an average response time of _9 ms_ on an Intel i7-7700 (8) @ 4.2GHz.
|
||||||
|
|
||||||
Requests are made using [wrk](https://github.com/wg/wrk) and scripted to simulate real users queries.
|
Requests are made using [wrk](https://github.com/wg/wrk) and scripted to simulate real users queries.
|
||||||
|
|
||||||
@ -128,7 +127,7 @@ Requests/sec: 2806.46
|
|||||||
Transfer/sec: 759.17KB
|
Transfer/sec: 759.17KB
|
||||||
```
|
```
|
||||||
|
|
||||||
We also indexed a dataset containing something like _12 millions_ cities names in _24 minutes_ on a machine with _8 cores_, _64 GB of RAM_ and a _300 GB NMVe_ SSD.<br/>
|
We also indexed a dataset containing something like _12 millions_ cities names in _24 minutes_ on a machine with _8 cores_, _64 GB of RAM_ and a _300 GB NMVe_ SSD.<br/>
|
||||||
The resulting database was _16 GB_ and search results were between _30 ms_ and _4 seconds_ for short prefix queries.
|
The resulting database was _16 GB_ and search results were between _30 ms_ and _4 seconds_ for short prefix queries.
|
||||||
|
|
||||||
### Notes
|
### Notes
|
||||||
|
@ -1,52 +0,0 @@
|
|||||||
---
|
|
||||||
trigger:
|
|
||||||
branches:
|
|
||||||
include: [ master ]
|
|
||||||
|
|
||||||
pr: [ master ]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
- job: test
|
|
||||||
pool:
|
|
||||||
vmImage: 'Ubuntu 16.04'
|
|
||||||
container: tpayet/chiquitita:latest
|
|
||||||
steps:
|
|
||||||
- script: |
|
|
||||||
curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain stable
|
|
||||||
$HOME/.cargo/bin/rustup component add rustfmt
|
|
||||||
displayName: 'Install rustc and components'
|
|
||||||
- script: |
|
|
||||||
$HOME/.cargo/bin/cargo check
|
|
||||||
displayName: 'Check MeiliDB'
|
|
||||||
- script: |
|
|
||||||
$HOME/.cargo/bin/cargo test
|
|
||||||
displayName: 'Test MeiliDB'
|
|
||||||
- script: |
|
|
||||||
$HOME/.cargo/bin/cargo fmt --all -- --check
|
|
||||||
displayName: 'Fmt MeiliDB'
|
|
||||||
|
|
||||||
- job: build
|
|
||||||
dependsOn:
|
|
||||||
- test
|
|
||||||
condition: succeeded()
|
|
||||||
pool:
|
|
||||||
vmImage: 'Ubuntu 16.04'
|
|
||||||
container: tpayet/chiquitita:latest
|
|
||||||
steps:
|
|
||||||
- script: |
|
|
||||||
curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain stable
|
|
||||||
$HOME/.cargo/bin/rustup component add rustfmt
|
|
||||||
displayName: 'Install rustc and components'
|
|
||||||
- script: |
|
|
||||||
$HOME/.cargo/bin/cargo build --release
|
|
||||||
displayName: 'Build MeiliDB'
|
|
||||||
- task: CopyFiles@2
|
|
||||||
inputs:
|
|
||||||
contents: '$(System.DefaultWorkingDirectory)/target/release/meilidb-http'
|
|
||||||
targetFolder: $(Build.ArtifactStagingDirectory)
|
|
||||||
displayName: 'Copy build'
|
|
||||||
- task: PublishBuildArtifacts@1
|
|
||||||
inputs:
|
|
||||||
artifactName: meilidb
|
|
||||||
displayName: 'Upload artifacts'
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user