feat: add comprehensive test workflow for health checks and validations #22
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 }} |