Skip to content

Bump FirebaseAdmin from 3.2.0 to 3.4.0 #259

Bump FirebaseAdmin from 3.2.0 to 3.4.0

Bump FirebaseAdmin from 3.2.0 to 3.4.0 #259

Workflow file for this run

name: CI/CD
on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
jobs:
build:
name: Build & Unit Test
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install .NET Core
uses: actions/setup-dotnet@v4
with:
dotnet-version: 9.0.x
- name: Install dependencies
run: dotnet restore src/Backend.sln
- name: Build Api
run: dotnet build src/Backend.sln -c Release
- name: Execute Unit Tests - Core-Test
run: dotnet test src/Core-Test/Core-Test.csproj -v n
- name: Execute Unit Tests - DeviceService-Test
run: dotnet test src/DeviceService-Test/DeviceService-Test.csproj -v n
build_docker_artifacts:
name: Build Docker Artifacts
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Docker Compose
uses: docker/setup-compose-action@v1
- name: Build Docker Images
working-directory: "${{ github.workspace }}/src/"
env:
DOCKER_BUILDKIT: 1
DOCKER_REGISTRY: ${{ vars.ACR_URL }}/
run: |
docker compose -f docker-compose.yml build \
--build-arg ${DOCKER_FILE_ARGS:-""}
- name: Tag Docker Images
run: |
API_IMAGE=${{ vars.ACR_URL }}/backbuddy/api
DEVICE_ORCHESTRATOR_IMAGE=${{ vars.ACR_URL }}/backbuddy/deviceorchestrator
DEVICE_SERVICE_IMAGE=${{ vars.ACR_URL }}/backbuddy/deviceservice
USER_SERVICE_IMAGE=${{ vars.ACR_URL }}/backbuddy/userservice
NOTIFICATION_SERVICE_IMAGE=${{ vars.ACR_URL }}/backbuddy/notificationservice
VERSION=${{ vars.MAJOR_VERSION }}.${{ vars.MINOR_VERSION }}.${{ github.run_number }}
docker tag $API_IMAGE:latest $API_IMAGE:$VERSION
docker tag $DEVICE_ORCHESTRATOR_IMAGE:latest $DEVICE_ORCHESTRATOR_IMAGE:$VERSION
docker tag $DEVICE_SERVICE_IMAGE:latest $DEVICE_SERVICE_IMAGE:$VERSION
docker tag $USER_SERVICE_IMAGE:latest $USER_SERVICE_IMAGE:$VERSION
docker tag $NOTIFICATION_SERVICE_IMAGE:latest $NOTIFICATION_SERVICE_IMAGE:$VERSION
- name: Save Docker Images
run: |
API_IMAGE=${{ vars.ACR_URL }}/backbuddy/api
DEVICE_ORCHESTRATOR_IMAGE=${{ vars.ACR_URL }}/backbuddy/deviceorchestrator
DEVICE_SERVICE_IMAGE=${{ vars.ACR_URL }}/backbuddy/deviceservice
USER_SERVICE_IMAGE=${{ vars.ACR_URL }}/backbuddy/userservice
NOTIFICATION_SERVICE_IMAGE=${{ vars.ACR_URL }}/backbuddy/notificationservice
docker save -o backbuddy_api.tar $API_IMAGE
docker save -o backbuddy_deviceorchestrator.tar $DEVICE_ORCHESTRATOR_IMAGE
docker save -o backbuddy_deviceservice.tar $DEVICE_SERVICE_IMAGE
docker save -o backbuddy_userservice.tar $USER_SERVICE_IMAGE
docker save -o backbuddy_notificationservice.tar $NOTIFICATION_SERVICE_IMAGE
- name: Upload Api Docker Image
if: github.event_name != 'pull_request'
uses: actions/upload-artifact@v4
with:
name: backbuddy_api
path: backbuddy_api.tar
retention-days: 1
- name: Upload Device Orchestrator Docker Image
if: github.event_name != 'pull_request'
uses: actions/upload-artifact@v4
with:
name: backbuddy_deviceorchestrator
path: backbuddy_deviceorchestrator.tar
retention-days: 1
- name: Upload Device Service Docker Image
if: github.event_name != 'pull_request'
uses: actions/upload-artifact@v4
with:
name: backbuddy_deviceservice
path: backbuddy_deviceservice.tar
retention-days: 1
- name: Upload User Service Docker Image
if: github.event_name != 'pull_request'
uses: actions/upload-artifact@v4
with:
name: backbuddy_userservice
path: backbuddy_userservice.tar
retention-days: 1
- name: Upload Notification Service Docker Image
if: github.event_name != 'pull_request'
uses: actions/upload-artifact@v4
with:
name: backbuddy_notificationservice
path: backbuddy_notificationservice.tar
retention-days: 1
integration:
name: Integration Test
runs-on: ubuntu-latest
needs: [build, build_docker_artifacts]
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Download Api Docker Image
if: github.event_name != 'pull_request'
uses: actions/download-artifact@v4
with:
name: backbuddy_api
- name: Download Device Orchestrator Docker Image
if: github.event_name != 'pull_request'
uses: actions/download-artifact@v4
with:
name: backbuddy_deviceorchestrator
- name: Download Device Service Docker Image
if: github.event_name != 'pull_request'
uses: actions/download-artifact@v4
with:
name: backbuddy_deviceservice
- name: Download User Service Docker Image
if: github.event_name != 'pull_request'
uses: actions/download-artifact@v4
with:
name: backbuddy_userservice
- name: Download Notification Service Docker Image
if: github.event_name != 'pull_request'
uses: actions/download-artifact@v4
with:
name: backbuddy_notificationservice
- name: Load Docker Image
if: github.event_name != 'pull_request'
run: |
docker load -i backbuddy_api.tar
docker load -i backbuddy_deviceorchestrator.tar
docker load -i backbuddy_deviceservice.tar
docker load -i backbuddy_userservice.tar
docker load -i backbuddy_notificationservice.tar
- name: Run Services
uses: hoverkraft-tech/compose-action@v2.0.2
with:
cwd: "${{ github.workspace }}/src/"
compose-file: "docker-compose.test.yml"
env:
DOCKER_REGISTRY: ${{ vars.ACR_URL }}/
- name: Install .NET Core
uses: actions/setup-dotnet@v4
with:
dotnet-version: 9.0.x
- name: Install dependencies
run: dotnet restore src/Backend.sln
- name: Execute Integration Tests
run: dotnet test src/Integration-Test/Integration-Test.csproj -v n
deploy_docker_artifacts:
name: Deploy Docker Artifacts
runs-on: ubuntu-latest
needs: [build_docker_artifacts, integration]
if: github.event_name != 'pull_request'
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Docker Compose
uses: docker/setup-compose-action@v1
- name: Login to ACR
uses: docker/login-action@v3
with:
registry: ${{ vars.ACR_URL }}
username: ${{ secrets.ACR_USERNAME }}
password: ${{ secrets.ACR_PASSWORD }}
- name: Download Api Docker Image
uses: actions/download-artifact@v4
with:
name: backbuddy_api
- name: Download Device Orchestrator Docker Image
uses: actions/download-artifact@v4
with:
name: backbuddy_deviceorchestrator
- name: Download Device Service Docker Image
uses: actions/download-artifact@v4
with:
name: backbuddy_deviceservice
- name: Download User Service Docker Image
uses: actions/download-artifact@v4
with:
name: backbuddy_userservice
- name: Download Notification Service Docker Image
uses: actions/download-artifact@v4
with:
name: backbuddy_notificationservice
- name: Load Docker Image
run: |
docker load -i backbuddy_api.tar
docker load -i backbuddy_deviceorchestrator.tar
docker load -i backbuddy_deviceservice.tar
docker load -i backbuddy_userservice.tar
docker load -i backbuddy_notificationservice.tar
- name: Push latest Docker Images
working-directory: "${{ github.workspace }}/src/"
env:
DOCKER_BUILDKIT: 1
DOCKER_REGISTRY: ${{ vars.ACR_URL }}/
run: |
docker compose -f docker-compose.yml push
- name: Push Docker Images with Version
working-directory: "${{ github.workspace }}/src/"
env:
DOCKER_BUILDKIT: 1
DOCKER_REGISTRY: ${{ vars.ACR_URL }}/
TAG: ${{ vars.MAJOR_VERSION }}.${{ vars.MINOR_VERSION }}.${{ github.run_number }}
run: |
docker compose -f docker-compose.yml push
deploy_2container_app:
name: Deploy to Container App
runs-on: ubuntu-latest
needs: [deploy_docker_artifacts]
if: github.event_name != 'pull_request'
steps:
- name: Azure Login
uses: azure/login@v2
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Deploy Api Image to Container App
uses: azure/container-apps-deploy-action@v1
with:
imageToDeploy: ${{ vars.ACR_URL }}/backbuddy/api:${{ vars.MAJOR_VERSION }}.${{ vars.MINOR_VERSION }}.${{ github.run_number }}
resourceGroup: ${{ vars.RESOURCE_GROUP }}
containerAppName: ${{ vars.CONTAINER_APP_NAME }}
- name: Deploy Device Orchestrator Image to Container App
uses: azure/container-apps-deploy-action@v1
with:
imageToDeploy: ${{ vars.ACR_URL }}/backbuddy/deviceorchestrator:${{ vars.MAJOR_VERSION }}.${{ vars.MINOR_VERSION }}.${{ github.run_number }}
resourceGroup: ${{ vars.RESOURCE_GROUP }}
containerAppName: ${{ vars.CONTAINER_DEVICE_ORCHESTRATOR_APP_NAME }}
- name: Deploy Device Service Image to Container App
uses: azure/container-apps-deploy-action@v1
with:
imageToDeploy: ${{ vars.ACR_URL }}/backbuddy/deviceservice:${{ vars.MAJOR_VERSION }}.${{ vars.MINOR_VERSION }}.${{ github.run_number }}
resourceGroup: ${{ vars.RESOURCE_GROUP }}
containerAppName: ${{ vars.CONTAINER_DEVICE_SERVICE_APP_NAME }}
- name: Deploy User Service Image to Container App
uses: azure/container-apps-deploy-action@v1
with:
imageToDeploy: ${{ vars.ACR_URL }}/backbuddy/userservice:${{ vars.MAJOR_VERSION }}.${{ vars.MINOR_VERSION }}.${{ github.run_number }}
resourceGroup: ${{ vars.RESOURCE_GROUP }}
containerAppName: ${{ vars.CONTAINER_USER_SERVICE_APP_NAME }}
- name: Deploy Notification Service Image to Container App
uses: azure/container-apps-deploy-action@v1
with:
imageToDeploy: ${{ vars.ACR_URL }}/backbuddy/notificationservice:${{ vars.MAJOR_VERSION }}.${{ vars.MINOR_VERSION }}.${{ github.run_number }}
resourceGroup: ${{ vars.RESOURCE_GROUP }}
containerAppName: ${{ vars.CONTAINER_NOTIFICATION_SERVICE_APP_NAME }}