name: ci on: [push] jobs: build: runs-on: ubuntu-latest name: Build & Unit Test strategy: fail-fast: false matrix: dotnet-version: [ '8.0.x' ] steps: - uses: actions/checkout@v4 - name: Setup .NET Core SDK ${{ matrix.dotnet-version }} uses: actions/setup-dotnet@v3.0.3 with: dotnet-version: ${{ matrix.dotnet-version }} - name: Install Dependencies run: dotnet restore Selector.Core.sln - name: Build run: dotnet build --configuration Debug --no-restore Selector.Core.sln - name: Test run: dotnet test --no-restore --verbosity normal Selector.Core.sln build-MAUI: runs-on: windows-latest name: Build MAUI needs: [build] # for ignoring bad builds strategy: fail-fast: false matrix: dotnet-version: [ '8.0.x' ] steps: - uses: actions/checkout@v4 - name: Setup .NET Core SDK ${{ matrix.dotnet-version }} uses: actions/setup-dotnet@v3.0.3 with: dotnet-version: ${{ matrix.dotnet-version }} - name: Build run: dotnet build --configuration Debug Selector.MAUI\Selector.MAUI.csproj build-Docker: runs-on: ubuntu-latest name: Build Containers needs: [build, build-Js] # for ignoring bad builds if: github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/')) steps: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Login to DockerHub uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build CLI Container uses: docker/build-push-action@v6 with: push: true tags: | sarsoo/selector-cli:latest sarsoo/selector-cli:${{ github.ref_name }} file: Dockerfile.CLI - name: Build Web Container uses: docker/build-push-action@v6 with: push: true tags: | sarsoo/selector-web:latest sarsoo/selector-web:${{ github.ref_name }} file: Dockerfile.Web deploy: runs-on: ubuntu-latest name: Deploy needs: [build-Docker] # for ignoring bad builds if: github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/')) environment: name: prod url: https://selector.sarsoo.xyz steps: - uses: actions/checkout@v4 - name: Tailscale uses: tailscale/github-action@v2 with: oauth-client-id: ${{ secrets.TS_OAUTH_CLIENT_ID }} oauth-secret: ${{ secrets.TS_OAUTH_SECRET }} tags: tag:ci version: 1.68.1 - name: Deploy run: ssh -o StrictHostKeyChecking=no ${{ secrets.TS_SSH }} -t "cd selector/ && docker compose up -d --pull always" build-Js: runs-on: ubuntu-latest name: Build Frontend strategy: fail-fast: false matrix: node: [22] steps: - uses: actions/checkout@v4 - name: Install Node ${{ matrix.node }} uses: actions/setup-node@v2 with: node-version: ${{ matrix.node }} - name: Install Node Packages working-directory: ./Selector.Web run: npm ci - name: Compile Front-end working-directory: ./Selector.Web run: npm run build --if-present