DEV Community

Jawad Hayat
Jawad Hayat

Posted on

My Learning Journey in CI/CD with Local IIS Server

As a backend developer, I recently dived into the world of CI/CD while working with Angular. Here’s a quick overview of my process:

1. Create a Web API Project: Started with a new project and pushed the code to a GitHub repo.
2. Configure GitHub Actions: Set up the .NET build and test action by creating a workflow directory and a YAML file in .github.
3. Set Up Self-Hosted Runner:

  • Configured a new runner in GitHub Actions settings.
  • Ran provided commands in PowerShell as an administrator to set up the runner locally.
  • Verified the runner is working correctly in GitHub Actions settings. 4. Test the Configuration: Pushed changes to the master branch to ensure the jobs run successfully. 5. Install IIS Server: Created a website and bound it to a physical path on my PC. 6. Publish and Deploy Logic: Updated the YAML file for publishing and deploying to IIS.

Here’s the YAML script I used:

name: .NET

on:
 push:
 branches: [ "master" ]
 pull_request:
 branches: [ "master" ]

jobs:
 build-and-deploy:

 runs-on: self-hosted

 steps:
 - uses: actions/checkout@v4
 - name: Restore dependencies
 run: dotnet restore
 - name: Build
 run: dotnet build --no-restore
 - name: Test
 run: dotnet test --no-build --verbosity normal
 - name: Publish
 run: dotnet publish -c Debug -o dotnetcorewebapp .
 - name: Stop IIS
 run: iisreset /stop
 - name: Deploy to IIS
 run: Copy-Item -Path {Your Path}\* -Destination {Your Path} -Recurse -Force
 - name: List files in IIS
 run: Get-ChildItem -Path {Your Path} -Recurse
 - name: Start IIS
 run: iisreset /start
Enter fullscreen mode Exit fullscreen mode

This journey has been a fantastic learning experience, enhancing my skills in automation and deployment. Looking forward to more such explorations!

Top comments (0)