diff --git a/.github/workflows/Assignment1.yml b/.github/workflows/Assignment1.yml new file mode 100644 index 0000000..9fc5cfd --- /dev/null +++ b/.github/workflows/Assignment1.yml @@ -0,0 +1,42 @@ +name: Assignment 1 + +on: + workflow_dispatch: + push: + branches: + - assignment1 + paths: + - 'Assignment1/**' + - '.github/workflows/Assignment1.yml' + +permissions: + id-token: write + contents: read + +jobs: + list-resources: + runs-on: windows-latest + environment: production + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Azure Login with OIDC + uses: azure/login@v1 + with: + client-id: ${{ vars.CLIENT_ID }} + tenant-id: ${{ vars.TENANT_ID }} + subscription-id: ${{ vars.SUBSCRIPTION_ID }} + enable-AzPSSession: true + + - name: Run Assignment1 Script + uses: azure/powershell@v1 + with: + azPSVersion: 'latest' + inlineScript: | + ./Assignment1/Assignment1.ps1 + + - name: Logout from Azure + if: always() + run: az logout diff --git a/.github/workflows/DeployWebApp.yml b/.github/workflows/DeployWebApp.yml new file mode 100644 index 0000000..6bef1be --- /dev/null +++ b/.github/workflows/DeployWebApp.yml @@ -0,0 +1,48 @@ +name: Deploy Web App + +on: + workflow_dispatch: + push: + branches: + - assignment1 + paths: + - 'SampleApp/MyFirstAzureWebApp/**' + - '.github/workflows/DeployWebApp.yml' + +permissions: + id-token: write + contents: read + +jobs: + build-and-deploy: + runs-on: windows-latest + environment: production + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: '8.0.x' + + - name: Build and Publish + run: dotnet publish SampleApp/MyFirstAzureWebApp/MyFirstAzureWebApp.csproj --configuration Release --output ./publish + + - name: Azure Login with OIDC + uses: azure/login@v1 + with: + client-id: ${{ vars.CLIENT_ID }} + tenant-id: ${{ vars.TENANT_ID }} + subscription-id: ${{ vars.SUBSCRIPTION_ID }} + + - name: Deploy to Azure Web App + uses: azure/webapps-deploy@v2 + with: + app-name: 'cscd396-carsonl15' + package: ./publish + + - name: Logout from Azure + if: always() + run: az logout diff --git a/Assignment1/Assignment1.ps1 b/Assignment1/Assignment1.ps1 new file mode 100644 index 0000000..1936216 --- /dev/null +++ b/Assignment1/Assignment1.ps1 @@ -0,0 +1,23 @@ +$subscription_id = "a7cd0bad-bfc7-40ac-acf2-b07966f12423" + +Write-Host "=== Subscription Resources (Before) ===" +Get-AzResource | Select-Object Name, ResourceType, ResourceGroupName, Location | Format-Table -AutoSize + +# Extra Credit: Create a resource, list it, then delete it +$resourceGroupName = "rg-cscd396" +$storageName = "cscd396ectemp" +$location = "eastus" + +Write-Host "`n=== Extra Credit: Creating temporary storage account ===" +New-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageName -Location $location -SkuName "Standard_LRS" +Write-Host "Storage account '$storageName' created." + +Write-Host "`n=== Subscription Resources (After Create) ===" +Get-AzResource | Select-Object Name, ResourceType, ResourceGroupName, Location | Format-Table -AutoSize + +Write-Host "`n=== Extra Credit: Deleting temporary storage account ===" +Remove-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageName -Force +Write-Host "Storage account '$storageName' deleted." + +Write-Host "`n=== Subscription Resources (After Delete) ===" +Get-AzResource | Select-Object Name, ResourceType, ResourceGroupName, Location | Format-Table -AutoSize diff --git a/SampleApp/MyFirstAzureWebApp/MyFirstAzureWebApp.csproj b/SampleApp/MyFirstAzureWebApp/MyFirstAzureWebApp.csproj index aa4c93b..491e118 100644 --- a/SampleApp/MyFirstAzureWebApp/MyFirstAzureWebApp.csproj +++ b/SampleApp/MyFirstAzureWebApp/MyFirstAzureWebApp.csproj @@ -1,7 +1,7 @@ - net7.0 + net8.0 enable enable