diff --git a/.github/workflows/nightly-tag-generation.yml b/.github/workflows/nightly-tag-generation.yml new file mode 100644 index 000000000..ed879bcb2 --- /dev/null +++ b/.github/workflows/nightly-tag-generation.yml @@ -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 \ No newline at end of file diff --git a/docs/docs.json b/docs/docs.json index 960c41727..4a496bf77 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -303,6 +303,7 @@ }, "self-hosting/guides/upgrading-infisical", "self-hosting/configuration/envars", + "self-hosting/guides/releases", "self-hosting/configuration/requirements", { "group": "Guides", diff --git a/docs/self-hosting/guides/releases.mdx b/docs/self-hosting/guides/releases.mdx new file mode 100644 index 000000000..d85da1a78 --- /dev/null +++ b/docs/self-hosting/guides/releases.mdx @@ -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. + + + + - **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) + + + - **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 + + + + + Schedule Note: Target dates are approximate and subject to change based on critical issues, security updates, or maintenance requirements. + + +## 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/)