mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-06 20:27:12 +00:00
Merge pull request #4325 from Infisical/feat/releaseChannels
Add Release Channels with nightly
This commit is contained in:
@@ -0,0 +1,83 @@
|
|||||||
|
name: Generate Nightly Tag
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 0 * * *' # Run daily at midnight UTC
|
||||||
|
workflow_dispatch: # Allow manual triggering for testing
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
create-nightly-tag:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0 # Fetch all history for tags
|
||||||
|
|
||||||
|
- name: Configure Git
|
||||||
|
run: |
|
||||||
|
git config user.name "github-actions[bot]"
|
||||||
|
git config user.email "github-actions[bot]@users.noreply.github.com"
|
||||||
|
|
||||||
|
- name: Generate nightly tag
|
||||||
|
run: |
|
||||||
|
# Get the latest infisical production tag
|
||||||
|
LATEST_STABLE_TAG=$(git tag --list | grep "^v[0-9].*$" | sort -V | tail -n1)
|
||||||
|
|
||||||
|
if [ -z "$LATEST_STABLE_TAG" ]; then
|
||||||
|
echo "No infisical production tags found, using v0.1.0"
|
||||||
|
LATEST_STABLE_TAG="v0.1.0"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Latest production tag: $LATEST_STABLE_TAG"
|
||||||
|
|
||||||
|
# Get current date in YYYYMMDD format
|
||||||
|
DATE=$(date +%Y%m%d)
|
||||||
|
|
||||||
|
# Base nightly tag name
|
||||||
|
BASE_TAG="${LATEST_STABLE_TAG}-nightly-${DATE}"
|
||||||
|
|
||||||
|
# Check if this exact tag already exists
|
||||||
|
if git tag --list | grep -q "^${BASE_TAG}$"; then
|
||||||
|
echo "Base tag ${BASE_TAG} already exists, finding next increment"
|
||||||
|
|
||||||
|
# Find existing tags for this date and get the highest increment
|
||||||
|
EXISTING_TAGS=$(git tag --list | grep "^${BASE_TAG}" | grep -E '\.[0-9]+$' || true)
|
||||||
|
|
||||||
|
if [ -z "$EXISTING_TAGS" ]; then
|
||||||
|
# No incremental tags exist, create .1
|
||||||
|
NIGHTLY_TAG="${BASE_TAG}.1"
|
||||||
|
else
|
||||||
|
# Find the highest increment
|
||||||
|
HIGHEST_INCREMENT=$(echo "$EXISTING_TAGS" | sed "s|^${BASE_TAG}\.||" | sort -n | tail -n1)
|
||||||
|
NEXT_INCREMENT=$((HIGHEST_INCREMENT + 1))
|
||||||
|
NIGHTLY_TAG="${BASE_TAG}.${NEXT_INCREMENT}"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# Base tag doesn't exist, use it
|
||||||
|
NIGHTLY_TAG="$BASE_TAG"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Generated nightly tag: $NIGHTLY_TAG"
|
||||||
|
echo "NIGHTLY_TAG=$NIGHTLY_TAG" >> $GITHUB_ENV
|
||||||
|
echo "LATEST_PRODUCTION_TAG=$LATEST_STABLE_TAG" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
git tag "$NIGHTLY_TAG"
|
||||||
|
git push origin "$NIGHTLY_TAG"
|
||||||
|
echo "✅ Created and pushed nightly tag: $NIGHTLY_TAG"
|
||||||
|
|
||||||
|
- name: Create GitHub Release
|
||||||
|
uses: softprops/action-gh-release@v2
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
tag_name: ${{ env.NIGHTLY_TAG }}
|
||||||
|
name: ${{ env.NIGHTLY_TAG }}
|
||||||
|
draft: false
|
||||||
|
prerelease: true
|
||||||
|
generate_release_notes: true
|
||||||
|
make_latest: false
|
||||||
@@ -303,6 +303,7 @@
|
|||||||
},
|
},
|
||||||
"self-hosting/guides/upgrading-infisical",
|
"self-hosting/guides/upgrading-infisical",
|
||||||
"self-hosting/configuration/envars",
|
"self-hosting/configuration/envars",
|
||||||
|
"self-hosting/guides/releases",
|
||||||
"self-hosting/configuration/requirements",
|
"self-hosting/configuration/requirements",
|
||||||
{
|
{
|
||||||
"group": "Guides",
|
"group": "Guides",
|
||||||
|
|||||||
@@ -0,0 +1,66 @@
|
|||||||
|
---
|
||||||
|
title: "Release Channels"
|
||||||
|
description: "Learn how to configure your deployment for different release schedules."
|
||||||
|
---
|
||||||
|
|
||||||
|
Infisical uses rolling release channels to deliver new features, security fixes, and improvements with different update frequencies.
|
||||||
|
This system allows you to balance getting the latest features with maintaining stability in your deployment environment.
|
||||||
|
|
||||||
|
## What are release channels?
|
||||||
|
|
||||||
|
Release channels define different schedules under which Infisical makes new releases available for you to deploy.
|
||||||
|
Each channel operates on its own cadence, allowing you to choose how frequently you want to update your self-hosted deployment while balancing access to the latest features with your organization's stability requirements.
|
||||||
|
|
||||||
|
|
||||||
|
## Available Channels
|
||||||
|
|
||||||
|
Infisical provides two distinct release channels with different update frequencies and stability profiles.
|
||||||
|
|
||||||
|
<Tabs>
|
||||||
|
<Tab title="Nightly Channel">
|
||||||
|
- **Update Frequency**: Daily builds during weekdays (Monday-Friday)
|
||||||
|
- **Version Tags**: `vX.Y.Z-nightly-YYYYMMDD` (e.g., `v0.146.0-nightly-20250423`)
|
||||||
|
- **Multiple Daily Builds**: If multiple nightly builds are created on the same day, they are numbered incrementally: `vX.Y.Z-nightly-YYYYMMDD.1`, `vX.Y.Z-nightly-YYYYMMDD.2`, etc.
|
||||||
|
- **Stability**: Latest features with standard CI/CD testing
|
||||||
|
- **Release Process**: Built from main branch after all automated tests pass
|
||||||
|
- **Intended Audience**: Development environments & early adopters
|
||||||
|
|
||||||
|
**Best for:**
|
||||||
|
- Organizations with flexible change management
|
||||||
|
- Teams that want to test new features before they are made available via stable release channel
|
||||||
|
|
||||||
|
**Characteristics:**
|
||||||
|
- Access to latest features immediately
|
||||||
|
- Faster security patch delivery
|
||||||
|
- Higher update frequency (daily)
|
||||||
|
</Tab>
|
||||||
|
<Tab title="Stable Channel">
|
||||||
|
- **Update Frequency**: Monthly releases (typically 1st Tuesday of each month)
|
||||||
|
- **Version Tags**: `vX.Y.Z` (e.g., `v0.145.0`, `v0.146.0`)
|
||||||
|
- **Stability**: Both code tested and production-proven releases
|
||||||
|
- **Release Process**: Features validated through nightly channel for 30+ days
|
||||||
|
- **Intended Audience**: Production environments, enterprise teams prioritizing stability
|
||||||
|
|
||||||
|
**Best for:**
|
||||||
|
- Enterprise environments with limited change windows
|
||||||
|
- Organizations requiring predictable release cycles
|
||||||
|
- Teams prioritizing stability and long-term support
|
||||||
|
|
||||||
|
**Characteristics:**
|
||||||
|
- Predictable monthly schedule
|
||||||
|
- Extensive testing and validation
|
||||||
|
- Production-proven features
|
||||||
|
</Tab>
|
||||||
|
</Tabs>
|
||||||
|
|
||||||
|
<Warning>
|
||||||
|
Schedule Note: Target dates are approximate and subject to change based on critical issues, security updates, or maintenance requirements.
|
||||||
|
</Warning>
|
||||||
|
|
||||||
|
## Staying up to date
|
||||||
|
|
||||||
|
Track what features are available in each version across different sources:
|
||||||
|
|
||||||
|
- **Released versions**: View detailed changelogs, new features, and breaking changes in our [GitHub Releases](https://github.com/Infisical/infisical/releases)
|
||||||
|
- **Docker Image Versions**: Browse available container images and tags on [Docker Hub](https://hub.docker.com/r/infisical/infisical)
|
||||||
|
- **Linux Package Releases**: Access downloadable packages and version history on our [Linux releases page](https://cloudsmith.io/~infisical/repos/infisical-core/packages/)
|
||||||
Reference in New Issue
Block a user