Skip to content

Migration from ADO to Github Actions #85

Migration from ADO to Github Actions

Migration from ADO to Github Actions #85

# DESCRIPTION:
# Builds, tests, and packages the solution for the main branch.
on:
pull_request
permissions:
id-token: write
contents: read
defaults:
run:
working-directory: src
shell: bash
env:
buildConfiguration: Release
azureSubscriptionEndpoint: docker-build
azureContainerRegistryName: healthplatformregistry
connectedServiceName: Microsoft Health Open Source Subscription
composeLocation: build/docker/docker-compose.yaml
imageTag: ${{github.run_number}}
outputPath: ${{github.workspace}}/artifacts
jobs:
setup:
runs-on: ubuntu-latest
env:
deploymentEnvironmentName: $vars.CIRESOURCEGROUPROOT
appServicePlanName: $vars.CIRESOURCEGROUPROOT-linux
resourceGroupName: $vars.CIRESOURCEGROUPROOT
outputs:
assemblyVersion: ${{ steps.version.outputs.assemblyVersion }}
fileVersion: ${{ steps.version.outputs.fileVersion }}
informationalVersion: ${{ steps.version.outputs.informationalVersion }}
majorMinorPatch: ${{ steps.version.outputs.majorMinorPatch }}
semVer: ${{steps.version.outputs.SemVer}}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Latest .Net SDK
uses: actions/setup-dotnet@v4
with:
global-json-file: 'global.json'
dotnet-version: |
6.x
8.x
- name: Determine Semver
id: version
uses: ./.github/actions/update-semver
# - name: Azure Login
# uses: azure/login@v2
# with:
# client-id: ${{secrets.AZURE_CLIENT_ID}}
# subscription-id: ${{secrets.AZURE_SUBSCRIPTION_ID}}
# tenant-id: ${{secrets.AZURE_TENANT_ID}}
# enable-AzPSSession: true
# - name: Clean Storage Accounts
# uses: ./.github/actions/clean-storage-accounts
# with:
# environmentName: ${{vars.CIRESOURCEGROUPROOT}}
# - name: Cleanup Integration Test databases
# uses: ./.github/actions/cleanup-integration-test-databases
# with:
# environmentName: ${{vars.CIRESOURCEGROUPROOT}}
buildAndUnitTest:
runs-on: ubuntu-latest
needs: setup
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Latest .Net SDK
uses: actions/setup-dotnet@v4
with:
global-json-file: 'global.json'
dotnet-version: |
6.x
8.x
- name: Build
uses: ./.github/actions/dotnet-build
with:
assemblyVersion: ${{needs.setup.outputs.assemblyVersion}}
buildConfiguration: ${{env.buildConfiguration}}
fileVersion: ${{needs.setup.outputs.fileVersion}}
informationalVersion: ${{needs.setup.outputs.informationalVersion}}
majorMinorPatch: ${{needs.setup.outputs.majorMinorPatch}}
# - name: Test
# uses: ./.github/actions/dotnet-test
# with:
# buildConfiguration: ${{env.buildConfiguration}}
# - name: Generate SBOM
# run: |
# curl -Lo $RUNNER_TEMP/sbom-tool https://github.com/microsoft/sbom-tool/releases/latest/download/sbom-tool-linux-x64
# chmod +x $RUNNER_TEMP/sbom-tool
# $RUNNER_TEMP/sbom-tool generate -b . -bc . -V Verbose -ps "Organization: Microsoft" -pv ${{needs.setup.outputs.majorMinorPatch}} -pn ${{needs.setup.outputs.informationalVersion}}
- name: Upload a Build Artifact
uses: actions/upload-artifact@v4
with:
path: ${{env.outputPath}}
packageBuildArtifacts:
runs-on: ubuntu-latest
needs: buildAndUnitTest
strategy:
matrix:
fhirSchemaVersion: ["Stu3", "R4", "R4B", "R5"]
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Latest .Net SDK
uses: actions/setup-dotnet@v4
with:
global-json-file: 'global.json'
dotnet-version: |
6.x
8.x
- name: Nuget Restore
working-directory: ${{github.workspace}}
shell: bash
run: dotnet restore --verbosity detailed
- name: Download Build Artifacts from Job Cache
uses: actions/download-artifact@v4
with:
path: artifacts
- name: Package Web Build Artifacts
uses: ./.github/actions/package-web-build-artifacts
with:
fhirschemaversion: ${{ matrix.fhirSchemaVersion }}
majorMinorPatch: ${{needs.setup.outputs.majorMinorPatch}}
outputPath: ${{env.outputPath}}
buildConfiguration: ${{env.buildConfiguration}}
semVer: ${{needs.setup.outputs.semVer}}
# - name: Docker Build
# uses: ./.github/actions/docker-build
# with:
# assemblySemFileVer: ${{needs.setup.outputs.semVer}}
# runIntegrationTests:
# runs-on: ubuntu-latest
# needs : buildAndUnitTest
# steps:
# - name: Checkout
# uses: actions/checkout@v4
# with:
# fetch-depth: 0
# - name: Download Build Artifact for Testing
# uses: actions/download-artifact@v4
# with:
# path: artifacts
# - name: Install Latest .Net SDK
# uses: actions/setup-dotnet@v4
# with:
# global-json-file: 'global.json'
# dotnet-version: |
# 6.x
# 8.x
# - name: Docker add main tag
# uses: ./.github/actions/docker-add-main-tag
# with:
# assemblySemFileVer: ${{needs.setup.outputs.semVer}}
# imageTag: ${{env.imageTag}}
# azureContainerRegistryName: ${{env.azureContainerRegistryName}}
# connectedServiceName: ${{env.connectedServiceName}}