Skip to content

feat: add comprehensive test workflow for health checks and validations #22

feat: add comprehensive test workflow for health checks and validations

feat: add comprehensive test workflow for health checks and validations #22

name: Auto Version & Release VofM
on:
push:
branches:
- prod
jobs:
version-and-release:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
fetch-tags: true
- name: Get latest tag
id: get_tag
run: |
tag=$(git describe --tags --abbrev=0 2>/dev/null || echo "v2.1.0")
echo "latest_tag=$tag" >> $GITHUB_ENV
- name: Check for new commits since last tag
id: check_commits
run: |
if git rev-parse "$latest_tag" >/dev/null 2>&1; then
commits=$(git rev-list ${latest_tag}..HEAD --count)
else
commits=$(git rev-list HEAD --count)
fi
echo "commits_since_tag=$commits" >> $GITHUB_ENV
- name: Bump patch version and create new tag
if: env.commits_since_tag != '0'
id: bump_tag
env:
GH_PAT: ${{ secrets.GH_PAT }}
run: |
old_tag=$latest_tag
base=${old_tag#v}
major=$(echo $base | cut -d. -f1)
minor=$(echo $base | cut -d. -f2)
patch=$(echo $base | cut -d. -f3)
new_patch=$((patch+1))
new_tag="v${major}.${minor}.${new_patch}"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"
# Remove tag locally and remotely if it exists
if git rev-parse "$new_tag" >/dev/null 2>&1; then
git tag -d "$new_tag"
fi
if git ls-remote --tags origin | grep -q "refs/tags/$new_tag"; then
git push origin ":refs/tags/$new_tag"
fi
git tag $new_tag
git config --global --unset credential.helper || true
git remote set-url origin https://x-access-token:$GH_PAT@github.com/libbierose/VofM.git
git push origin $new_tag
echo "new_tag=$new_tag" >> $GITHUB_ENV
- name: Set up zip
run: sudo apt-get install -y zip
- name: Prepare package folders
run: |
mkdir -p VofM_Package/Dashboard
mkdir -p VofM_Package/OBS_Overlays
mkdir -p VofM_Package/Streamer.Bot_Actions
- name: Copy Dashboard files
run: cp -r Dashboard/* VofM_Package/Dashboard/
- name: Copy OBS Overlay files
run: cp -r OBS_Overlays/* VofM_Package/OBS_Overlays/
- name: Copy latest .lra file
run: cp Streamer.Bot_Actions/Viewer\ Of\ The\ Month.lra VofM_Package/Streamer.Bot_Actions/
- name: Generate dynamic release.md
run: |
echo "# VofM Release Package" > VofM_Package/release.md
echo "" >> VofM_Package/release.md
echo "This release contains the following components, packaged for easy setup:" >> VofM_Package/release.md
echo "" >> VofM_Package/release.md
echo "## Included in the Zip" >> VofM_Package/release.md
echo "" >> VofM_Package/release.md
echo "- **Dashboard/**" >> VofM_Package/release.md
ls VofM_Package/Dashboard | sed 's/^/ - /' >> VofM_Package/release.md
echo "- **OBS_Overlays/**" >> VofM_Package/release.md
ls VofM_Package/OBS_Overlays | sed 's/^/ - /' >> VofM_Package/release.md
echo "- **Streamer.Bot_Actions/**" >> VofM_Package/release.md
ls VofM_Package/Streamer.Bot_Actions | sed 's/^/ - /' >> VofM_Package/release.md
if [ -d VofM_Package/Streamer.Bot_Actions/Src ]; then
echo " - Src/" >> VofM_Package/release.md
ls VofM_Package/Streamer.Bot_Actions/Src | sed 's/^/ - /' >> VofM_Package/release.md
fi
echo "" >> VofM_Package/release.md
echo "## How to Use" >> VofM_Package/release.md
echo "" >> VofM_Package/release.md
echo "1. Unzip the package." >> VofM_Package/release.md
echo "2. Open \`Dashboard/dashboard.html\` in your browser to view the dashboard." >> VofM_Package/release.md
echo "3. Import \`Streamer.Bot_Actions/Viewer Of The Month.lra\` into Streamer.Bot for instant setup." >> VofM_Package/release.md
echo "4. Add overlays from \`OBS_Overlays/\` to OBS as browser sources." >> VofM_Package/release.md
echo "" >> VofM_Package/release.md
echo "## Changes in This Release" >> VofM_Package/release.md
echo "" >> VofM_Package/release.md
echo "- Release version: $new_tag" >> VofM_Package/release.md
echo "- See commit history for detailed changes." >> VofM_Package/release.md
echo "" >> VofM_Package/release.md
echo "---" >> VofM_Package/release.md
echo "" >> VofM_Package/release.md
echo "For full documentation, see the main \`README.md\` in the repository." >> VofM_Package/release.md
- name: Zip the package
run: zip -r VofM_Release_${{ env.new_tag }}.zip VofM_Package
- name: Upload release artifact
uses: actions/upload-artifact@v4
with:
name: VofM_Release
path: VofM_Release_${{ env.new_tag }}.zip
- name: Read release notes
id: notes
run: |
body="$(cat VofM_Package/release.md)"
echo "body<<EOF" >> $GITHUB_ENV
echo "$body" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ env.new_tag }}
name: VofM Release ${{ env.new_tag }}
body: ${{ env.body }}
files: |
VofM_Release_${{ env.new_tag }}.zip
VofM_Package/release.md
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}