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: Run Unit Tests run: | cd src/Ombi dotnet test --logger trx --results-directory "TestResults" - name: Upload dotnet test results uses: actions/upload-artifact@v2 with: name: dotnet-results-* path: 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: | cd src/Ombi dotnet publish -c Release -r ${{ matrix.os }} -o "${{ matrix.os }}" --self-contained true -p:PublishSingleFile=true - name: Download Angular uses: actions/download-artifact@v2 with: name: angular_dist - name: Copy Dist to Artifacts run: | ls cp -a /dist/. /src/Ombi/${{ matrix.os }}/ClientApp/dist/ - name: Archive Release uses: thedoctor0/zip-release@master with: type: '${{ matrix.compression }}' filename: '${{ matrix.os }}.${{ matrix.compression }}' directory: '${{ matrix.os }}' # - name: Publish UI Artifacts # uses: actions/upload-artifact@v2 # with: # name: dist # path: | # ${{ matrix.os }} #https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#using-environment-variables-in-a-matrix