diff --git a/.github/workflows/post-integration.yml b/.github/workflows/post-integration.yml new file mode 100644 index 0000000..8f3fc00 --- /dev/null +++ b/.github/workflows/post-integration.yml @@ -0,0 +1,82 @@ +name: "Post-Integration" + +on: + push: + branches: + - main + - '!stable' + - '!release' + +env: + ATC_EMAIL: 'atcnet.org@gmail.com' + ATC_NAME: 'Atc-Net' + NUGET_REPO_URL: 'https://nuget.pkg.github.com/atc-net/index.json' + +jobs: + merge-to-stable: + runs-on: ubuntu-latest + steps: + - name: ๐Ÿ›’ Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.PAT_WORKFLOWS }} + + - name: โš›๏ธ Sets environment variables - branch-name + uses: nelonoel/branch-name@v1.0.1 + + - name: โš›๏ธ Sets environment variables - Nerdbank.GitVersioning + uses: dotnet/nbgv@master + with: + setAllVars: true + + - name: โš™๏ธ Setup dotnet 8.0.x + uses: actions/setup-dotnet@v4 + with: + dotnet-version: '8.0.x' + + - name: โš™๏ธ Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: 17 + distribution: 'zulu' + + - name: ๐Ÿงน Clean + run: dotnet clean -c Release && dotnet nuget locals all --clear + + - name: ๐Ÿ” Restore packages + run: dotnet restore + + - name: ๐Ÿ› ๏ธ Build + run: dotnet build -c Release --no-restore /p:UseSourceLink=true + + - name: ๐Ÿงช Run unit tests + run: dotnet test -c Release --no-build --filter "Category!=Integration" + + - name: ๐ŸŒฉ๏ธ SonarCloud install scanner + run: dotnet tool install --global dotnet-sonarscanner + + - name: ๐ŸŒฉ๏ธ SonarCloud analyze + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + shell: pwsh + run: | + dotnet sonarscanner begin /k:"atc-net_atc-microsoft-graph-client" /o:"atc-net" /d:sonar.token="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" + dotnet build -c Release /p:UseSourceLink=true --no-restore + dotnet sonarscanner end /d:sonar.token="${{ secrets.SONAR_TOKEN }}" + + - name: โฉ Merge to stable-branch + run: | + git config --local user.email ${{ env.ATC_EMAIL }} + git config --local user.name ${{ env.ATC_NAME }} + git checkout stable + git merge --ff-only main + git push origin stable + + - name: ๐Ÿ—ณ๏ธ Creating library package for pre-release + run: dotnet pack -c Release --no-restore -o ${GITHUB_WORKSPACE}/packages -p:RepositoryBranch=$BRANCH_NAME + + - name: ๐Ÿ“ฆ Push packages to GitHub Package Registry + run: | + dotnet nuget push ${GITHUB_WORKSPACE}/packages/'Atc.Microsoft.Graph.Client.'${NBGV_NuGetPackageVersion}'.nupkg' -k ${{ secrets.GITHUB_TOKEN }} -s ${{ env.NUGET_REPO_URL }} --skip-duplicate \ No newline at end of file diff --git a/.github/workflows/pre-integration.yml b/.github/workflows/pre-integration.yml new file mode 100644 index 0000000..2536549 --- /dev/null +++ b/.github/workflows/pre-integration.yml @@ -0,0 +1,58 @@ +name: "Pre-Integration" + +on: + pull_request: + types: + - opened + - synchronize + - reopened + +jobs: + dotnet-build: + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + runs-on: ${{ matrix.os }} + steps: + - name: ๐Ÿ›’ Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: โš™๏ธ Setup dotnet 8.0.x + uses: actions/setup-dotnet@v4 + with: + dotnet-version: '8.0.x' + + - name: ๐Ÿงน Clean + run: dotnet clean -c Release && dotnet nuget locals all --clear + + - name: ๐Ÿ” Restore packages + run: dotnet restore + + - name: ๐Ÿ› ๏ธ Building library in release mode + run: dotnet build -c Release --no-restore + + dotnet-test: + runs-on: ubuntu-latest + needs: + - dotnet-build + steps: + - name: ๐Ÿ›’ Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: โš™๏ธ Setup dotnet 8.0.x + uses: actions/setup-dotnet@v4 + with: + dotnet-version: '8.0.x' + + - name: ๐Ÿ” Restore packages + run: dotnet restore + + - name: ๐Ÿ› ๏ธ Build + run: dotnet build -c Release --no-restore /p:UseSourceLink=true + + - name: ๐Ÿงช Run unit tests + run: dotnet test -c Release --no-build --filter "Category!=Integration" \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..a17367c --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,57 @@ +name: "Release" + +on: + workflow_dispatch: + +env: + ATC_EMAIL: 'atcnet.org@gmail.com' + ATC_NAME: 'Atc-Net' + NUGET_REPO_URL: 'https://api.nuget.org/v3/index.json' + +jobs: + release: + if: github.ref == 'refs/heads/stable' + runs-on: ubuntu-latest + steps: + - name: ๐Ÿ›’ Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.PAT_WORKFLOWS }} + + - name: โš›๏ธ Sets environment variables - branch-name + uses: nelonoel/branch-name@v1.0.1 + + - name: โš›๏ธ Sets environment variables - Nerdbank.GitVersioning + uses: dotnet/nbgv@master + with: + setAllVars: true + + - name: โš™๏ธ Setup dotnet 8.0.x + uses: actions/setup-dotnet@v4 + with: + dotnet-version: '8.0.x' + + - name: ๐Ÿงน Clean + run: dotnet clean -c Release && dotnet nuget locals all --clear + + - name: ๐Ÿ” Restore packages + run: dotnet restore + + - name: ๐Ÿ› ๏ธ Building library in release mode + run: dotnet build -c Release --no-restore /p:UseSourceLink=true + + - name: โฉ Merge to release-branch + run: | + git config --local user.email ${{ env.ATC_EMAIL }} + git config --local user.name ${{ env.ATC_NAME }} + git checkout release + git merge --ff-only stable + git push origin release + + - name: ๐Ÿ—ณ๏ธ Creating library package for release + run: dotnet pack -c Release --no-restore -o ${GITHUB_WORKSPACE}/packages -p:RepositoryBranch=$BRANCH_NAME /p:PublicRelease=true + + - name: ๐Ÿ“ฆ Push packages to NuGet + run: | + dotnet nuget push ${GITHUB_WORKSPACE}/packages/'Atc.Microsoft.Graph.Client.'${NBGV_NuGetPackageVersion}'.nupkg' -k ${{ secrets.NUGET_KEY }} -s ${{ env.NUGET_REPO_URL }} --skip-duplicate --no-symbols \ No newline at end of file diff --git a/Atc.Microsoft.Graph.Client.sln b/Atc.Microsoft.Graph.Client.sln index c789319..70b1a3f 100644 --- a/Atc.Microsoft.Graph.Client.sln +++ b/Atc.Microsoft.Graph.Client.sln @@ -14,10 +14,25 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{58BC6728-1 EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sample", "sample", "{67FE0C20-D944-47C5-A64E-AC05F7438940}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Atc.Microsoft.Graph.Client", "src\Atc.Microsoft.Graph.Client\Atc.Microsoft.Graph.Client.csproj", "{E0C8319E-49CC-4A55-B356-986320EBF055}" +EndProject Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {E0C8319E-49CC-4A55-B356-986320EBF055}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E0C8319E-49CC-4A55-B356-986320EBF055}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E0C8319E-49CC-4A55-B356-986320EBF055}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E0C8319E-49CC-4A55-B356-986320EBF055}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {E0C8319E-49CC-4A55-B356-986320EBF055} = {69C84246-AA75-43E8-94B2-66FD555B18B0} + EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {04120463-05C5-417B-8D7A-2D7D35B71A07} EndGlobalSection diff --git a/src/Atc.Microsoft.Graph.Client/Atc.Microsoft.Graph.Client.csproj b/src/Atc.Microsoft.Graph.Client/Atc.Microsoft.Graph.Client.csproj new file mode 100644 index 0000000..483e0bd --- /dev/null +++ b/src/Atc.Microsoft.Graph.Client/Atc.Microsoft.Graph.Client.csproj @@ -0,0 +1,15 @@ + + + + net8.0 + Atc.Microsoft.Graph.Client + microsoft-graph;microsoft-graph-api;microsoft-graph-client + Atc.Microsoft.Graph.Client provides a convenient abstraction layer over the Microsoft Graph SDK, simplifying interactions with Microsoft Graph APIs. By wrapping the Microsoft Graph SDK, the library offers a consistent and simplified interface, handling complexities like paging and error handling for you. + README.md + + + + + + + diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 35519da..93e4ae2 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -6,6 +6,20 @@ --> + + + https://github.com/$(OrganizationName)/$(RepositoryName) + git + true + MIT + https://github.com/$(OrganizationName)/$(RepositoryName) + icon.png + + + + + + Library @@ -19,5 +33,28 @@ true embedded + + false + + true - + + + + true + + + + + + + + \ No newline at end of file