Merge pull request #625 from microsoft/chore/release #1618
Workflow file for this run
This file contains 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: CI/CD Pipeline | |
on: [push, pull_request, workflow_dispatch] | |
permissions: | |
contents: write | |
jobs: | |
ci: | |
name: Continuous Integration | |
runs-on: ubuntu-latest | |
outputs: | |
latest_version: ${{ steps.tag_generator.outputs.new_version }} | |
is_default_branch: ${{ steps.conditionals_handler.outputs.is_default_branch }} | |
env: | |
ARTIFACTS_FOLDER: ${{ github.workspace }}/Artifacts | |
GITHUB_RUN_NUMBER: ${{ github.run_number }} | |
steps: | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: 8.0.x | |
- name: Data gatherer | |
id: data_gatherer | |
shell: pwsh | |
run: | | |
# Get default branch | |
$repo = 'microsoft/OpenAPI.NET.OData' | |
$defaultBranch = Invoke-RestMethod -Method GET -Uri https://api.github.com/repos/$repo | Select-Object -ExpandProperty default_branch | |
Write-Output "default_branch=$(echo $defaultBranch) >> $GITHUB_OUTPUT" | |
- name: Conditionals handler | |
id: conditionals_handler | |
shell: pwsh | |
run: | | |
$defaultBranch = "${{ steps.data_gatherer.outputs.default_branch }}" | |
$githubRef = "${{ github.ref }}" | |
$isDefaultBranch = 'false' | |
if ( $githubRef -like "*$defaultBranch*" ) { | |
$isDefaultBranch = 'true' | |
} | |
Write-Output "is_default_branch=$(echo $isDefaultBranch) >> $GITHUB_OUTPUT" | |
- name: Checkout repository | |
id: checkout_repo | |
uses: actions/checkout@v4 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
fetch-depth: 0 | |
- if: steps.conditionals_handler.outputs.is_default_branch == 'true' | |
name: Bump GH tag | |
id: tag_generator | |
uses: mathieudutour/github-tag-action@v6.2 | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
default_bump: false | |
release_branches: ${{ steps.data_gatherer.outputs.default_branch }} | |
- name: Build projects | |
id: build_projects | |
shell: pwsh | |
run: | | |
$projectsArray = @( | |
'.\src\Microsoft.OpenApi.OData.Reader\Microsoft.OpenAPI.OData.Reader.csproj' | |
) | |
$gitNewVersion = if ("${{ steps.tag_generator.outputs.new_version }}") {"${{ steps.tag_generator.outputs.new_version }}"} else {$null} | |
$projectCurrentVersion = ([xml](Get-Content .\src\Microsoft.OpenApi.OData.Reader\Microsoft.OpenAPI.OData.Reader.csproj)).Project.PropertyGroup.Version | |
$projectNewVersion = $gitNewVersion ?? $projectCurrentVersion | |
$projectsArray | ForEach-Object { | |
dotnet build $PSItem ` | |
-c Release # ` | |
# -o $env:ARTIFACTS_FOLDER ` | |
# /p:Version=$projectNewVersion | |
} | |
# Move NuGet packages to separate folder for pipeline convenience | |
# New-Item Artifacts/NuGet -ItemType Directory | |
# Get-ChildItem Artifacts/*.nupkg | Move-Item -Destination "Artifacts/NuGet" | |
- name: Run unit tests | |
id: run_unit_tests | |
shell: pwsh | |
run: | | |
$testProjectsArray = @( | |
'.\test\Microsoft.OpenAPI.OData.Reader.Tests\Microsoft.OpenAPI.OData.Reader.Tests.csproj' | |
) | |
$testProjectsArray | ForEach-Object { | |
dotnet test $PSItem ` | |
-c Release | |
} | |
# - if: steps.tag_generator.outputs.new_version != '' | |
# name: Upload NuGet packages as artifacts | |
# id: ul_packages_artifact | |
# uses: actions/upload-artifact@v1 | |
# with: | |
# name: NuGet packages | |
# path: Artifacts/NuGet/ | |
cd: | |
if: needs.ci.outputs.is_default_branch == 'true' && needs.ci.outputs.latest_version != '' | |
name: Continuous Deployment | |
needs: ci | |
runs-on: ubuntu-latest | |
steps: | |
# - name: Download and extract NuGet packages | |
# id: dl_packages_artifact | |
# uses: actions/download-artifact@v2 | |
# with: | |
# name: NuGet packages | |
# path: NuGet/ | |
# - name: Push NuGet packages to NuGet.org | |
# id: push_nuget_packages | |
# continue-on-error: true | |
# shell: pwsh | |
# run: | | |
# Get-ChildItem NuGet/*.nupkg | ForEach-Object { | |
# nuget push $PSItem ` | |
# -ApiKey $env:NUGET_API_KEY ` | |
# -Source https://api.nuget.org/v3/index.json | |
# } | |
# env: | |
# NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }} | |
- name: Create and publish release | |
id: create_release | |
uses: softprops/action-gh-release@v2 | |
with: | |
name: OpenAPI.Net.OData v${{ needs.ci.outputs.latest_version }} | |
tag_name: v${{ needs.ci.outputs.latest_version }} | |
# files: | | |
# NuGet/Microsoft.OpenApi.${{ needs.ci.outputs.latest_version }}.nupkg | |
# NuGet/Microsoft.OpenApi.Readers.${{ needs.ci.outputs.latest_version }}.nupkg | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) |