name: "Push to 'master' branch" on: push: branches: - "master" jobs: build: name: Build and test runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup .NET uses: actions/setup-dotnet@v4 with: dotnet-version: 8.0.x - name: Restore dependencies run: dotnet restore - name: Build run: dotnet build --no-restore - name: Test run: dotnet test --no-build --verbosity normal publish: name: Publish runs-on: ubuntu-latest needs: build strategy: matrix: app: - WatchIt.WebAPI - WatchIt.Website steps: - name: Checkout uses: actions/checkout@v4 - name: App Settings Variable Substitution uses: microsoft/variable-substitution@v1 with: files: ${{ github.workspace }}/${{ matrix.app }}/${{ matrix.app }}/appsettings.json env: ConnectionStrings.Default: ${{ secrets.CONNECTION_STRING }} RootUser.Email: ${{ secrets.ROOT_EMAIL }} RootUser.Password: ${{ secrets.ROOT_PASSWORD }} Authentication.Key: ${{ secrets.KEY }} - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to GitHub Container Registry uses: docker/login-action@v1 with: registry: ghcr.io username: ${{github.actor}} password: ${{secrets.GITHUB_TOKEN}} - name: Extract Docker metadata id: meta uses: docker/metadata-action@v5 with: images: ghcr.io/${{ matrix.app }} - name: Build and push Docker image uses: docker/build-push-action@v5 with: file: ${{ github.workspace }}/${{ matrix.app }}/${{ matrix.app }}/Dockerfile tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} push: true