Skip to content

Publish Indexify Binaries #33

Publish Indexify Binaries

Publish Indexify Binaries #33

name: Publish Indexify Binaries
on:
workflow_dispatch:
inputs:
release_message:
type: string
description: Release message
required: true
prerelease:
type: boolean
description: Is this a pre-release version?
required: false
default: false
permissions:
contents: write
actions: write
packages: write
env:
CARGO_TERM_COLOR: always
defaults:
run:
working-directory: ./server
jobs:
build-release-packages:
uses: ./.github/workflows/wf_build_indexify_server_release_packages.yaml
extract-version:
name: Extract Version Number
runs-on: ubuntu-latest
outputs:
version: ${{ steps.version_extraction.outputs.version }}
steps:
- uses: actions/checkout@v4
- id: version_extraction
run: echo "version=$(cargo metadata --format-version 1 | jq '.packages[] | select(.name == "indexify-server") | .version' | xargs)" >> "$GITHUB_OUTPUT"
create-release:
name: Create GitHub Release
runs-on: ubuntu-latest
needs:
- build-release-packages
- extract-version
steps:
- uses: actions/checkout@v4
- run: mkdir -p /tmp/release
- name: Download Artifacts
uses: actions/download-artifact@v4
with:
path: /tmp/release/
- name: Name Artifacts
run: |
# mv /tmp/release/indexify-server-windows-amd64.exe/indexify-server.exe /tmp/release/indexify-server-${{ needs.extract-version.outputs.version }}-windows-amd64.exe
mv /tmp/release/indexify-server-darwin-arm64/indexify-server /tmp/release/indexify-server-${{ needs.extract-version.outputs.version }}-darwin-arm64
# mv /tmp/release/indexify-server-darwin-amd64/indexify-server /tmp/release/indexify-server-${{ needs.extract-version.outputs.version }}-darwin-amd64
mv /tmp/release/indexify-server-linux-amd64/indexify-server /tmp/release/indexify-server-${{ needs.extract-version.outputs.version }}-linux-amd64
mv /tmp/release/indexify-server-deb-linux-amd64/indexify-server_${{ needs.extract-version.outputs.version }}-1_amd64.deb /tmp/release/indexify-server-${{ needs.extract-version.outputs.version }}-linux-amd64.deb
mv /tmp/release/indexify-server-deb-linux-aarch64/indexify-server_${{ needs.extract-version.outputs.version }}-1_arm64.deb /tmp/release/indexify-server-${{ needs.extract-version.outputs.version }}-linux-arm64.deb
- name: Create GitHub Release
id: create_release
uses: actions/create-release@v1
with:
tag_name: "v${{ needs.extract-version.outputs.version }}"
prerelease: ${{ github.event.inputs.prerelease }}
body: ${{ github.event.inputs.release_message }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
#- name: Upload Windows Binary
# uses: actions/upload-release-asset@v1
# with:
# upload_url: ${{ steps.create_release.outputs.upload_url }}
# asset_path: /tmp/release/indexify-server-${{ needs.extract-version.outputs.version }}-windows-amd64.exe
# asset_name: indexify-server-${{ needs.extract-version.outputs.version }}-windows-amd64.exe
# asset_content_type: application/octet-stream
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload Linux Binary
uses: actions/upload-release-asset@v1
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: /tmp/release/indexify-server-${{ needs.extract-version.outputs.version }}-linux-amd64
asset_name: indexify-server-${{ needs.extract-version.outputs.version }}-linux-amd64
asset_content_type: application/octet-stream
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload macOS Binary
uses: actions/upload-release-asset@v1
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: /tmp/release/indexify-server-${{ needs.extract-version.outputs.version }}-darwin-arm64
asset_name: indexify-server-${{ needs.extract-version.outputs.version }}-darwin-arm64
asset_content_type: application/octet-stream
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# - name: Upload macOS x86 Binary
# uses: actions/upload-release-asset@v1
# with:
# upload_url: ${{ steps.create_release.outputs.upload_url }}
# asset_path: /tmp/release/indexify-server-${{ needs.extract-version.outputs.version }}-darwin-amd64
# asset_name: indexify-server-${{ needs.extract-version.outputs.version }}-darwin-amd64
# asset_content_type: application/octet-stream
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload Linux Deb Package for amd64
uses: actions/upload-release-asset@v1
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: /tmp/release/indexify-server-${{ needs.extract-version.outputs.version }}-linux-amd64.deb
asset_name: indexify-server-${{ needs.extract-version.outputs.version }}-linux-amd64.deb
asset_content_type: application/octet-stream
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload Linux Deb Package for arm64
uses: actions/upload-release-asset@v1
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: /tmp/release/indexify-server-${{ needs.extract-version.outputs.version }}-linux-arm64.deb
asset_name: indexify-server-${{ needs.extract-version.outputs.version }}-linux-arm64.deb
asset_content_type: application/octet-stream
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: install reprepro
run: sudo apt-get update && sudo apt-get install -y reprepro
- name: Run reprepro
run: |
ls /tmp/release/
(cd .repo && reprepro includedeb buster /tmp/release/*.deb)
(cd .repo && reprepro includedeb focal /tmp/release/*.deb)
(cd .repo && reprepro includedeb jammy /tmp/release/*.deb)
ls .repo/
- uses: ryand56/r2-upload-action@latest
with:
r2-account-id: ${{ secrets.R2_ACCOUNT_ID }}
r2-access-key-id: ${{ secrets.R2_ACCESS_KEY_ID }}
r2-secret-access-key: ${{ secrets.R2_SECRET_ACCESS_KEY }}
r2-bucket: ${{ secrets.R2_BUCKET }}
source-dir: server/.repo/
destination-dir: ./repo
build-and-push-docker-images:
name: Build and Push Docker Images
runs-on: ubuntu-latest
needs:
- extract-version
- create-release
steps:
- uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- run: |
docker buildx build --platform=linux/amd64,linux/arm64 --push . -t tensorlake/indexify-server:latest -f dockerfiles/Dockerfile.release_server;
tag="";
for i in $(echo ${{ needs.extract-version.outputs.version }} | tr '.' '\n')
do
if [[ $tag == "" ]]; then
tag="$i";
else
tag="$tag.$i";
fi
docker buildx build --platform=linux/amd64,linux/arm64 --push . -t tensorlake/indexify-server:$tag -f dockerfiles/Dockerfile.release_server;
done