Skip to content

Commit

Permalink
Initial commit with RabbitMQ support
Browse files Browse the repository at this point in the history
  • Loading branch information
mocsharp committed Apr 5, 2022
1 parent ae43f4c commit 8026bb5
Show file tree
Hide file tree
Showing 39 changed files with 2,710 additions and 0 deletions.
297 changes: 297 additions & 0 deletions .editorconfig

Large diffs are not rendered by default.

40 changes: 40 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: bug
assignees: ''

---

### Description
A clear and concise description of what the bug is.

### Steps to reproduce
Please share a clear and concise description of the problem.
1. Go to '...'
2. Install '....'
3. Run commands '....'
...

### Expected behavior
A clear and concise description of what you expected to happen.

### Actual behavior
A clear and concise description of what actually happened.

### Configuration

* MONAI Deploy Messaging Library version/commit:
* OS and version (distro if applicable):
* Kubernetes version (if applicable):
* Docker version (if applicable):
* Installation source (NGC, Dockerhub, or something else):
* Hardware configuration (CPU, GPU, memory, storage, etc...):
* Application & version (e.g. Informatics Gateway, 0.1.0):

### Regression?
Did this work in the previous build or release of the MONAI Deploy Messaging Library? If you can try a previous release or build to find out, that can help us narrow down the problem. If you don't know, that's OK.

### Other information
(Please attach any logs available and remember to anonymize any PHI before sharing).
20 changes: 20 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''

---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.
22 changes: 22 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<!--
SPDX-FileCopyrightText: © 2021-2022 MONAI Consortium
SPDX-License-Identifier: Apache License 2.0
-->

Fixes # .

### Description
A few sentences describing the changes proposed in this pull request.

### Status
**Ready/Work in progress/Hold**

### Types of changes
<!--- Put an `x` in all the boxes that apply, and remove the not applicable items -->
- [ ] Non-breaking change (fix or new feature that would not break existing functionality).
- [ ] Breaking change (fix or new feature that would cause existing functionality to change).
- [ ] New tests added to cover the changes.
- [ ] All tests passed locally by running `./src/run-tests-in-docker.sh`.
- [ ] [Documentation comments](https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/documentation-comments) included/updated.
- [ ] User guide updated.
- [ ] I have updated the changelog
286 changes: 286 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,286 @@
# SPDX-FileCopyrightText: © 2022 MONAI Consortium
# SPDX-License-Identifier: Apache License 2.0

name: ci

on:
# Triggers on pushes and on pull requests
push:

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

env:
BUILD_CONFIG: "Release"
SOLUTION: "Monai.Deploy.Messaging.sln"
TEST_RESULTS: "results/"

jobs:

analyze:
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'csharp' ]

steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
fetch-depth: 0
- uses: actions/setup-dotnet@v1
with:
dotnet-version: "6.0.x"

- name: Enable NuGet cache
uses: actions/[email protected]
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }}
restore-keys: |
${{ runner.os }}-nuget
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}

- name: Restore dependencies
run: dotnet restore
working-directory: ./src

- name: Build Solution
run: dotnet build -c ${{ env.BUILD_CONFIG }} --nologo ${{ env.SOLUTION }}
working-directory: ./src

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1

- name: Secret detection
uses: zricethezav/gitleaks-action@master

unit-test:
runs-on: ubuntu-latest
steps:
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 1.11

- uses: actions/setup-dotnet@v1
with:
dotnet-version: "6.0.x"

- name: Enable NuGet cache
uses: actions/[email protected]
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }}
restore-keys: |
${{ runner.os }}-nuget
- uses: actions/checkout@v2
with:
fetch-depth: 0

- name: Install SonarCloud scanner
if: steps.cache-sonar-scanner.outputs.cache-hit != 'true'
run: dotnet tool install --global dotnet-sonarscanner

- name: Restore dependencies
run: dotnet restore
working-directory: ./src

- name: Begin SonarScanner
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: dotnet sonarscanner begin /k:"Project-MONAI_monai-deploy-messaging" /o:"project-monai" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" /d:sonar.cs.opencover.reportsPaths="${{ env.TEST_RESULTS }}/**/*.xml"
working-directory: ./src

- name: Build
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: dotnet build -c ${{ env.BUILD_CONFIG }} --nologo "${{ env.SOLUTION }}"
working-directory: ./src

- name: Test
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: find ~+ -type f -name "*.Test.csproj" | xargs -L1 dotnet test -c ${{ env.BUILD_CONFIG }} -v=minimal -r "${{ env.TEST_RESULTS }}" --collect:"XPlat Code Coverage" --settings coverlet.runsettings
working-directory: ./src

- name: End SonarScanner
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: dotnet sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}"
working-directory: ./src

