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" ## Don't need yet # - 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() }} # versioning: # runs-on: ubuntu-latest # steps: # - uses: actions/checkout@v2 # # This is only to get the next version number so we can set the version before compile # - name: Conventional Changelog Action # id: changelog # uses: TriPSs/conventional-changelog-action@v3 # with: # github-token: ${{ secrets.github_token }} # skip-version-file: 'true' # skip-commit: 'true' # version-file: 'version.json' # output-file: 'false' # skip-on-empty: 'false' # - name: Output version # run: | # echo "outputs: ${{ steps.changelog.outputs.tag }}" # echo "Version: ${{ steps.changelog.outputs.version }}" # echo "log: ${{ steps.changelog.outputs.clean_changelog }}" 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 # This is only to get the next version number so we can set the version before compile - name: Conventional Changelog Action id: pre-build-changelog uses: TriPSs/conventional-changelog-action@v3 with: github-token: ${{ secrets.github_token }} skip-version-file: 'true' skip-commit: 'true' version-file: 'version.json' output-file: 'false' skip-on-empty: 'false' - name: Output version run: | echo "outputs: ${{ steps.pre-build-changelog.outputs }}" echo "Version: ${{ steps.pre-build-changelog.outputs.version }}" echo "Version: ${{ steps.pre-build-changelog.outputs.tag }}" - name: Set Backend Version run: | dotnet tool install -g dotnet-setversion setversion -r ${{ steps.pre-build-changelog.outputs.version }} working-directory: src/Ombi - 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: | cd ${{ matrix.os }} sudo mkdir -p ClientApp/dist echo "mkdir /ClientApp" echo "list os (ClientApp should be here)" ls cd .. echo "Copy dist to /ClientApp" sudo mv ~/src/Ombi/dist/* ${{ matrix.os }}/ClientApp/dist working-directory: src/Ombi - name: Archive Release uses: thedoctor0/zip-release@master with: type: '${{ matrix.compression }}' filename: '../${{ matrix.os }}.${{ matrix.format }}' path: '.' directory: 'src/Ombi/${{ matrix.os }}' - name: Publish Release uses: actions/upload-artifact@v2 with: name: ${{ matrix.os }} path: | ./src/Ombi/${{ matrix.os }}.${{ matrix.format }} release: needs: [ publish, unit-test ] runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Conventional Changelog Action uses: TriPSs/conventional-changelog-action@v3 with: github-token: ${{ secrets.github_token }} git-message: 'chore(release): {version}' version-file: 'version.json' output-file: 'CHANGELOG.md' - name: Download Artifacts uses: actions/download-artifact@v2 with: path: artifacts