Update project documentation and roadmap for v1.1.4 release #11
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: 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 }} |