Skip to content

whamCloud Release

whamCloud Release #20

name: whamCloud Release
on:
workflow_dispatch:
inputs:
version:
description: 'Release version (e.g., 1.0.0)'
required: true
default: '1.0.0'
prerelease:
description: 'Mark as pre-release'
required: false
type: boolean
default: false
permissions:
contents: write
jobs:
build-and-release:
name: Build and Release VictoriaLogs
runs-on: [self-hosted, victoria-logs]
steps:
- name: Checkout VictoriaLogs repository
uses: actions/checkout@v5
with:
fetch-depth: 0
path: VictoriaLogs
- name: Build VictoriaLogs tarballs
working-directory: VictoriaLogs
run: |
make -f Makefile.whamcloud whamcloud-release VERSION=${{ github.event.inputs.version }}
env:
WHAMCLOUD_VERSION: ${{ github.event.inputs.version }}
- name: List build artifacts
working-directory: VictoriaLogs
run: |
echo "Build artifacts:"
ls -lh bin/victoria-logs-linux-amd64-v${{ github.event.inputs.version }}.tar.gz
ls -lh bin/victoria-logs-linux-amd64-v${{ github.event.inputs.version }}_checksums.txt
ls -lh bin/vlutils-linux-amd64-v${{ github.event.inputs.version }}.tar.gz
ls -lh bin/vlutils-linux-amd64-v${{ github.event.inputs.version }}_checksums.txt
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ github.event.inputs.version }}
release_name: VictoriaLogs v${{ github.event.inputs.version }}
body: |
# VictoriaLogs v${{ github.event.inputs.version }}
whamCloud custom build of VictoriaLogs for Linux AMD64.
## 📦 What's Included
This release contains:
- **victoria-logs** - Main VictoriaLogs server for log management and analytics
- **vlagent** - Log collection agent for shipping logs to VictoriaLogs
- **vlogscli** - Interactive command-line tool for querying VictoriaLogs
## 🚀 Installation Options
### Option 1: RPM Packages (Recommended for EL8/RHEL8)
#### Enterprise Linux 8 / RHEL 8 / Rocky Linux 8 / AlmaLinux 8
```bash
# Download and install victorialogs
wget https://github.com/whamCloud/VictoriaLogs/releases/download/v${{ github.event.inputs.version }}/victorialogs-${{ github.event.inputs.version }}-1.el8.x86_64.rpm
sudo dnf install -y ./victorialogs-${{ github.event.inputs.version }}-1.el8.x86_64.rpm
# Download and install vlagent (optional)
wget https://github.com/whamCloud/VictoriaLogs/releases/download/v${{ github.event.inputs.version }}/vlagent-${{ github.event.inputs.version }}-1.el8.x86_64.rpm
sudo dnf install -y ./vlagent-${{ github.event.inputs.version }}-1.el8.x86_64.rpm
# Download and install vlogscli (optional)
wget https://github.com/whamCloud/VictoriaLogs/releases/download/v${{ github.event.inputs.version }}/vlogscli-${{ github.event.inputs.version }}-1.el8.x86_64.rpm
sudo dnf install -y ./vlogscli-${{ github.event.inputs.version }}-1.el8.x86_64.rpm
# Start services
sudo systemctl enable --now victorialogs
sudo systemctl status victorialogs
```
#### Enterprise Linux 9 / RHEL 9 / Rocky Linux 9 / AlmaLinux 9
```bash
# Download and install victorialogs
wget https://github.com/whamCloud/VictoriaLogs/releases/download/v${{ github.event.inputs.version }}/victorialogs-${{ github.event.inputs.version }}-1.el9.x86_64.rpm
sudo dnf install -y ./victorialogs-${{ github.event.inputs.version }}-1.el9.x86_64.rpm
# Download and install vlagent (optional)
wget https://github.com/whamCloud/VictoriaLogs/releases/download/v${{ github.event.inputs.version }}/vlagent-${{ github.event.inputs.version }}-1.el9.x86_64.rpm
sudo dnf install -y ./vlagent-${{ github.event.inputs.version }}-1.el9.x86_64.rpm
# Download and install vlogscli (optional)
wget https://github.com/whamCloud/VictoriaLogs/releases/download/v${{ github.event.inputs.version }}/vlogscli-${{ github.event.inputs.version }}-1.el9.x86_64.rpm
sudo dnf install -y ./vlogscli-${{ github.event.inputs.version }}-1.el9.x86_64.rpm
# Start services
sudo systemctl enable --now victorialogs
sudo systemctl status victorialogs
```
#### Enterprise Linux 10 / RHEL 10 / Rocky Linux 10 / AlmaLinux 10
```bash
# Download and install victorialogs
wget https://github.com/whamCloud/VictoriaLogs/releases/download/v${{ github.event.inputs.version }}/victorialogs-${{ github.event.inputs.version }}-1.el10.x86_64.rpm
sudo dnf install -y ./victorialogs-${{ github.event.inputs.version }}-1.el10.x86_64.rpm
# Download and install vlagent (optional)
wget https://github.com/whamCloud/VictoriaLogs/releases/download/v${{ github.event.inputs.version }}/vlagent-${{ github.event.inputs.version }}-1.el10.x86_64.rpm
sudo dnf install -y ./vlagent-${{ github.event.inputs.version }}-1.el10.x86_64.rpm
# Download and install vlogscli (optional)
wget https://github.com/whamCloud/VictoriaLogs/releases/download/v${{ github.event.inputs.version }}/vlogscli-${{ github.event.inputs.version }}-1.el10.x86_64.rpm
sudo dnf install -y ./vlogscli-${{ github.event.inputs.version }}-1.el10.x86_64.rpm
# Start services
sudo systemctl enable --now victorialogs
sudo systemctl status victorialogs
```
### Option 2: Tarball Installation (Any Linux Distribution)
#### VictoriaLogs Server
```bash
# Download the tarball
wget https://github.com/whamCloud/VictoriaLogs/releases/download/v${{ github.event.inputs.version }}/victoria-logs-linux-amd64-v${{ github.event.inputs.version }}.tar.gz
# Verify checksum (optional)
wget https://github.com/whamCloud/VictoriaLogs/releases/download/v${{ github.event.inputs.version }}/victoria-logs-linux-amd64-v${{ github.event.inputs.version }}_checksums.txt
sha256sum -c victoria-logs-linux-amd64-v${{ github.event.inputs.version }}_checksums.txt
# Extract and run
tar -xzf victoria-logs-linux-amd64-v${{ github.event.inputs.version }}.tar.gz
./victoria-logs-prod -storageDataPath=/var/lib/victorialogs
```
### vlagent (Log Collection Agent)
```bash
# Download the vlutils tarball
wget https://github.com/whamCloud/VictoriaLogs/releases/download/v${{ github.event.inputs.version }}/vlutils-linux-amd64-v${{ github.event.inputs.version }}.tar.gz
# Verify checksum (optional)
wget https://github.com/whamCloud/VictoriaLogs/releases/download/v${{ github.event.inputs.version }}/vlutils-linux-amd64-v${{ github.event.inputs.version }}_checksums.txt
sha256sum -c vlutils-linux-amd64-v${{ github.event.inputs.version }}_checksums.txt
# Extract
tar -xzf vlutils-linux-amd64-v${{ github.event.inputs.version }}.tar.gz
# Run vlagent
./vlagent-prod -remoteWrite.url=http://localhost:9428/insert/jsonline
```
### vlogscli (Query CLI)
```bash
# Download the vlutils tarball (if not already downloaded)
wget https://github.com/whamCloud/VictoriaLogs/releases/download/v${{ github.event.inputs.version }}/vlutils-linux-amd64-v${{ github.event.inputs.version }}.tar.gz
# Extract
tar -xzf vlutils-linux-amd64-v${{ github.event.inputs.version }}.tar.gz
# Run vlogscli
./vlogscli-prod -datasource.url=http://localhost:9428
```
## Documentation
- [VictoriaLogs Documentation](https://docs.victoriametrics.com/victorialogs/)
- [vlagent Documentation](https://docs.victoriametrics.com/victorialogs/vlagent/)
- [vlogscli Documentation](https://docs.victoriametrics.com/victorialogs/querying/vlogscli/)
## Checksums
SHA256 checksums are provided for all tarballs to verify integrity.
draft: false
prerelease: ${{ github.event.inputs.prerelease }}
- name: Upload tarball
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./VictoriaLogs/bin/victoria-logs-linux-amd64-v${{ github.event.inputs.version }}.tar.gz
asset_name: victoria-logs-linux-amd64-v${{ github.event.inputs.version }}.tar.gz
asset_content_type: application/gzip
- name: Upload checksums
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./VictoriaLogs/bin/victoria-logs-linux-amd64-v${{ github.event.inputs.version }}_checksums.txt
asset_name: victoria-logs-linux-amd64-v${{ github.event.inputs.version }}_checksums.txt
asset_content_type: text/plain
- name: Upload vlutils tarball
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./VictoriaLogs/bin/vlutils-linux-amd64-v${{ github.event.inputs.version }}.tar.gz
asset_name: vlutils-linux-amd64-v${{ github.event.inputs.version }}.tar.gz
asset_content_type: application/gzip
- name: Upload vlutils checksums
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./VictoriaLogs/bin/vlutils-linux-amd64-v${{ github.event.inputs.version }}_checksums.txt
asset_name: vlutils-linux-amd64-v${{ github.event.inputs.version }}_checksums.txt
asset_content_type: text/plain
# ========================================
# RPM Building Section
# ========================================
- name: Clean up build artifacts
if: always()
working-directory: VictoriaLogs
run: |
make -f Makefile.whamcloud whamcloud-clean VERSION=${{ github.event.inputs.version }}
# ========================================
# RPM Building Jobs (EL8, EL9 and EL10)
# ========================================
build-el8-rpms:
name: Build Rocky Linux 8 RPMs
needs: build-and-release
runs-on: [self-hosted, victoria-logs]
steps:
- name: Checkout VictoriaLogs repository
uses: actions/checkout@v5
with:
fetch-depth: 0
path: VictoriaLogs
- name: Build VictoriaLogs binaries
working-directory: VictoriaLogs
run: |
make -f Makefile.whamcloud whamcloud-release VERSION=${{ github.event.inputs.version }}
env:
WHAMCLOUD_VERSION: ${{ github.event.inputs.version }}
- name: Checkout victorialogs-rpm repository
uses: actions/checkout@v5
with:
repository: whamCloud/victorialogs-rpm
path: victorialogs-rpm
- name: Build EL8 RPMs in Rocky Linux 8 container
run: |
echo "Building EL8 RPMs for version ${{ github.event.inputs.version }}..."
docker run --rm \
-v $(pwd)/victorialogs-rpm:/build \
-v $(pwd)/VictoriaLogs/bin:/binaries:ro \
-w /build \
rockylinux:8 \
bash -c "
set -e
echo 'Installing RPM build tools...'
dnf install -y make rpm-build rpmdevtools systemd-rpm-macros systemd
echo 'Building EL8 RPMs...'
make rpm VERSION=${{ github.event.inputs.version }} DISTS=el8
"
- name: List and verify built EL8 RPMs
working-directory: victorialogs-rpm
run: |
echo "Built EL8 RPMs:"
ls -lh output/*.rpm
echo ""
echo "Verifying RPM metadata:"
for rpm in output/*.rpm; do
echo "=== $rpm ==="
rpm -qip "$rpm" | grep -E "Name|Version|Release|Architecture|Build Host"
done
- name: Get release upload URL
id: get_release
run: |
UPLOAD_URL=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
"https://api.github.com/repos/${{ github.repository }}/releases/tags/v${{ github.event.inputs.version }}" \
| jq -r '.upload_url')
echo "upload_url=$UPLOAD_URL" >> $GITHUB_OUTPUT
- name: Upload victorialogs EL8 RPM
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.get_release.outputs.upload_url }}
asset_path: ./victorialogs-rpm/output/victorialogs-${{ github.event.inputs.version }}-1.el8.x86_64.rpm
asset_name: victorialogs-${{ github.event.inputs.version }}-1.el8.x86_64.rpm
asset_content_type: application/x-rpm
- name: Upload vlagent EL8 RPM
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.get_release.outputs.upload_url }}
asset_path: ./victorialogs-rpm/output/vlagent-${{ github.event.inputs.version }}-1.el8.x86_64.rpm
asset_name: vlagent-${{ github.event.inputs.version }}-1.el8.x86_64.rpm
asset_content_type: application/x-rpm
- name: Upload vlogscli EL8 RPM
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.get_release.outputs.upload_url }}
asset_path: ./victorialogs-rpm/output/vlogscli-${{ github.event.inputs.version }}-1.el8.x86_64.rpm
asset_name: vlogscli-${{ github.event.inputs.version }}-1.el8.x86_64.rpm
asset_content_type: application/x-rpm
- name: Clean up EL8 RPM build artifacts
if: always()
working-directory: victorialogs-rpm
run: make clean
build-el9-rpms:
name: Build Rocky Linux 9 RPMs
needs: build-and-release
runs-on: [self-hosted, victoria-logs]
steps:
- name: Checkout VictoriaLogs repository
uses: actions/checkout@v5
with:
fetch-depth: 0
path: VictoriaLogs
- name: Build VictoriaLogs binaries
working-directory: VictoriaLogs
run: |
make -f Makefile.whamcloud whamcloud-release VERSION=${{ github.event.inputs.version }}
env:
WHAMCLOUD_VERSION: ${{ github.event.inputs.version }}
- name: Checkout victorialogs-rpm repository
uses: actions/checkout@v5
with:
repository: whamCloud/victorialogs-rpm
path: victorialogs-rpm
- name: Build EL9 RPMs in Rocky Linux 9 container
run: |
echo "Building EL9 RPMs for version ${{ github.event.inputs.version }}..."
docker run --rm \
-v $(pwd)/victorialogs-rpm:/build \
-v $(pwd)/VictoriaLogs/bin:/binaries:ro \
-w /build \
rockylinux:9 \
bash -c "
set -e
echo 'Installing RPM build tools...'
dnf install -y make rpm-build rpmdevtools systemd-rpm-macros systemd
echo 'Building EL9 RPMs...'
make rpm VERSION=${{ github.event.inputs.version }} DISTS=el9
"
- name: List and verify built EL9 RPMs
working-directory: victorialogs-rpm
run: |
echo "Built EL9 RPMs:"
ls -lh output/*.rpm
echo ""
echo "Verifying RPM metadata:"
for rpm in output/*.rpm; do
echo "=== $rpm ==="
rpm -qip "$rpm" | grep -E "Name|Version|Release|Architecture|Build Host"
done
- name: Get release upload URL
id: get_release
run: |
UPLOAD_URL=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
"https://api.github.com/repos/${{ github.repository }}/releases/tags/v${{ github.event.inputs.version }}" \
| jq -r '.upload_url')
echo "upload_url=$UPLOAD_URL" >> $GITHUB_OUTPUT
- name: Upload victorialogs EL9 RPM
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.get_release.outputs.upload_url }}
asset_path: ./victorialogs-rpm/output/victorialogs-${{ github.event.inputs.version }}-1.el9.x86_64.rpm
asset_name: victorialogs-${{ github.event.inputs.version }}-1.el9.x86_64.rpm
asset_content_type: application/x-rpm
- name: Upload vlagent EL9 RPM
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.get_release.outputs.upload_url }}
asset_path: ./victorialogs-rpm/output/vlagent-${{ github.event.inputs.version }}-1.el9.x86_64.rpm
asset_name: vlagent-${{ github.event.inputs.version }}-1.el9.x86_64.rpm
asset_content_type: application/x-rpm
- name: Upload vlogscli EL9 RPM
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.get_release.outputs.upload_url }}
asset_path: ./victorialogs-rpm/output/vlogscli-${{ github.event.inputs.version }}-1.el9.x86_64.rpm
asset_name: vlogscli-${{ github.event.inputs.version }}-1.el9.x86_64.rpm
asset_content_type: application/x-rpm
- name: Clean up EL9 RPM build artifacts
if: always()
working-directory: victorialogs-rpm
run: make clean
build-el10-rpms:
name: Build Rocky Linux 10 RPMs
needs: build-and-release
runs-on: [self-hosted, victoria-logs]
steps:
- name: Checkout VictoriaLogs repository
uses: actions/checkout@v5
with:
fetch-depth: 0
path: VictoriaLogs
- name: Build VictoriaLogs binaries
working-directory: VictoriaLogs
run: |
make -f Makefile.whamcloud whamcloud-release VERSION=${{ github.event.inputs.version }}
env:
WHAMCLOUD_VERSION: ${{ github.event.inputs.version }}
- name: Checkout victorialogs-rpm repository
uses: actions/checkout@v5
with:
repository: whamCloud/victorialogs-rpm
path: victorialogs-rpm
- name: Build el10 RPMs in Rocky Linux 9 container
run: |
echo "Building el10 RPMs for version ${{ github.event.inputs.version }}..."
docker run --rm \
-v $(pwd)/victorialogs-rpm:/build \
-v $(pwd)/VictoriaLogs/bin:/binaries:ro \
-w /build \
rockylinux/rockylinux:10 \
bash -c "
set -e
echo 'Installing RPM build tools...'
dnf install -y make rpm-build rpmdevtools systemd-rpm-macros systemd
echo 'Building el10 RPMs...'
make rpm VERSION=${{ github.event.inputs.version }} DISTS=el10
"
- name: List and verify built el10 RPMs
working-directory: victorialogs-rpm
run: |
echo "Built el10 RPMs:"
ls -lh output/*.rpm
echo ""
echo "Verifying RPM metadata:"
for rpm in output/*.rpm; do
echo "=== $rpm ==="
rpm -qip "$rpm" | grep -E "Name|Version|Release|Architecture|Build Host"
done
- name: Get release upload URL
id: get_release
run: |
UPLOAD_URL=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
"https://api.github.com/repos/${{ github.repository }}/releases/tags/v${{ github.event.inputs.version }}" \
| jq -r '.upload_url')
echo "upload_url=$UPLOAD_URL" >> $GITHUB_OUTPUT
- name: Upload victorialogs el10 RPM
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.get_release.outputs.upload_url }}
asset_path: ./victorialogs-rpm/output/victorialogs-${{ github.event.inputs.version }}-1.el10.x86_64.rpm
asset_name: victorialogs-${{ github.event.inputs.version }}-1.el10.x86_64.rpm
asset_content_type: application/x-rpm
- name: Upload vlagent el10 RPM
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.get_release.outputs.upload_url }}
asset_path: ./victorialogs-rpm/output/vlagent-${{ github.event.inputs.version }}-1.el10.x86_64.rpm
asset_name: vlagent-${{ github.event.inputs.version }}-1.el10.x86_64.rpm
asset_content_type: application/x-rpm
- name: Upload vlogscli el10 RPM
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.get_release.outputs.upload_url }}
asset_path: ./victorialogs-rpm/output/vlogscli-${{ github.event.inputs.version }}-1.el10.x86_64.rpm
asset_name: vlogscli-${{ github.event.inputs.version }}-1.el10.x86_64.rpm
asset_content_type: application/x-rpm
- name: Clean up el10 RPM build artifacts
if: always()
working-directory: victorialogs-rpm
run: make clean