Skip to content

Create lambda infrastructure #8

Create lambda infrastructure

Create lambda infrastructure #8

name: Build and publish AWS Lambda packages
on:
# push:
# tags:
# - "v*"
workflow_dispatch:
# TODO: Remove before merging
pull_request:
env:
PRERELEASE_VERSION_NAME: beta
jobs:
build-lambdas:
name: Build Quickwit Lambdas
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Ubuntu packages
run: sudo apt-get -y install protobuf-compiler python3 python3-pip
- name: Install rustup
run: curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain none -y
- name: Install cargo lambda
run: pip3 install cargo-lambda
- name: Extract asset version of release
run: echo "ASSET_VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV
if: ${{ github.event_name == 'push' }}
- name: Setting version as prerelease
run: echo "ASSET_VERSION=${{ env.PRERELEASE_VERSION_NAME }}" >> $GITHUB_ENV
if: ${{ github.event_name == 'workflow_dispatch' || github.event_name == 'pull_request' }}
- name: Extract asset name
run: |
echo "SEARCHER_ASSET_FULL_NAME=quickwit-lambda-searcher-${{ env.ASSET_VERSION }}-x86_64.zip" >> $GITHUB_ENV
echo "INDEXER_ASSET_FULL_NAME=quickwit-lambda-indexer-${{ env.ASSET_VERSION }}-x86_64.zip" >> $GITHUB_ENV
- name: Retrieve and export commit date, hash, and tags
run: |
echo "QW_COMMIT_DATE=$(TZ=UTC0 git log -1 --format=%cd --date=format-local:%Y-%m-%dT%H:%M:%SZ)" >> $GITHUB_ENV
echo "QW_COMMIT_HASH=$(git rev-parse HEAD)" >> $GITHUB_ENV
echo "QW_COMMIT_TAGS=$(git tag --points-at HEAD | tr '\n' ',')" >> $GITHUB_ENV
- name: Build Quickwit Lambdas
run: |
cargo lambda build -p quickwit-lambda --release --output-format zip
mv target/lambda/searcher/bootstrap.zip ${{ env.SEARCHER_ASSET_FULL_NAME }}
mv target/lambda/indexer/bootstrap.zip ${{ env.INDEXER_ASSET_FULL_NAME }}
env:
QW_COMMIT_DATE: ${{ env.QW_COMMIT_DATE }}
QW_COMMIT_HASH: ${{ env.QW_COMMIT_HASH }}
QW_COMMIT_TAGS: ${{ env.QW_COMMIT_TAGS }}
working-directory: ./quickwit
- name: Upload Lambda archives
uses: quickwit-inc/upload-to-github-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
file: "${{ env.SEARCHER_ASSET_FULL_NAME }};${{ env.INDEXER_ASSET_FULL_NAME }}"
overwrite: true
draft: ${{ env.ASSET_VERSION != env.PRERELEASE_VERSION_NAME }}
tag_name: ${{ env.ASSET_VERSION }}