Skip to content

Merge pull request #337 from DaniilPoiarkov/feature/migrate-to-creden… #299

Merge pull request #337 from DaniilPoiarkov/feature/migrate-to-creden…

Merge pull request #337 from DaniilPoiarkov/feature/migrate-to-creden… #299

name: Development Container-based Build and deploy to an Azure
env:
AZURE_WEBAPP_NAME: eclipse-dev-app
DOTNET_VERSION: '9.0.*'
DOTNET_CONFIGURATION: 'Release'
REPO:
on:
push:
branches: develop
paths:
- 'src/**'
- '**.props'
- '**.sln'
- '**.dockerfile'
workflow_dispatch:
permissions:
contents: read
packages: write
checks: write
pull-requests: write
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up .NET Core
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: Set up dependency caching
uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: Restore dependencies
run: dotnet restore ./Eclipse.WebAPI.sln
- name: Build
run: dotnet build ./Eclipse.WebAPI.sln
--configuration ${{ env.DOTNET_CONFIGURATION }}
--no-restore
- name: Run tests
run: dotnet test ./Eclipse.WebAPI.sln
--configuration ${{ env.DOTNET_CONFIGURATION }}
--no-build
build-image:
if: github.ref_name == 'develop'
runs-on: ubuntu-latest
needs: [ 'build-and-test' ]
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3.0.0
- name: Log in to GitHub container registry
uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ github.token }}
- name: Lowercase the repo name and username
run: echo "REPO=${GITHUB_REPOSITORY,,}" >>${GITHUB_ENV}
- name: Build and push container image to registry
uses: docker/build-push-action@0565240e2d4ab88bba5387d719585280857ece09 # v5.0.0
with:
push: true
tags: ghcr.io/${{ env.REPO }}:dev.${{ github.sha }}
file: ./web-api.dockerfile
deploy:
if: github.ref_name == 'develop'
permissions:
contents: none
runs-on: ubuntu-latest
needs: build-image
environment:
name: 'Development'
url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
steps:
- name: Lowercase the repo name and username
run: echo "REPO=${GITHUB_REPOSITORY,,}" >>${GITHUB_ENV}
- name: Login to Azure
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_SP_ECLIPSE_DEV_CICD }}
- name: Deploy to Azure Web App
id: deploy-to-webapp
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
images: 'ghcr.io/${{ env.REPO }}:dev.${{ github.sha }}'
- name: Logout from Azure
run: |
az logout