- uses: codecov/codecov-action@v2
with:
token: ${{ secrets.CODECOV_TOKEN }}
directory: "src/${{ env.TEST_RESULTS }}"
files: "**/coverage.opencover.xml"
flags: unittests
name: codecov-umbrella
fail_ci_if_error: true
verbose: true

build:
runs-on: ${{ matrix.os }}

outputs:
majorMinorPatch: ${{ steps.gitversion.outputs.majorMinorPatch }}

strategy:
matrix:
os: [ubuntu-latest, windows-latest]
fail-fast: true

permissions:
contents: write
packages: write
checks: write
security-events: write

steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
fetch-depth: 0

- uses: actions/setup-dotnet@v1
with:
dotnet-version: "6.0.x"

- name: Enable NuGet cache
uses: actions/[email protected]
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }}
restore-keys: |
${{ runner.os }}-nuget
- name: Restore dependencies
run: dotnet restore
working-directory: ./src

- name: Install GitVersion
run: dotnet tool install --global GitVersion.Tool

- name: Determine Version
id: gitversion
uses: gittools/actions/gitversion/[email protected]
with:
useConfigFile: true
updateAssemblyInfo: true
updateAssemblyInfoFilename: src/AssemblyInfo.cs

- name: Build Solution
run: dotnet build -c ${{ env.BUILD_CONFIG }} --nologo ${{ env.SOLUTION }}
working-directory: ./src

- name: Package
env:
PACKAGEDIR: '${{ github.workspace }}/release/'
if: ${{ matrix.os == 'ubuntu-latest' }}
run: |
mkdir $PACKAGEDIR
dotnet pack --no-build -c ${{ env.BUILD_CONFIG }} -o $PACKAGEDIR -p:PackageVersion=${{ steps.gitversion.outputs.nuGetVersionV2 }}
ls -lR $PACKAGEDIR
working-directory: ./src

- name: Upload
if: ${{ matrix.os == 'ubuntu-latest' }}
uses: actions/[email protected]
with:
path: ${{ github.workspace }}/release/*.nupkg
retention-days: 30

publish:
runs-on: ubuntu-latest
needs: [build, unit-test]
steps:
- uses: actions/download-artifact@v2
id: download

- name: List artifacts
run: ls -ldR ${{steps.download.outputs.download-path}}/**/*

- uses: actions/setup-dotnet@v1
env:
NUGET_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
with:
dotnet-version: "6.0.x"
source-url: https://nuget.pkg.github.com/Project-MONAI/index.json

- name: Publish to GitHub
run: dotnet nuget push ${{ steps.download.outputs.download-path }}/artifact/*.nupkg

release:
if: ${{ contains(github.ref, 'refs/heads/main') ||contains(github.head_ref, 'release/') }}
runs-on: ubuntu-latest
needs: [build, unit-test]
env:
MAJORMINORPATCH: ${{ needs.build.outputs.majorMinorPatch }}

steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0

- uses: actions/download-artifact@v2
id: download

- name: List artifacts
run: ls -ldR ${{steps.download.outputs.download-path}}/**/*

- name: Publish to NuGet.org
run: dotnet nuget push release/*.nupkg -s https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET }} --skip-duplicate

- name: Extract owner and repo
uses: jungwinter/split@v1
id: repo
with:
seperator: "/"
msg: ${{ github.repository }}

- name: Install GitReleaseManager
uses: gittools/actions/gitreleasemanager/[email protected]
with:
versionSpec: "0.13.x"

- name: Create release with GitReleaseManager
uses: gittools/actions/gitreleasemanager/[email protected]
with:
token: ${{ secrets.GITHUB_TOKEN }}
owner: ${{ steps.repo.outputs._0 }}
repository: ${{ steps.repo.outputs._1 }}
milestone: ${{ env.MAJORMINORPATCH }}
name: Release v${{ env.MAJORMINORPATCH }}

- name: Publish release with GitReleaseManager
uses: gittools/actions/gitreleasemanager/[email protected]
if: ${{ contains(github.ref, 'refs/heads/main') }}
with:
token: ${{ secrets.GITHUB_TOKEN }}
owner: ${{ steps.repo.outputs._0 }}
repository: ${{ steps.repo.outputs._1 }}
tagName: ${{ env.MAJORMINORPATCH }}

- name: Close release with GitReleaseManager
uses: gittools/actions/gitreleasemanager/[email protected]
if: ${{ contains(github.ref, 'refs/heads/main') }}
with:
token: ${{ secrets.GITHUB_TOKEN }}
owner: ${{ steps.repo.outputs._0 }}
repository: ${{ steps.repo.outputs._1 }}
milestone: ${{ env.MAJORMINORPATCH }}
Loading

0 comments on commit 8026bb5

Please sign in to comment.