name: CI Build on: push: # branches: [ develop, feature/** ] branches: [ releaseNotes ] pull_request: branches: [ develop ] jobs: build-ui: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: node-version: '14' - name: NodeModules Cache uses: actions/cache@v2 with: path: '**/node_modules' key: node_modules-${{ hashFiles('**/yarn.lock') }} - name: UI Install run: yarn --cwd ./src/Ombi/ClientApp install - name: Build UI run: yarn --cwd ./src/Ombi/ClientApp run build - name: Publish UI Artifacts uses: actions/upload-artifact@v2 with: name: angular_dist path: | ./src/Ombi/ClientApp/dist unit-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-dotnet@v1 with: dotnet-version: '5.0.x' - name: Nuget Cache uses: actions/cache@v2 with: path: ~/.nuget/packages key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} restore-keys: | ${{ runner.os }}-nuget - name: Run Unit Tests run: | cd src dotnet test --logger trx --results-directory "TestResults" - name: Upload dotnet test results uses: actions/upload-artifact@v2 with: name: dotnet-results path: src/TestResults # Use always() to always run this step to publish test results when there are test failures if: ${{ always() }} publish: runs-on: ubuntu-latest needs: [build-ui] strategy: matrix: include: - os: win10-x64 format: zip compression: zip - os: win10-x86 format: zip compression: zip - os: linux-x64 format: tar.gz compression: tar - os: linux-arm format: tar.gz compression: tar - os: linux-arm64 compression: tar format: tar.gz - os: osx-x64 compression: tar format: tar.gz steps: - uses: actions/checkout@v2 - name: Nuget Cache uses: actions/cache@v2 with: path: ~/.nuget/packages key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} restore-keys: | ${{ runner.os }}-nuget - name: Publish Backend ${{ matrix.os }} run: dotnet publish -c Release -r ${{ matrix.os }} -o "${{ matrix.os }}" --self-contained true -p:PublishSingleFile=true working-directory: src/Ombi - name: Download Angular uses: actions/download-artifact@v2 with: name: angular_dist path: ~/src/Ombi/dist - name: Copy Dist to Artifacts run: | ls cd ${{ matrix.os }} sudo mkdir -p /ClientApp cd .. ls sudo mv ~/src/Ombi/dist/ ${{ matrix.os }}/ClientApp/ working-directory: src/Ombi - name: Archive Release uses: thedoctor0/zip-release@master with: type: '${{ matrix.compression }}' filename: '${{ matrix.os }}.${{ matrix.format }}' path: '${{ matrix.os }}' directory: 'src/Ombi/' - name: Publish Release uses: actions/upload-artifact@v2 with: name: ${{ matrix.os }} path: | ./src/Ombi/${{ matrix.os }}.${{ matrix.format }}