mirror of
https://github.com/blackboxprogramming/BlackRoad-Operating-System.git
synced 2026-03-17 02:57:12 -05:00
- Add Railway configuration (railway.toml) - Add GitHub Actions workflows - Railway deployment automation - Python/Node.js testing - Health check monitoring - Add GitHub templates (CODEOWNERS, PR template) - Add requirements files if missing - Standardize deployment across all services This ensures consistent deployment patterns across the entire BlackRoad OS infrastructure. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
105 lines
3.6 KiB
YAML
105 lines
3.6 KiB
YAML
# ============================================================================
|
|
# BlackRoad OS - Release Pipeline
|
|
# Copyright (c) 2025 BlackRoad OS, Inc. / Alexa Louise Amundson
|
|
# All Rights Reserved.
|
|
# ============================================================================
|
|
#
|
|
# Automated release workflow triggered by version tags.
|
|
# Creates GitHub releases with changelogs and artifacts.
|
|
#
|
|
# Trigger: Push tags matching v*.*.* (e.g., v0.2.0, v1.0.0-beta.1)
|
|
# ============================================================================
|
|
|
|
name: Release
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v*.*.*'
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
jobs:
|
|
release:
|
|
name: Create Release
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0 # Full history for changelog
|
|
|
|
- name: Get version from tag
|
|
id: version
|
|
run: |
|
|
VERSION=${GITHUB_REF#refs/tags/v}
|
|
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
|
echo "tag=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
|
|
|
|
- name: Generate changelog
|
|
id: changelog
|
|
run: |
|
|
# Get the previous tag
|
|
PREV_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
|
|
|
|
if [ -n "$PREV_TAG" ]; then
|
|
echo "Generating changelog from $PREV_TAG to ${{ steps.version.outputs.tag }}"
|
|
CHANGES=$(git log --pretty=format:"- %s (%h)" $PREV_TAG..HEAD)
|
|
else
|
|
echo "First release - including all commits"
|
|
CHANGES=$(git log --pretty=format:"- %s (%h)" HEAD~20..HEAD)
|
|
fi
|
|
|
|
# Write to file for multi-line output
|
|
echo "$CHANGES" > changelog.txt
|
|
echo "Generated changelog with $(echo "$CHANGES" | wc -l) entries"
|
|
|
|
- name: Create release archive
|
|
run: |
|
|
# Create a clean archive of the release
|
|
mkdir -p dist
|
|
|
|
# Archive Python files
|
|
tar -czvf dist/blackroad-os-${{ steps.version.outputs.version }}-python.tar.gz \
|
|
--exclude='*.pyc' \
|
|
--exclude='__pycache__' \
|
|
--exclude='.git' \
|
|
*.py 2>/dev/null || echo "No Python files in root"
|
|
|
|
# Archive shell scripts
|
|
tar -czvf dist/blackroad-os-${{ steps.version.outputs.version }}-scripts.tar.gz \
|
|
--exclude='.git' \
|
|
*.sh br-* 2>/dev/null || echo "No shell scripts in root"
|
|
|
|
# Archive config files
|
|
if [ -d "config" ]; then
|
|
tar -czvf dist/blackroad-os-${{ steps.version.outputs.version }}-config.tar.gz config/
|
|
fi
|
|
|
|
ls -la dist/
|
|
|
|
- name: Create GitHub Release
|
|
uses: softprops/action-gh-release@v1
|
|
with:
|
|
name: BlackRoad OS v${{ steps.version.outputs.version }}
|
|
body_path: changelog.txt
|
|
draft: false
|
|
prerelease: ${{ contains(steps.version.outputs.version, 'alpha') || contains(steps.version.outputs.version, 'beta') || contains(steps.version.outputs.version, 'rc') }}
|
|
files: |
|
|
dist/*.tar.gz
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Summary
|
|
run: |
|
|
echo "## Release Summary" >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "**Version:** v${{ steps.version.outputs.version }}" >> $GITHUB_STEP_SUMMARY
|
|
echo "**Tag:** ${{ steps.version.outputs.tag }}" >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "### Artifacts" >> $GITHUB_STEP_SUMMARY
|
|
ls dist/*.tar.gz 2>/dev/null | while read f; do
|
|
echo "- $(basename $f)" >> $GITHUB_STEP_SUMMARY
|
|
done
|