Converted change-email.component.html #86
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: .NET Build Test and Sonar Scan | |
on: | |
push: | |
branches: '**' | |
pull_request: | |
branches: [ main, develop, canary ] | |
types: [synchronize] | |
jobs: | |
build: | |
name: Build .Net | |
runs-on: windows-latest | |
steps: | |
- name: Checkout Repo | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Setup .NET Core | |
uses: actions/setup-dotnet@v3 | |
with: | |
dotnet-version: 7.0.x | |
- name: Install Swashbuckle CLI | |
shell: powershell | |
run: dotnet tool install -g --version 6.5.0 Swashbuckle.AspNetCore.Cli | |
- name: Install dependencies | |
run: dotnet restore | |
- name: Set up JDK 11 | |
uses: actions/setup-java@v1 | |
with: | |
java-version: 1.11 | |
- uses: actions/upload-artifact@v2 | |
with: | |
name: csproj | |
path: Kavita.Common/Kavita.Common.csproj | |
- name: Cache SonarCloud packages | |
uses: actions/cache@v1 | |
with: | |
path: ~\sonar\cache | |
key: ${{ runner.os }}-sonar | |
restore-keys: ${{ runner.os }}-sonar | |
- name: Cache SonarCloud scanner | |
id: cache-sonar-scanner | |
uses: actions/cache@v1 | |
with: | |
path: .\.sonar\scanner | |
key: ${{ runner.os }}-sonar-scanner | |
restore-keys: ${{ runner.os }}-sonar-scanner | |
- name: Install SonarCloud scanner | |
if: steps.cache-sonar-scanner.outputs.cache-hit != 'true' | |
shell: powershell | |
run: | | |
New-Item -Path .\.sonar\scanner -ItemType Directory | |
dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner | |
- name: Sonar Scan | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any | |
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} | |
shell: powershell | |
run: | | |
.\.sonar\scanner\dotnet-sonarscanner begin /k:"Kareadita_Kavita" /o:"kareadita" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" | |
dotnet build --configuration Release | |
.\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}" | |
- name: Test | |
run: dotnet test --no-restore --verbosity normal | |
version: | |
name: Bump version on Develop/Canary push | |
needs: [ build ] | |
runs-on: ubuntu-latest | |
if: ${{ github.event_name == 'push' && (github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/canary') }} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Setup .NET Core | |
uses: actions/setup-dotnet@v3 | |
with: | |
dotnet-version: 7.0.x | |
- name: Bump versions | |
uses: SiqiLu/[email protected] | |
with: | |
version_files: Kavita.Common/Kavita.Common.csproj | |
github_token: ${{ secrets.REPO_GHA_PAT }} | |
version_mask: "0.0.0.1" | |
develop: | |
name: Build Nightly Docker if Develop push | |
needs: [ build, version ] | |
runs-on: ubuntu-latest | |
permissions: | |
packages: write | |
contents: read | |
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/develop' }} | |
steps: | |
- name: Find Current Pull Request | |
uses: jwalton/[email protected] | |
id: findPr | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Parse PR body | |
id: parse-body | |
run: | | |
body="${{ steps.findPr.outputs.body }}" | |
if [[ ${#body} -gt 1870 ]] ; then | |
body=${body:0:1870} | |
body="${body}...and much more. | |
Read full changelog: https://github.com/Kareadita/Kavita/pull/${{ steps.findPr.outputs.pr }}" | |
fi | |
body=${body//\'/} | |
body=${body//'%'/'%25'} | |
body=${body//$'\n'/'%0A'} | |
body=${body//$'\r'/'%0D'} | |
body=${body//$'`'/'%60'} | |
body=${body//$'>'/'%3E'} | |
echo $body | |
echo "::set-output name=BODY::$body" | |
- name: Check Out Repo | |
uses: actions/checkout@v3 | |
with: | |
ref: develop | |
- name: NodeJS to Compile WebUI | |
uses: actions/[email protected] | |
with: | |
node-version: '16' | |
- run: | | |
cd UI/Web || exit | |
echo 'Installing web dependencies' | |
npm install --legacy-peer-deps | |
echo 'Building UI' | |
npm run prod | |
echo 'Copying back to Kavita wwwroot' | |
rsync -a dist/ ../../API/wwwroot/ | |
cd ../ || exit | |
- name: Get csproj Version | |
uses: naminodarie/get-net-sdk-project-versions-action@v1 | |
id: get-version | |
with: | |
proj-path: Kavita.Common/Kavita.Common.csproj | |
- name: Parse Version | |
run: | | |
version='${{steps.get-version.outputs.assembly-version}}' | |
echo "::set-output name=VERSION::$version" | |
id: parse-version | |
- name: Echo csproj version | |
run: echo "${{steps.get-version.outputs.assembly-version}}" | |
- name: Compile dotnet app | |
uses: actions/setup-dotnet@v3 | |
with: | |
dotnet-version: 7.0.x | |
- name: Install Swashbuckle CLI | |
run: dotnet tool install -g --version 6.5.0 Swashbuckle.AspNetCore.Cli | |
- run: ./monorepo-build.sh | |
- name: Login to Docker Hub | |
uses: docker/login-action@v2 | |
with: | |
username: ${{ secrets.DOCKER_HUB_USERNAME }} | |
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} | |
- name: Login to GitHub Container Registry | |
uses: docker/login-action@v2 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v1 | |
- name: Set up Docker Buildx | |
id: buildx | |
uses: docker/setup-buildx-action@v1 | |
- name: Build and push | |
id: docker_build | |
uses: docker/build-push-action@v2 | |
with: | |
context: . | |
platforms: linux/amd64,linux/arm/v7,linux/arm64 | |
push: true | |
tags: kizaing/kavita:nightly, kizaing/kavita:nightly-${{ steps.parse-version.outputs.VERSION }}, ghcr.io/kareadita/kavita:nightly, ghcr.io/kareadita/kavita:nightly-${{ steps.parse-version.outputs.VERSION }} | |
- name: Image digest | |
run: echo ${{ steps.docker_build.outputs.digest }} | |
- name: Notify Discord | |
uses: rjstone/discord-webhook-notify@v1 | |
with: | |
severity: info | |
description: v${{steps.get-version.outputs.assembly-version}} - ${{ steps.findPr.outputs.title }} | |
details: '${{ steps.parse-body.outputs.BODY }}' | |
text: <@&939225459156217917> <@&939225350775406643> A new nightly build has been released for docker. | |
webhookUrl: ${{ secrets.DISCORD_DOCKER_UPDATE_URL }} | |
stable: | |
name: Build Stable Docker if Main push | |
needs: [ build ] | |
runs-on: ubuntu-latest | |
permissions: | |
packages: write | |
contents: read | |
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} | |
steps: | |
- name: Find Current Pull Request | |
uses: jwalton/[email protected] | |
id: findPr | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Parse PR body | |
id: parse-body | |
run: | | |
body="${{ steps.findPr.outputs.body }}" | |
if [[ ${#body} -gt 1870 ]] ; then | |
body=${body:0:1870} | |
body="${body}...and much more. | |
Read full changelog: https://github.com/Kareadita/Kavita/releases/latest" | |
fi | |
body=${body//\'/} | |
body=${body//'%'/'%25'} | |
body=${body//$'\n'/'%0A'} | |
body=${body//$'\r'/'%0D'} | |
body=${body//$'`'/'%60'} | |
body=${body//$'>'/'%3E'} | |
echo $body | |
echo "::set-output name=BODY::$body" | |
- name: Check Out Repo | |
uses: actions/checkout@v3 | |
with: | |
ref: main | |
- name: NodeJS to Compile WebUI | |
uses: actions/[email protected] | |
with: | |
node-version: '16' | |
- run: | | |
cd UI/Web || exit | |
echo 'Installing web dependencies' | |
npm ci | |
echo 'Building UI' | |
npm run prod | |
echo 'Copying back to Kavita wwwroot' | |
rsync -a dist/ ../../API/wwwroot/ | |
cd ../ || exit | |
- name: Get csproj Version | |
uses: naminodarie/get-net-sdk-project-versions-action@v1 | |
id: get-version | |
with: | |
proj-path: Kavita.Common/Kavita.Common.csproj | |
- name: Echo csproj version | |
run: echo "${{steps.get-version.outputs.assembly-version}}" | |
- name: Parse Version | |
run: | | |
version='${{steps.get-version.outputs.assembly-version}}' | |
newVersion=${version%.*} | |
echo $newVersion | |
echo "::set-output name=VERSION::$newVersion" | |
id: parse-version | |
- name: Compile dotnet app | |
uses: actions/setup-dotnet@v3 | |
with: | |
dotnet-version: 7.0.x | |
- name: Install Swashbuckle CLI | |
run: dotnet tool install -g --version 6.5.0 Swashbuckle.AspNetCore.Cli | |
- run: ./monorepo-build.sh | |
- name: Login to Docker Hub | |
uses: docker/login-action@v2 | |
with: | |
username: ${{ secrets.DOCKER_HUB_USERNAME }} | |
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} | |
- name: Login to GitHub Container Registry | |
uses: docker/login-action@v2 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v1 | |
- name: Set up Docker Buildx | |
id: buildx | |
uses: docker/setup-buildx-action@v1 | |
- name: Build and push | |
id: docker_build | |
uses: docker/build-push-action@v2 | |
with: | |
context: . | |
platforms: linux/amd64,linux/arm/v7,linux/arm64 | |
push: true | |
tags: kizaing/kavita:latest, kizaing/kavita:${{ steps.parse-version.outputs.VERSION }}, ghcr.io/kareadita/kavita:latest, ghcr.io/kareadita/kavita:${{ steps.parse-version.outputs.VERSION }} | |
- name: Image digest | |
run: echo ${{ steps.docker_build.outputs.digest }} | |
- name: Notify Discord | |
uses: rjstone/discord-webhook-notify@v1 | |
with: | |
severity: info | |
description: v${{steps.get-version.outputs.assembly-version}} - ${{ steps.findPr.outputs.title }} | |
details: '${{ steps.parse-body.outputs.BODY }}' | |
text: <@&939225192553644133> A new stable build has been released. | |
webhookUrl: ${{ secrets.DISCORD_DOCKER_UPDATE_URL }} | |
canary: | |
name: Build Canary Docker if Canary push | |
needs: [ build, version ] | |
runs-on: ubuntu-latest | |
permissions: | |
packages: write | |
contents: read | |
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/canary' }} | |
steps: | |
- name: Find Current Pull Request | |
uses: jwalton/[email protected] | |
id: findPr | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Check Out Repo | |
uses: actions/checkout@v3 | |
with: | |
ref: canary | |
- name: NodeJS to Compile WebUI | |
uses: actions/[email protected] | |
with: | |
node-version: '16' | |
- run: | | |
cd UI/Web || exit | |
echo 'Installing web dependencies' | |
npm install --legacy-peer-deps | |
echo 'Building UI' | |
npm run prod | |
echo 'Copying back to Kavita wwwroot' | |
rsync -a dist/ ../../API/wwwroot/ | |
cd ../ || exit | |
- name: Get csproj Version | |
uses: naminodarie/get-net-sdk-project-versions-action@v1 | |
id: get-version | |
with: | |
proj-path: Kavita.Common/Kavita.Common.csproj | |
- name: Parse Version | |
run: | | |
version='${{steps.get-version.outputs.assembly-version}}' | |
echo "::set-output name=VERSION::$version" | |
id: parse-version | |
- name: Echo csproj version | |
run: echo "${{steps.get-version.outputs.assembly-version}}" | |
- name: Compile dotnet app | |
uses: actions/setup-dotnet@v3 | |
with: | |
dotnet-version: 7.0.x | |
- name: Install Swashbuckle CLI | |
run: dotnet tool install -g --version 6.5.0 Swashbuckle.AspNetCore.Cli | |
- run: ./monorepo-build.sh | |
- name: Login to Docker Hub | |
uses: docker/login-action@v2 | |
with: | |
username: ${{ secrets.DOCKER_HUB_USERNAME }} | |
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} | |
- name: Login to GitHub Container Registry | |
uses: docker/login-action@v2 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v1 | |
- name: Set up Docker Buildx | |
id: buildx | |
uses: docker/setup-buildx-action@v1 | |
- name: Build and push | |
id: docker_build | |
uses: docker/build-push-action@v2 | |
with: | |
context: . | |
platforms: linux/amd64,linux/arm/v7,linux/arm64 | |
push: true | |
tags: kizaing/kavita:canary, kizaing/kavita:canary-${{ steps.parse-version.outputs.VERSION }}, ghcr.io/kareadita/kavita:canary, ghcr.io/kareadita/kavita:canary-${{ steps.parse-version.outputs.VERSION }} | |
- name: Image digest | |
run: echo ${{ steps.docker_build.outputs.digest }} |