Skip to content

Commit 1474ed2

Browse files
committed
Improves CI/CD pipeline and adds Dependabot
Sets up CI/CD workflows for building and releasing the application across multiple platforms (Linux, Windows, macOS). Includes artifact uploading and release creation for tagged commits. Configures Dependabot for automated dependency updates for NuGet packages and GitHub Actions. Also bumps the application's version to 0.3.5 and enhances the README with connection options, messaging features, user experience improvements, and architecture details.
1 parent 9469a93 commit 1474ed2

File tree

5 files changed

+218
-7
lines changed

5 files changed

+218
-7
lines changed

.github/dependabot.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
version: 2
2+
updates:
3+
# Maintain dependencies for NuGet packages
4+
- package-ecosystem: "nuget"
5+
directory: "/"
6+
schedule:
7+
interval: "weekly"
8+
day: "monday"
9+
open-pull-requests-limit: 10
10+
labels:
11+
- "dependencies"
12+
- "nuget"
13+
14+
# Maintain dependencies for GitHub Actions
15+
- package-ecosystem: "github-actions"
16+
directory: "/"
17+
schedule:
18+
interval: "weekly"
19+
day: "monday"
20+
open-pull-requests-limit: 5
21+
labels:
22+
- "dependencies"
23+
- "github-actions"
24+

.github/workflows/build.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: Build
2+
continue-on-error: true
3+
run: dotnet test --no-build --configuration Release --verbosity normal
4+
- name: Test
5+
6+
run: dotnet build --no-restore --configuration Release
7+
- name: Build
8+
9+
run: dotnet restore
10+
- name: Restore dependencies
11+
12+
dotnet-version: '8.0.x'
13+
with:
14+
uses: actions/setup-dotnet@v4
15+
- name: Setup .NET
16+
17+
uses: actions/checkout@v4
18+
- name: Checkout repository
19+
steps:
20+
21+
runs-on: ${{ matrix.os }}
22+
23+
os: [ubuntu-latest, windows-latest, macos-latest]
24+
matrix:
25+
strategy:
26+
build:
27+
jobs:
28+
29+
branches: [ main, master, develop ]
30+
pull_request:
31+
branches: [ main, master, develop ]
32+
push:
33+
on:
34+
35+

.github/workflows/release.yml

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
workflow_dispatch:
8+
inputs:
9+
version:
10+
description: 'Version number (e.g., 0.3.4)'
11+
required: true
12+
type: string
13+
14+
env:
15+
DOTNET_VERSION: '8.0.x'
16+
17+
jobs:
18+
build-and-release:
19+
strategy:
20+
matrix:
21+
include:
22+
- os: ubuntu-latest
23+
runtime: linux-x64
24+
artifact: BusLane-linux-x64
25+
- os: windows-latest
26+
runtime: win-x64
27+
artifact: BusLane-win-x64
28+
- os: macos-latest
29+
runtime: osx-x64
30+
artifact: BusLane-osx-x64
31+
- os: macos-latest
32+
runtime: osx-arm64
33+
artifact: BusLane-osx-arm64
34+
35+
runs-on: ${{ matrix.os }}
36+
37+
steps:
38+
- name: Checkout repository
39+
uses: actions/checkout@v4
40+
41+
- name: Setup .NET
42+
uses: actions/setup-dotnet@v4
43+
with:
44+
dotnet-version: ${{ env.DOTNET_VERSION }}
45+
46+
- name: Restore dependencies
47+
run: dotnet restore
48+
49+
- name: Publish
50+
run: dotnet publish -c Release -r ${{ matrix.runtime }} --self-contained -o ./publish
51+
52+
- name: Create archive (Linux/macOS)
53+
if: runner.os != 'Windows'
54+
run: |
55+
cd publish
56+
tar -czvf ../${{ matrix.artifact }}.tar.gz .
57+
58+
- name: Create archive (Windows)
59+
if: runner.os == 'Windows'
60+
run: |
61+
Compress-Archive -Path ./publish/* -DestinationPath ./${{ matrix.artifact }}.zip
62+
63+
- name: Upload artifact (Linux/macOS)
64+
if: runner.os != 'Windows'
65+
uses: actions/upload-artifact@v4
66+
with:
67+
name: ${{ matrix.artifact }}
68+
path: ${{ matrix.artifact }}.tar.gz
69+
retention-days: 30
70+
71+
- name: Upload artifact (Windows)
72+
if: runner.os == 'Windows'
73+
uses: actions/upload-artifact@v4
74+
with:
75+
name: ${{ matrix.artifact }}
76+
path: ${{ matrix.artifact }}.zip
77+
retention-days: 30
78+
79+
create-release:
80+
needs: build-and-release
81+
runs-on: ubuntu-latest
82+
if: startsWith(github.ref, 'refs/tags/')
83+
84+
permissions:
85+
contents: write
86+
87+
steps:
88+
- name: Download all artifacts
89+
uses: actions/download-artifact@v4
90+
with:
91+
path: artifacts
92+
93+
- name: Display structure of downloaded files
94+
run: ls -R artifacts
95+
96+
- name: Create Release
97+
uses: softprops/action-gh-release@v1
98+
with:
99+
files: |
100+
artifacts/**/*.tar.gz
101+
artifacts/**/*.zip
102+
generate_release_notes: true
103+
draft: false
104+
prerelease: ${{ contains(github.ref, 'alpha') || contains(github.ref, 'beta') || contains(github.ref, 'rc') }}
105+
env:
106+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
107+

