diff --git a/.github/workflows/release-workflow.yml b/.github/workflows/release-workflow.yml new file mode 100644 index 000000000..36532db40 --- /dev/null +++ b/.github/workflows/release-workflow.yml @@ -0,0 +1,175 @@ +name: Stable Workflow + +on: + push: + branches: ['release/**'] + pull_request: + branches: [ 'develop' ] + types: [ closed ] + workflow_dispatch: + +jobs: + debug: + runs-on: ubuntu-latest + steps: + - name: Debug Info + run: | + echo "Event Name: ${{ github.event_name }}" + echo "Ref: ${{ github.ref }}" + echo "Not Contains Release: ${{ !contains(github.head_ref, 'release') }}" + echo "Matches Develop: ${{ github.ref == 'refs/heads/develop' }}" + if_merged: + if: github.event.pull_request.merged == true && contains(github.head_ref, 'release') + runs-on: ubuntu-latest + steps: + - run: | + echo The PR was merged + build: + name: Upload Kavita.Common for Version Bump + runs-on: ubuntu-latest + if: github.event.pull_request.merged == true && contains(github.head_ref, 'release') + steps: + - name: Checkout Repo + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - uses: actions/upload-artifact@v4 + with: + name: csproj + path: Kavita.Common/Kavita.Common.csproj + + stable: + name: Build Stable and Nightly Docker if Release + needs: [ build ] + if: github.event.pull_request.merged == true && contains(github.head_ref, 'release') + runs-on: ubuntu-latest + permissions: + packages: write + contents: read + steps: + - name: Find Current Pull Request + uses: jwalton/gh-find-current-pr@v1 + id: findPr + with: + state: all + github-token: ${{ secrets.GITHUB_TOKEN }} + + - name: Parse PR body + id: parse-body + run: | + body="Read full changelog: https://github.com/Kareadita/Kavita/releases/latest" + + echo $body + echo "BODY=$body" >> $GITHUB_OUTPUT + + - name: Check Out Repo + uses: actions/checkout@v4 + with: + ref: develop + + - name: NodeJS to Compile WebUI + uses: actions/setup-node@v4 + with: + node-version: 20 + - 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: kzrnm/get-net-sdk-project-versions-action@v2 + 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 "VERSION=$newVersion" >> $GITHUB_OUTPUT + id: parse-version + + - name: Compile dotnet app + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 8.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@v3 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v3 + + - name: Build and push stable + id: docker_build_stable + uses: docker/build-push-action@v5 + with: + context: . + platforms: linux/amd64,linux/arm/v7,linux/arm64 + push: true + tags: jvmilazz0/kavita:latest, jvmilazz0/kavita:${{ steps.parse-version.outputs.VERSION }}, ghcr.io/kareadita/kavita:latest, ghcr.io/kareadita/kavita:${{ steps.parse-version.outputs.VERSION }} + + - name: Build and push nightly + id: docker_build_nightly + uses: docker/build-push-action@v5 + with: + context: . + platforms: linux/amd64,linux/arm/v7,linux/arm64 + push: true + tags: jvmilazz0/kavita:nightly, jvmilazz0/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_stable.outputs.digest }} + + - name: Image digest + run: echo ${{ steps.docker_build_nightly.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.findPr.outputs.body }}' + text: <@&939225192553644133> A new stable build has been released. + webhookUrl: ${{ secrets.DISCORD_DOCKER_UPDATE_URL }} + + - 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.findPr.outputs.body }}' + text: <@&939225459156217917> <@&939225350775406643> A new nightly build has been released for docker. + webhookUrl: ${{ secrets.DISCORD_DOCKER_UPDATE_URL }} diff --git a/Kavita.Common/Kavita.Common.csproj b/Kavita.Common/Kavita.Common.csproj index 315af5ab3..7e72f1a52 100644 --- a/Kavita.Common/Kavita.Common.csproj +++ b/Kavita.Common/Kavita.Common.csproj @@ -3,7 +3,7 @@ net8.0 kavitareader.com Kavita - 0.8.1.20 + 0.8.2.0 en true @@ -20,4 +20,4 @@ - \ No newline at end of file +