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 with: fetch-depth: 0 - name: Setup GitVersion uses: gittools/actions/gitversion/setup@v0.9.7 with: versionSpec: 5.x - name: Determine Version uses: gittools/actions/gitversion/execute@v0.9.7 id: gitversion with: useConfigFile: true configFilePath: .github/config/gitversion.yml - name: App Settings Variable Substitution uses: microsoft/variable-substitution@v1 if: ${{ matrix.app == 'WatchIt.WebAPI' }} 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: Convert name to lowercase id: name uses: ASzc/change-string-case-action@v1 with: string: ${{ matrix.app }} - name: Build image run: docker build ${{ github.workspace }} -t ghcr.io/${{github.actor}}/${{ steps.name.outputs.lowercase }}:latest -t ghcr.io/${{github.actor}}/${{ steps.name.outputs.lowercase }}:{{steps.gitversion.outputs.SemVer}} -f ${{ github.workspace }}/${{ matrix.app }}/${{ matrix.app }}/Dockerfile - name: Publish image run: docker push ghcr.io/${{github.actor}}/${{ steps.name.outputs.lowercase }} --all-tags - name: Create Release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{needs.build.outputs.version}} release_name: ${{needs.build.outputs.version}} draft: false prerelease: false