BusLane.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
1010

1111
<!-- Version Information -->
12-
<Version>0.3.4</Version>
13-
<AssemblyVersion>0.3.4.0</AssemblyVersion>
14-
<FileVersion>0.3.4.0</FileVersion>
15-
<InformationalVersion>0.3.4</InformationalVersion>
12+
<Version>0.3.5</Version>
13+
<AssemblyVersion>0.3.5.0</AssemblyVersion>
14+
<FileVersion>0.3.5.0</FileVersion>
15+
<InformationalVersion>0.3.5</InformationalVersion>
1616

1717
<!-- Application Metadata -->
1818
<Product>Bus Lane</Product>

README.md

Lines changed: 48 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,40 @@ A modern, cross-platform Azure Service Bus management tool built with Avalonia U
55
![.NET 8](https://img.shields.io/badge/.NET-8.0-512BD4?style=flat&logo=dotnet)
66
![Avalonia UI](https://img.shields.io/badge/Avalonia-11.1-8B44AC?style=flat)
77
![License](https://img.shields.io/badge/License-MIT-green.svg)
8+
![Version](https://img.shields.io/badge/Version-0.3.4-blue.svg)
89

910
## Features
1011

12+
### Connection Options
1113
- 🔐 **Azure Authentication** - Sign in with your Azure account using Azure Identity
14+
- 🔗 **Connection String Support** - Connect directly using Service Bus connection strings
15+
- 📚 **Connection Library** - Save and manage multiple connection strings for quick access
16+
17+
### Namespace & Entity Management
1218
- 📋 **Subscription Management** - Browse and switch between Azure subscriptions
1319
- 🏢 **Namespace Explorer** - View all Service Bus namespaces in your subscription
1420
- 📬 **Queue Management** - Browse queues, view message counts, and manage messages
1521
- 📨 **Topic & Subscription Support** - Full support for topics and their subscriptions
22+
- 🔄 **Session-Enabled Queues** - Support for session-enabled queues and subscriptions
23+
24+
### Messaging Features
1625
- 👀 **Message Peek** - Preview messages without consuming them
17-
- ✉️ **Send Messages** - Send new messages with custom properties, headers, and scheduling
26+
- ✉️ **Send Messages** - Send new messages with full control over:
27+
- Message body and content type
28+
- Custom properties (key-value pairs)
29+
- System properties (CorrelationId, SessionId, Subject, etc.)
30+
- Message scheduling (ScheduledEnqueueTime)
31+
- Time-to-live (TTL) settings
32+
- Partition keys and reply-to settings
33+
- 💾 **Save & Load Messages** - Save message templates for reuse
1834
- 🗑️ **Dead Letter Queue** - View and manage dead-lettered messages
1935
- 🧹 **Purge Messages** - Bulk delete messages from queues or subscriptions
36+
- 🔍 **Message Details** - View complete message details including headers and properties
37+
38+
### User Experience
2039
- 💾 **Session Persistence** - Automatically restores your previous session
40+
- ⚙️ **Settings Dialog** - Configure application preferences
41+
- 🎨 **Modern UI** - Clean, intuitive Fluent design interface
2142

2243
## Screenshots
2344

@@ -67,27 +88,47 @@ dotnet publish -c Release -r linux-x64 --self-contained
6788

6889
## Usage
6990

91+
### Azure Account Mode
7092
1. **Sign In** - Click "Sign in with Azure" to authenticate with your Azure account
7193
2. **Select Subscription** - Choose the Azure subscription containing your Service Bus namespaces
7294
3. **Browse Namespaces** - Click on a namespace to view its queues and topics
7395
4. **View Messages** - Select a queue or topic subscription to peek at messages
7496
5. **Toggle Dead Letter** - Use the dead letter toggle to view dead-lettered messages
7597
6. **Send Messages** - Click the send button to compose and send new messages
7698

99+
### Connection String Mode
100+
1. **Open Connection Library** - Access saved connections or add new ones
101+
2. **Add Connection** - Paste your Service Bus connection string and give it a name
102+
3. **Connect** - Select a saved connection to browse queues and topics
103+
4. **Manage Messages** - View, send, and manage messages just like in Azure mode
104+
77105
## Architecture
78106

79107
BusLane follows the MVVM (Model-View-ViewModel) pattern:
80108

81109
```
82110
BusLane/
83-
├── Models/ # Data models (QueueInfo, TopicInfo, MessageInfo, etc.)
111+
├── Models/ # Data models
112+
│ ├── QueueInfo.cs # Queue metadata
113+
│ ├── TopicInfo.cs # Topic metadata
114+
│ ├── SubscriptionInfo.cs # Subscription metadata
115+
│ ├── MessageInfo.cs # Message details
116+
│ ├── SavedConnection.cs # Stored connection strings
117+
│ └── SavedMessage.cs # Message templates
84118
├── Services/ # Azure integration services
85119
│ ├── IAzureAuthService.cs # Authentication interface
86120
│ ├── AzureAuthService.cs # Azure Identity implementation
87121
│ ├── IServiceBusService.cs # Service Bus operations interface
88-
│ └── ServiceBusService.cs # Service Bus implementation
122+
│ ├── ServiceBusService.cs # Service Bus implementation
123+
│ ├── IConnectionStringService.cs # Connection string operations
124+
│ ├── ConnectionStringService.cs # Connection string implementation
125+
│ ├── IConnectionStorageService.cs # Connection storage interface
126+
│ └── ConnectionStorageService.cs # Local connection storage
89127
├── ViewModels/ # MVVM ViewModels with CommunityToolkit.Mvvm
90128
├── Views/ # Avalonia XAML views
129+
│ ├── Controls/ # Reusable UI components
130+
│ └── Dialogs/ # Modal dialogs (Send, Save, Settings, etc.)
131+
├── Converters/ # Value converters for data binding
91132
└── Styles/ # Application styles and themes
92133
```
93134

@@ -96,12 +137,16 @@ BusLane/
96137
| Package | Version | Purpose |
97138
|---------|---------|---------|
98139
| Avalonia | 11.1.0 | Cross-platform UI framework |
140+
| Avalonia.Desktop | 11.1.0 | Desktop platform support |
99141
| Avalonia.Themes.Fluent | 11.1.0 | Fluent design theme |
142+
| Avalonia.Fonts.Inter | 11.1.0 | Inter font family |
143+
| Avalonia.ReactiveUI | 11.1.0 | ReactiveUI integration |
100144
| Azure.Identity | 1.17.1 | Azure authentication |
101145
| Azure.ResourceManager | 1.13.2 | Azure Resource Manager SDK |
102146
| Azure.ResourceManager.ServiceBus | 1.1.0 | Service Bus management |
103147
| Azure.Messaging.ServiceBus | 7.20.1 | Service Bus messaging |
104148
| CommunityToolkit.Mvvm | 8.2.2 | MVVM toolkit with source generators |
149+
| Microsoft.Extensions.DependencyInjection | 8.0.0 | Dependency injection |
105150

106151
## Contributing
107152

0 commit comments

Comments
 (0)