Skip to content

Update project documentation and roadmap for v1.1.4 release #11

Update project documentation and roadmap for v1.1.4 release

Update project documentation and roadmap for v1.1.4 release #11

name: Build and Release
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch:
inputs:
release_type:
description: 'Release type (major, minor, patch)'
required: false
default: 'patch'
type: choice
options:
- major
- minor
- patch
# Global permissions for the workflow
permissions:
contents: write # Required to push tags and create releases
issues: write # Required to create issues on failure
pull-requests: write # Required for PR comments
actions: read # Required to read workflow information
checks: read # Required to read check status
env:
NODE_VERSION: '20'
CACHE_VERSION: v1
jobs:
# Test and lint job
test:
name: Test and Lint
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Run linting
run: npm run lint
- name: Build application
run: npm run build
# Semantic versioning and release preparation
semantic-version:
name: Semantic Versioning
runs-on: ubuntu-latest
needs: test
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
outputs:
new-release-published: ${{ steps.semantic.outputs.new-release-published }}
new-release-version: ${{ steps.semantic.outputs.new-release-version }}
new-release-major-version: ${{ steps.semantic.outputs.new-release-major-version }}
new-release-minor-version: ${{ steps.semantic.outputs.new-release-minor-version }}
new-release-patch-version: ${{ steps.semantic.outputs.new-release-patch-version }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
persist-credentials: true
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Configure Git
run: |
git config --global user.email "action@github.com"
git config --global user.name "github-actions[bot]"
- name: Semantic Release
id: semantic
uses: cycjimmy/semantic-release-action@v4
with:
semantic_version: 22
extra_plugins: |
@semantic-release/changelog@6
@semantic-release/git@10
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Build job for multiple platforms
build:
name: Build (${{ matrix.os }})
runs-on: ${{ matrix.os }}
needs: [test, semantic-version]
if: always() && needs.test.result == 'success' && (needs.semantic-version.result == 'success' || needs.semantic-version.result == 'skipped')
strategy:
fail-fast: false
matrix:
include:
- os: windows-latest
platform: win32
arch: x64
npm_config_cache: ~/.npm
- os: windows-latest
platform: win32
arch: ia32
npm_config_cache: ~/.npm
- os: ubuntu-latest
platform: linux
arch: x64
npm_config_cache: ~/.npm
- os: macos-latest
platform: darwin
arch: x64
npm_config_cache: ~/.npm
- os: macos-latest
platform: darwin
arch: arm64
npm_config_cache: ~/.npm
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Update version from semantic release
if: needs.semantic-version.outputs.new-release-published == 'true'
run: |
npm version ${{ needs.semantic-version.outputs.new-release-version }} --no-git-tag-version
- name: Build application
run: npm run build
- name: Build Electron app for ${{ matrix.platform }}-${{ matrix.arch }}
run: npm run electron:dist
env:
ELECTRON_BUILDER_ARCH: ${{ matrix.arch }}
ELECTRON_BUILDER_PLATFORM: ${{ matrix.platform }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: List build outputs
shell: bash
run: |
echo "Build outputs:"
if [ -d "release" ]; then
ls -la release/
else
echo "No release directory found"
fi
- name: Upload artifacts (Windows)
if: matrix.platform == 'win32'
uses: actions/upload-artifact@v4
with:
name: signalpath-windows-${{ matrix.arch }}
path: |
release/*.exe
release/*.msi
release/*.zip
retention-days: 30
- name: Upload artifacts (macOS)
if: matrix.platform == 'darwin'
uses: actions/upload-artifact@v4
with:
name: signalpath-macos-${{ matrix.arch }}
path: |
release/*.dmg
release/*.zip
retention-days: 30
- name: Upload artifacts (Linux)
if: matrix.platform == 'linux'
uses: actions/upload-artifact@v4
with:
name: signalpath-linux-${{ matrix.arch }}
path: |
release/*.AppImage
release/*.deb
release/*.tar.gz
retention-days: 30
# Create GitHub release with artifacts
release:
name: Create Release
runs-on: ubuntu-latest
needs: [semantic-version, build]
if: needs.semantic-version.outputs.new-release-published == 'true'
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: ./artifacts
- name: Display structure of downloaded files
run: find ./artifacts -type f -name "*" | head -20
- name: Create GitHub Release
uses: softprops/action-gh-release@v1
with:
tag_name: v${{ needs.semantic-version.outputs.new-release-version }}
name: SignalPath Intercom Designer v${{ needs.semantic-version.outputs.new-release-version }}
body: |
## 🚀 SignalPath Intercom Designer v${{ needs.semantic-version.outputs.new-release-version }}
### Downloads
#### Windows
- **Windows x64**: `SignalPath-Intercom-Designer-Setup-${{ needs.semantic-version.outputs.new-release-version }}.exe`
- **Windows x86**: `SignalPath-Intercom-Designer-Setup-${{ needs.semantic-version.outputs.new-release-version }}-ia32.exe`
#### macOS
- **macOS Intel**: `SignalPath-Intercom-Designer-${{ needs.semantic-version.outputs.new-release-version }}.dmg`
- **macOS Apple Silicon**: `SignalPath-Intercom-Designer-${{ needs.semantic-version.outputs.new-release-version }}-arm64.dmg`
#### Linux
- **Linux AppImage**: `SignalPath-Intercom-Designer-${{ needs.semantic-version.outputs.new-release-version }}.AppImage`
- **Linux DEB**: `signalpath_${{ needs.semantic-version.outputs.new-release-version }}_amd64.deb`
### Installation Instructions
#### Windows
1. Download the appropriate installer for your architecture
2. Run the installer and follow the setup wizard
3. Launch SignalPath from the Start Menu or Desktop shortcut
#### macOS
1. Download the DMG file for your Mac architecture
2. Open the DMG and drag SignalPath to Applications
3. Launch SignalPath from Applications or Launchpad
#### Linux
1. **AppImage**: Make executable (`chmod +x`) and run directly
2. **DEB**: Install with `sudo dpkg -i signalpath_${{ needs.semantic-version.outputs.new-release-version }}_amd64.deb`
---
**Full Changelog**: https://github.com/${{ github.repository }}/compare/v${{ needs.semantic-version.outputs.new-release-version }}...HEAD
files: |
./artifacts/**/*
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Manual release job for workflow_dispatch
manual-release:
name: Manual Release
runs-on: ubuntu-latest
needs: [test, build]
if: github.event_name == 'workflow_dispatch' && needs.test.result == 'success'
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Bump version
id: version
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
NEW_VERSION=$(npm version ${{ github.event.inputs.release_type }} --no-git-tag-version)
echo "new-version=${NEW_VERSION}" >> $GITHUB_OUTPUT
echo "New version: ${NEW_VERSION}"
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: ./artifacts
- name: Create Manual Release
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ steps.version.outputs.new-version }}
name: SignalPath Intercom Designer ${{ steps.version.outputs.new-version }} (Manual Release)
body: |
## 🚀 SignalPath Intercom Designer ${{ steps.version.outputs.new-version }}
This is a manual release triggered via GitHub Actions workflow dispatch.
### Downloads
Please see the attached assets for platform-specific installers.
**Full Changelog**: https://github.com/${{ github.repository }}/commits/${{ steps.version.outputs.new-version }}
files: |
./artifacts/**/*
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}