ci: tidy up workflows and implement a consistent style (#1905)
* feat(ci): tidy up workflows and implement a consistent style all workflows now use ubuntu-24.04 as the runner type to match the release workflows codeql.yml - bump actions to v3 - add least-privilege perms + concurrency to stop duplicate runs - ignore docs only changes conflict_labeler.yml - run on opened, reopened, and synchronize - bump action version - add concurrency group to avoid duplicate labeling cypress.yml - skip docs-only changes; don’t run on draft PRs - add concurrency to stop duplicate runs + 10m timeout docs-deploy.yml - add configure-pages@v5 and bump upload-pages-artifact to v4 - set explicit pages/id-token perms + concurrency - minor cleanups (working-directory, ubuntu-24.04) helm.yml - switch oras discover to oras manifest fetch - add concurrency to stop duplicate runs lint-helm-charts.yml - bump action versions - enforce version bumps (--check-version-increment=true) - add least-privilege perms + concurrency to stop duplicate runs support.yml - add least-privilege perms test-docs-deploy.yml - add least-privilege perms + concurrency to stop duplicate runs * fixed line 5 syntax error * Updated based on comments from @M0NsTeRRR in PR-1905 discussion * updated based on 2nd review from @M0NsTeRRR in PR-1905 * Merge of PR-1904 and PR-1905 * chore(pnpm-lock.yaml): updated the pnpm-lockfile * ci(release.yml): fix the latest tag to use context labels * ci: fix new lines at eof, removed cypress timeout, removed legacy qemu actions * @M0NsTeRRR self review Signed-off-by: Ludovic Ortega <ludovic.ortega@adminafk.fr> * fix: support workflow Signed-off-by: Ludovic Ortega <ludovic.ortega@adminafk.fr> * fix: newline --------- Signed-off-by: Ludovic Ortega <ludovic.ortega@adminafk.fr> Co-authored-by: Ludovic Ortega <ludovic.ortega@adminafk.fr> Co-authored-by: Ludovic Ortega <github@mail.adminafk.fr>
This commit is contained in:
159
.github/workflows/ci.yml
vendored
159
.github/workflows/ci.yml
vendored
@@ -7,6 +7,14 @@ on:
|
|||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- develop
|
- develop
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ci-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
test:
|
test:
|
||||||
@@ -17,14 +25,24 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
|
- name: Get PNPM version from package.json
|
||||||
|
id: pnpm-version
|
||||||
|
shell: sh
|
||||||
|
run: echo "pnpm_version=$(node -p 'require(`./package.json`).packageManager.split(\"@\")[1]')" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Pnpm Setup
|
- name: Pnpm Setup
|
||||||
uses: pnpm/action-setup@v4
|
uses: pnpm/action-setup@v4
|
||||||
with:
|
with:
|
||||||
version: 9
|
version: ${{ steps.pnpm-version.outputs.pnpm_version }}
|
||||||
|
|
||||||
- name: Get pnpm store directory
|
- name: Get pnpm store directory
|
||||||
shell: sh
|
shell: sh
|
||||||
run: |
|
run: |
|
||||||
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
|
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Setup pnpm cache
|
- name: Setup pnpm cache
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
@@ -32,137 +50,144 @@ jobs:
|
|||||||
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
||||||
restore-keys: |
|
restore-keys: |
|
||||||
${{ runner.os }}-pnpm-store-
|
${{ runner.os }}-pnpm-store-
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
env:
|
env:
|
||||||
HUSKY: 0
|
HUSKY: 0
|
||||||
run: pnpm install
|
run: pnpm install
|
||||||
|
|
||||||
- name: Lint
|
- name: Lint
|
||||||
run: pnpm lint
|
run: pnpm lint
|
||||||
|
|
||||||
- name: Formatting
|
- name: Formatting
|
||||||
run: pnpm format:check
|
run: pnpm format:check
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: pnpm build
|
run: pnpm build
|
||||||
|
|
||||||
build:
|
build:
|
||||||
name: Build & Publish Docker Images
|
name: Build (per-arch, native runners)
|
||||||
if: github.ref == 'refs/heads/develop' && !contains(github.event.head_commit.message, '[skip ci]')
|
if: github.ref == 'refs/heads/develop' && !contains(github.event.head_commit.message, '[skip ci]')
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- runner: ubuntu-24.04
|
- runner: ubuntu-24.04
|
||||||
platform: linux/amd64
|
platform: linux/amd64
|
||||||
|
arch: amd64
|
||||||
- runner: ubuntu-24.04-arm
|
- runner: ubuntu-24.04-arm
|
||||||
platform: linux/arm64
|
platform: linux/arm64
|
||||||
|
arch: arm64
|
||||||
runs-on: ${{ matrix.runner }}
|
runs-on: ${{ matrix.runner }}
|
||||||
outputs:
|
|
||||||
digest-amd64: ${{ steps.set_outputs.outputs.digest-amd64 }}
|
|
||||||
digest-arm64: ${{ steps.set_outputs.outputs.digest-arm64 }}
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
|
- name: Commit timestamp
|
||||||
|
id: ts
|
||||||
|
run: echo "TIMESTAMP=$(git log -1 --pretty=%ct)" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@v3
|
||||||
- name: Log in to Docker Hub
|
|
||||||
uses: docker/login-action@v3
|
- name: Warm cache (no push) — ${{ matrix.platform }}
|
||||||
with:
|
uses: docker/build-push-action@v6
|
||||||
username: ${{ secrets.DOCKER_USERNAME }}
|
|
||||||
password: ${{ secrets.DOCKER_TOKEN }}
|
|
||||||
- name: Log in to GitHub Container Registry
|
|
||||||
uses: docker/login-action@v3
|
|
||||||
with:
|
|
||||||
registry: ghcr.io
|
|
||||||
username: ${{ github.repository_owner }}
|
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
- name: Set lower case owner name
|
|
||||||
run: |
|
|
||||||
echo "OWNER_LC=${OWNER,,}" >>${GITHUB_ENV}
|
|
||||||
env:
|
|
||||||
OWNER: ${{ github.repository_owner }}
|
|
||||||
- name: Docker metadata
|
|
||||||
id: meta
|
|
||||||
uses: docker/metadata-action@v4
|
|
||||||
with:
|
|
||||||
images: |
|
|
||||||
fallenbagel/jellyseerr
|
|
||||||
ghcr.io/${{ env.OWNER_LC }}/jellyseerr
|
|
||||||
tags: |
|
|
||||||
type=ref,event=branch
|
|
||||||
type=sha,prefix=,suffix=,format=short
|
|
||||||
- name: Build and push by digest
|
|
||||||
id: build
|
|
||||||
uses: docker/build-push-action@v5
|
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: ./Dockerfile
|
file: ./Dockerfile
|
||||||
platforms: ${{ matrix.platform }}
|
platforms: ${{ matrix.platform }}
|
||||||
push: true
|
push: false
|
||||||
build-args: |
|
build-args: |
|
||||||
COMMIT_TAG=${{ github.sha }}
|
COMMIT_TAG=${{ github.sha }}
|
||||||
BUILD_VERSION=develop
|
BUILD_VERSION=develop
|
||||||
BUILD_DATE=${{ github.event.repository.updated_at }}
|
SOURCE_DATE_EPOCH=${{ steps.ts.outputs.TIMESTAMP }}
|
||||||
outputs: |
|
|
||||||
type=image,push-by-digest=true,name=fallenbagel/jellyseerr,push=true
|
|
||||||
type=image,push-by-digest=true,name=ghcr.io/${{ env.OWNER_LC }}/jellyseerr,push=true
|
|
||||||
cache-from: type=gha,scope=${{ matrix.platform }}
|
cache-from: type=gha,scope=${{ matrix.platform }}
|
||||||
cache-to: type=gha,mode=max,scope=${{ matrix.platform }}
|
cache-to: type=gha,mode=max,scope=${{ matrix.platform }}
|
||||||
provenance: false
|
provenance: false
|
||||||
- name: Set outputs
|
|
||||||
id: set_outputs
|
|
||||||
run: |
|
|
||||||
platform="${{ matrix.platform == 'linux/amd64' && 'amd64' || 'arm64' }}"
|
|
||||||
echo "digest-${platform}=${{ steps.build.outputs.digest }}" >> $GITHUB_OUTPUT
|
|
||||||
|
|
||||||
merge_and_push:
|
publish:
|
||||||
name: Create and Push Multi-arch Manifest
|
name: Publish multi-arch image
|
||||||
needs: build
|
needs: build
|
||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-24.04
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
packages: write
|
||||||
|
id-token: write
|
||||||
steps:
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
|
- name: Commit timestamp
|
||||||
|
id: ts
|
||||||
|
run: echo "TIMESTAMP=$(git log -1 --pretty=%ct)" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
- name: Log in to Docker Hub
|
- name: Log in to Docker Hub
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKER_USERNAME }}
|
username: ${{ secrets.DOCKER_USERNAME }}
|
||||||
password: ${{ secrets.DOCKER_TOKEN }}
|
password: ${{ secrets.DOCKER_TOKEN }}
|
||||||
|
|
||||||
- name: Log in to GitHub Container Registry
|
- name: Log in to GitHub Container Registry
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
registry: ghcr.io
|
registry: ghcr.io
|
||||||
username: ${{ github.repository_owner }}
|
username: ${{ github.repository_owner }}
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
- name: Set lower case owner name
|
|
||||||
run: |
|
|
||||||
echo "OWNER_LC=${OWNER,,}" >>${GITHUB_ENV}
|
|
||||||
env:
|
|
||||||
OWNER: ${{ github.repository_owner }}
|
|
||||||
- name: Create and push manifest
|
|
||||||
run: |
|
|
||||||
docker manifest create fallenbagel/jellyseerr:develop \
|
|
||||||
--amend fallenbagel/jellyseerr@${{ needs.build.outputs.digest-amd64 }} \
|
|
||||||
--amend fallenbagel/jellyseerr@${{ needs.build.outputs.digest-arm64 }}
|
|
||||||
docker manifest push fallenbagel/jellyseerr:develop
|
|
||||||
|
|
||||||
# GHCR manifest
|
- name: Extract metadata
|
||||||
docker manifest create ghcr.io/${{ env.OWNER_LC }}/jellyseerr:develop \
|
id: meta
|
||||||
--amend ghcr.io/${{ env.OWNER_LC }}/jellyseerr@${{ needs.build.outputs.digest-amd64 }} \
|
uses: docker/metadata-action@v5
|
||||||
--amend ghcr.io/${{ env.OWNER_LC }}/jellyseerr@${{ needs.build.outputs.digest-arm64 }}
|
with:
|
||||||
docker manifest push ghcr.io/${{ env.OWNER_LC }}/jellyseerr:develop
|
images: |
|
||||||
|
${{ github.repository }}
|
||||||
|
ghcr.io/${{ github.repository }}
|
||||||
|
tags: |
|
||||||
|
type=raw,value=develop
|
||||||
|
type=sha
|
||||||
|
labels: |
|
||||||
|
org.opencontainers.image.created=${{ steps.ts.outputs.TIMESTAMP }}
|
||||||
|
|
||||||
|
- name: Build & Push (multi-arch, single tag)
|
||||||
|
uses: docker/build-push-action@v6
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: ./Dockerfile
|
||||||
|
platforms: linux/amd64,linux/arm64
|
||||||
|
push: true
|
||||||
|
build-args: |
|
||||||
|
COMMIT_TAG=${{ github.sha }}
|
||||||
|
BUILD_VERSION=develop
|
||||||
|
SOURCE_DATE_EPOCH=${{ steps.ts.outputs.TIMESTAMP }}
|
||||||
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
|
cache-from: |
|
||||||
|
type=gha,scope=linux/amd64
|
||||||
|
type=gha,scope=linux/arm64
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
|
provenance: false
|
||||||
|
|
||||||
discord:
|
discord:
|
||||||
name: Send Discord Notification
|
name: Send Discord Notification
|
||||||
needs: merge_and_push
|
needs: publish
|
||||||
if: always() && github.event_name != 'pull_request' && !contains(github.event.head_commit.message, '[skip ci]')
|
if: always() && github.event_name != 'pull_request' && !contains(github.event.head_commit.message, '[skip ci]')
|
||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-24.04
|
||||||
steps:
|
steps:
|
||||||
- name: Get Build Job Status
|
|
||||||
uses: technote-space/workflow-conclusion-action@v3
|
|
||||||
- name: Combine Job Status
|
- name: Combine Job Status
|
||||||
id: status
|
id: status
|
||||||
run: |
|
run: |
|
||||||
failures=(neutral, skipped, timed_out, action_required)
|
failures=(neutral, skipped, timed_out, action_required)
|
||||||
if [[ ${array[@]} =~ $WORKFLOW_CONCLUSION ]]; then
|
if [[ ${array[@]} =~ ${{ needs.publish.result }} ]]; then
|
||||||
echo "status=failure" >> $GITHUB_OUTPUT
|
echo "status=failure" >> $GITHUB_OUTPUT
|
||||||
else
|
else
|
||||||
echo "status=$WORKFLOW_CONCLUSION" >> $GITHUB_OUTPUT
|
echo "status=${{ needs.publish.result }}" >> $GITHUB_OUTPUT
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Post Status to Discord
|
- name: Post Status to Discord
|
||||||
uses: sarisia/actions-status-discord@v1
|
uses: sarisia/actions-status-discord@v1
|
||||||
with:
|
with:
|
||||||
|
|||||||
29
.github/workflows/codeql.yml
vendored
29
.github/workflows/codeql.yml
vendored
@@ -3,39 +3,52 @@ name: 'CodeQL'
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: ['develop']
|
branches: ['develop']
|
||||||
|
paths-ignore:
|
||||||
|
- '**/*.md'
|
||||||
|
- 'docs/**'
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: ['develop']
|
branches: ['develop']
|
||||||
|
paths-ignore:
|
||||||
|
- '**/*.md'
|
||||||
|
- 'docs/**'
|
||||||
schedule:
|
schedule:
|
||||||
- cron: '50 7 * * 5'
|
- cron: '50 7 * * 5'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: codeql-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
analyze:
|
analyze:
|
||||||
name: Analyze
|
name: Analyze
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
|
timeout-minutes: 10
|
||||||
permissions:
|
permissions:
|
||||||
actions: read
|
|
||||||
contents: read
|
contents: read
|
||||||
security-events: write
|
security-events: write
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
language: [javascript]
|
language: [actions, javascript]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@v2
|
uses: github/codeql-action/init@v3
|
||||||
with:
|
with:
|
||||||
languages: ${{ matrix.language }}
|
languages: ${{ matrix.language }}
|
||||||
queries: +security-and-quality
|
queries: +security-and-quality
|
||||||
|
|
||||||
- name: Autobuild
|
- name: Autobuild
|
||||||
uses: github/codeql-action/autobuild@v2
|
uses: github/codeql-action/autobuild@v3
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@v2
|
uses: github/codeql-action/analyze@v3
|
||||||
with:
|
with:
|
||||||
category: '/language:${{ matrix.language }}'
|
category: '/language:${{ matrix.language }}'
|
||||||
|
|||||||
20
.github/workflows/conflict_labeler.yml
vendored
20
.github/workflows/conflict_labeler.yml
vendored
@@ -2,18 +2,24 @@ name: Merge Conflict Labeler
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches: [develop]
|
||||||
- develop
|
|
||||||
pull_request_target:
|
pull_request_target:
|
||||||
branches:
|
branches: [develop]
|
||||||
- develop
|
types: [opened, synchronize, reopened]
|
||||||
types: [synchronize]
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: merge-conflict-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
label:
|
label:
|
||||||
name: Labeling
|
name: Labeling
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
if: ${{ github.repository == 'Fallenbagel/jellyseerr' }}
|
timeout-minutes: 10
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
pull-requests: write
|
pull-requests: write
|
||||||
|
|||||||
37
.github/workflows/cypress.yml
vendored
37
.github/workflows/cypress.yml
vendored
@@ -2,26 +2,48 @@ name: Cypress Tests
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches: ['*']
|
||||||
- '*'
|
paths-ignore:
|
||||||
|
- '**/*.md'
|
||||||
|
- 'docs/**'
|
||||||
push:
|
push:
|
||||||
branches:
|
branches: [develop]
|
||||||
- develop
|
paths-ignore:
|
||||||
|
- '**/*.md'
|
||||||
|
- 'docs/**'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: cypress-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
cypress-run:
|
cypress-run:
|
||||||
runs-on: ubuntu-latest
|
name: Cypress Run
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
- name: Set up Node.js
|
- name: Set up Node.js
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 22
|
node-version-file: package.json
|
||||||
|
|
||||||
|
- name: Get PNPM version from package.json
|
||||||
|
id: pnpm-version
|
||||||
|
shell: bash
|
||||||
|
run: echo "pnpm_version=$(node -p 'require(`./package.json`).packageManager.split(\"@\")[1]')" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Pnpm Setup
|
- name: Pnpm Setup
|
||||||
uses: pnpm/action-setup@v4
|
uses: pnpm/action-setup@v4
|
||||||
with:
|
with:
|
||||||
version: 9
|
version: ${{ steps.pnpm-version.outputs.pnpm_version }}
|
||||||
|
|
||||||
- name: Cypress run
|
- name: Cypress run
|
||||||
uses: cypress-io/github-action@v6
|
uses: cypress-io/github-action@v6
|
||||||
with:
|
with:
|
||||||
@@ -36,6 +58,7 @@ jobs:
|
|||||||
# Fix test titles in cypress dashboard
|
# Fix test titles in cypress dashboard
|
||||||
COMMIT_INFO_MESSAGE: ${{github.event.pull_request.title}}
|
COMMIT_INFO_MESSAGE: ${{github.event.pull_request.title}}
|
||||||
COMMIT_INFO_SHA: ${{github.event.pull_request.head.sha}}
|
COMMIT_INFO_SHA: ${{github.event.pull_request.head.sha}}
|
||||||
|
|
||||||
- name: Upload video files
|
- name: Upload video files
|
||||||
if: always()
|
if: always()
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
|
|||||||
46
.github/workflows/docs-deploy.yml
vendored
46
.github/workflows/docs-deploy.yml
vendored
@@ -8,24 +8,38 @@ on:
|
|||||||
- 'docs/**'
|
- 'docs/**'
|
||||||
- 'gen-docs/**'
|
- 'gen-docs/**'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: pages
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: Build Docusaurus
|
name: Build Docusaurus
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
- name: Set up Node.js
|
- name: Set up Node.js
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 20
|
node-version-file: package.json
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Get PNPM version from package.json
|
||||||
|
id: pnpm-version
|
||||||
|
shell: bash
|
||||||
|
run: echo "pnpm_version=$(node -p 'require(`./package.json`).packageManager.split(\"@\")[1]')" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Pnpm Setup
|
- name: Pnpm Setup
|
||||||
uses: pnpm/action-setup@v4
|
uses: pnpm/action-setup@v4
|
||||||
with:
|
with:
|
||||||
version: 9
|
version: ${{ steps.pnpm-version.outputs.pnpm_version }}
|
||||||
|
|
||||||
- name: Get pnpm store directory
|
- name: Get pnpm store directory
|
||||||
shell: sh
|
shell: sh
|
||||||
@@ -46,38 +60,26 @@ jobs:
|
|||||||
pnpm install --frozen-lockfile
|
pnpm install --frozen-lockfile
|
||||||
|
|
||||||
- name: Build website
|
- name: Build website
|
||||||
run: |
|
working-directory: gen-docs
|
||||||
cd gen-docs
|
run: pnpm build
|
||||||
pnpm build
|
|
||||||
|
|
||||||
- name: Upload Build Artifact
|
- name: Upload Build Artifact
|
||||||
uses: actions/upload-pages-artifact@v3
|
uses: actions/upload-pages-artifact@v4
|
||||||
with:
|
with:
|
||||||
path: gen-docs/build
|
path: gen-docs/build
|
||||||
|
|
||||||
deploy:
|
deploy:
|
||||||
name: Deploy to GitHub Pages
|
name: Deploy to GitHub Pages
|
||||||
needs: build
|
needs: build
|
||||||
concurrency: build-deploy-pages
|
runs-on: ubuntu-24.04
|
||||||
|
|
||||||
# Grant GITHUB_TOKEN the permissions required to make a Pages deployment
|
|
||||||
permissions:
|
permissions:
|
||||||
pages: write # to deploy to Pages
|
contents: read
|
||||||
id-token: write # to verify the deployment originates from an appropriate source
|
pages: write
|
||||||
|
id-token: write
|
||||||
# Deploy to the github-pages environment
|
|
||||||
environment:
|
environment:
|
||||||
name: github-pages
|
name: github-pages
|
||||||
url: ${{ steps.deployment.outputs.page_url }}
|
url: ${{ steps.deployment.outputs.page_url }}
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
steps:
|
||||||
# - name: Download Build Artifact
|
|
||||||
# uses: actions/download-artifact@v4
|
|
||||||
# with:
|
|
||||||
# name: docusaurus-build
|
|
||||||
# path: gen-docs/build
|
|
||||||
|
|
||||||
- name: Deploy to GitHub Pages
|
- name: Deploy to GitHub Pages
|
||||||
id: deployment
|
id: deployment
|
||||||
uses: actions/deploy-pages@v4
|
uses: actions/deploy-pages@v4
|
||||||
|
|||||||
29
.github/workflows/helm.yml
vendored
29
.github/workflows/helm.yml
vendored
@@ -4,11 +4,21 @@ on:
|
|||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- develop
|
- develop
|
||||||
|
paths:
|
||||||
|
- 'charts/**'
|
||||||
|
- '.github/workflows/release-charts.yml'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: helm-charts
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
package-helm-chart:
|
package-helm-chart:
|
||||||
name: Package helm chart
|
name: Package helm chart
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
packages: read
|
packages: read
|
||||||
@@ -19,6 +29,7 @@ jobs:
|
|||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
- name: Install helm
|
- name: Install helm
|
||||||
uses: azure/setup-helm@v4
|
uses: azure/setup-helm@v4
|
||||||
@@ -42,16 +53,11 @@ jobs:
|
|||||||
# get current version
|
# get current version
|
||||||
current_version=$(grep '^version:' "$chart_path/Chart.yaml" | awk '{print $2}')
|
current_version=$(grep '^version:' "$chart_path/Chart.yaml" | awk '{print $2}')
|
||||||
# try to get current release version
|
# try to get current release version
|
||||||
set +e
|
if oras manifest fetch "ghcr.io/${GITHUB_REPOSITORY@L}/${chart_name}:${current_version}" >/dev/null 2>&1; then
|
||||||
oras discover ghcr.io/${GITHUB_REPOSITORY@L}/${chart_name}:${current_version}
|
echo "No version change for $chart_name. Skipping."
|
||||||
oras_exit_code=$?
|
else
|
||||||
set -e
|
|
||||||
|
|
||||||
if [ $oras_exit_code -ne 0 ]; then
|
|
||||||
helm dependency build "$chart_path"
|
helm dependency build "$chart_path"
|
||||||
helm package "$chart_path" --destination ./.cr-release-packages
|
helm package "$chart_path" --destination ./.cr-release-packages
|
||||||
else
|
|
||||||
echo "No version change for $chart_name. Skipping."
|
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "Skipping $chart_name: Not a valid Helm chart"
|
echo "Skipping $chart_name: Not a valid Helm chart"
|
||||||
@@ -61,7 +67,7 @@ jobs:
|
|||||||
- name: Check if artifacts exist
|
- name: Check if artifacts exist
|
||||||
id: check-artifacts
|
id: check-artifacts
|
||||||
run: |
|
run: |
|
||||||
if ls .cr-release-packages/* >/dev/null 2>&1; then
|
if ls .cr-release-packages/*.tgz >/dev/null 2>&1; then
|
||||||
echo "has_artifacts=true" >> $GITHUB_OUTPUT
|
echo "has_artifacts=true" >> $GITHUB_OUTPUT
|
||||||
else
|
else
|
||||||
echo "has_artifacts=false" >> $GITHUB_OUTPUT
|
echo "has_artifacts=false" >> $GITHUB_OUTPUT
|
||||||
@@ -77,7 +83,7 @@ jobs:
|
|||||||
|
|
||||||
publish:
|
publish:
|
||||||
name: Publish to ghcr.io
|
name: Publish to ghcr.io
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
permissions:
|
permissions:
|
||||||
packages: write # needed for pushing to github registry
|
packages: write # needed for pushing to github registry
|
||||||
id-token: write # needed for signing the images with GitHub OIDC Token
|
id-token: write # needed for signing the images with GitHub OIDC Token
|
||||||
@@ -88,6 +94,7 @@ jobs:
|
|||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
- name: Install helm
|
- name: Install helm
|
||||||
uses: azure/setup-helm@v4
|
uses: azure/setup-helm@v4
|
||||||
|
|||||||
29
.github/workflows/lint-helm-charts.yml
vendored
29
.github/workflows/lint-helm-charts.yml
vendored
@@ -7,27 +7,48 @@ on:
|
|||||||
paths:
|
paths:
|
||||||
- '.github/workflows/lint-helm-charts.yml'
|
- '.github/workflows/lint-helm-charts.yml'
|
||||||
- 'charts/**'
|
- 'charts/**'
|
||||||
|
push:
|
||||||
|
branches: [develop]
|
||||||
|
paths:
|
||||||
|
- 'charts/**'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: charts-lint-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
lint-test:
|
lint-test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
- name: Set up Helm
|
- name: Set up Helm
|
||||||
uses: azure/setup-helm@v4.2.0
|
uses: azure/setup-helm@v4
|
||||||
|
|
||||||
|
- name: Set up chart-testing
|
||||||
|
uses: helm/chart-testing-action@v2
|
||||||
|
|
||||||
- name: Ensure documentation is updated
|
- name: Ensure documentation is updated
|
||||||
uses: docker://jnorwood/helm-docs:v1.14.2
|
uses: docker://jnorwood/helm-docs:v1.14.2
|
||||||
- name: Set up chart-testing
|
|
||||||
uses: helm/chart-testing-action@v2.6.1
|
|
||||||
- name: Run chart-testing (list-changed)
|
- name: Run chart-testing (list-changed)
|
||||||
id: list-changed
|
id: list-changed
|
||||||
run: |
|
run: |
|
||||||
changed=$(ct list-changed --target-branch ${{ github.event.repository.default_branch }})
|
changed=$(ct list-changed --target-branch ${{ github.event.repository.default_branch }})
|
||||||
if [[ -n "$changed" ]]; then
|
if [[ -n "$changed" ]]; then
|
||||||
echo "changed=true" >> "$GITHUB_OUTPUT"
|
echo "changed=true" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "$changed"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Run chart-testing
|
- name: Run chart-testing
|
||||||
if: steps.list-changed.outputs.changed == 'true'
|
if: steps.list-changed.outputs.changed == 'true'
|
||||||
run: ct lint --target-branch ${{ github.event.repository.default_branch }} --validate-maintainers=false
|
run: ct lint --target-branch ${{ github.event.repository.default_branch }} --validate-maintainers=false
|
||||||
|
|||||||
130
.github/workflows/preview.yml
vendored
130
.github/workflows/preview.yml
vendored
@@ -4,28 +4,125 @@ on:
|
|||||||
push:
|
push:
|
||||||
tags:
|
tags:
|
||||||
- 'preview-*'
|
- 'preview-*'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: preview-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build_and_push:
|
build:
|
||||||
name: Build & Publish Docker Preview Images
|
name: Build (per-arch, native runners)
|
||||||
runs-on: ubuntu-22.04
|
strategy:
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- runner: ubuntu-24.04
|
||||||
|
platform: linux/amd64
|
||||||
|
arch: amd64
|
||||||
|
- runner: ubuntu-24.04-arm
|
||||||
|
platform: linux/arm64
|
||||||
|
arch: arm64
|
||||||
|
runs-on: ${{ matrix.runner }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
- name: Get the version
|
with:
|
||||||
id: get_version
|
persist-credentials: false
|
||||||
run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
|
|
||||||
- name: Set up QEMU
|
- name: Commit timestamp
|
||||||
uses: docker/setup-qemu-action@v3
|
id: ts
|
||||||
|
run: echo "TIMESTAMP=$(git log -1 --pretty=%ct)" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
- name: Derive preview version from tag
|
||||||
|
id: ver
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
TAG="${GITHUB_REF_NAME}"
|
||||||
|
VER="${TAG#preview-}"
|
||||||
|
VER="${VER#v}"
|
||||||
|
echo "version=${VER}" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "Building preview version: ${VER}"
|
||||||
|
|
||||||
|
- name: Warm cache (no push) — ${{ matrix.platform }}
|
||||||
|
uses: docker/build-push-action@v6
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: ./Dockerfile
|
||||||
|
platforms: ${{ matrix.platform }}
|
||||||
|
push: false
|
||||||
|
build-args: |
|
||||||
|
COMMIT_TAG=${{ github.sha }}
|
||||||
|
BUILD_VERSION=${{ steps.ver.outputs.version }}
|
||||||
|
SOURCE_DATE_EPOCH=${{ steps.ts.outputs.TIMESTAMP }}
|
||||||
|
cache-from: type=gha,scope=${{ matrix.platform }}
|
||||||
|
cache-to: type=gha,mode=max,scope=${{ matrix.platform }}
|
||||||
|
provenance: false
|
||||||
|
|
||||||
|
publish:
|
||||||
|
name: Publish multi-arch image
|
||||||
|
needs: build
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
packages: write
|
||||||
|
id-token: write
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
|
- name: Commit timestamp
|
||||||
|
id: ts
|
||||||
|
run: echo "TIMESTAMP=$(git log -1 --pretty=%ct)" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
- name: Log in to Docker Hub
|
- name: Log in to Docker Hub
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKER_USERNAME }}
|
username: ${{ secrets.DOCKER_USERNAME }}
|
||||||
password: ${{ secrets.DOCKER_TOKEN }}
|
password: ${{ secrets.DOCKER_TOKEN }}
|
||||||
- name: Build and push
|
|
||||||
uses: docker/build-push-action@v5
|
- name: Log in to GitHub Container Registry
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: ghcr.io
|
||||||
|
username: ${{ github.repository_owner }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Derive preview version from tag
|
||||||
|
id: ver
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
TAG="${GITHUB_REF_NAME}"
|
||||||
|
VER="${TAG#preview-}"
|
||||||
|
VER="${VER#v}"
|
||||||
|
echo "version=${VER}" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "Publishing preview version: ${VER}"
|
||||||
|
|
||||||
|
- name: Extract metadata
|
||||||
|
id: meta
|
||||||
|
uses: docker/metadata-action@v5
|
||||||
|
with:
|
||||||
|
images: |
|
||||||
|
${{ github.repository }}
|
||||||
|
ghcr.io/${{ github.repository }}
|
||||||
|
tags: |
|
||||||
|
type=raw,value=preview-${{ steps.ver.outputs.version }}
|
||||||
|
labels: |
|
||||||
|
org.opencontainers.image.version=preview-${{ steps.ver.outputs.version }}
|
||||||
|
org.opencontainers.image.created=${{ steps.ts.outputs.TIMESTAMP }}
|
||||||
|
|
||||||
|
- name: Build & Push (multi-arch, single tag)
|
||||||
|
uses: docker/build-push-action@v6
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: ./Dockerfile
|
file: ./Dockerfile
|
||||||
@@ -33,7 +130,12 @@ jobs:
|
|||||||
push: true
|
push: true
|
||||||
build-args: |
|
build-args: |
|
||||||
COMMIT_TAG=${{ github.sha }}
|
COMMIT_TAG=${{ github.sha }}
|
||||||
BUILD_VERSION=${{ steps.get_version.outputs.VERSION }}
|
BUILD_VERSION=${{ steps.ver.outputs.version }}
|
||||||
BUILD_DATE=${{ github.event.repository.updated_at }}
|
SOURCE_DATE_EPOCH=${{ steps.ts.outputs.TIMESTAMP }}
|
||||||
tags: |
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
fallenbagel/jellyseerr:${{ steps.get_version.outputs.VERSION }}
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
|
cache-from: |
|
||||||
|
type=gha,scope=linux/amd64
|
||||||
|
type=gha,scope=linux/arm64
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
|
provenance: false
|
||||||
|
|||||||
236
.github/workflows/release.yml
vendored
236
.github/workflows/release.yml
vendored
@@ -1,6 +1,14 @@
|
|||||||
name: Jellyseer Release
|
name: Jellyseerr Release
|
||||||
|
|
||||||
on: workflow_dispatch
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: release-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
semantic-release:
|
semantic-release:
|
||||||
@@ -8,38 +16,37 @@ jobs:
|
|||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
env:
|
env:
|
||||||
HUSKY: 0
|
HUSKY: 0
|
||||||
|
outputs:
|
||||||
|
new_release_published: ${{ steps.release.outputs.new_release_published }}
|
||||||
|
new_release_version: ${{ steps.release.outputs.new_release_version }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
- name: Set up Node.js
|
- name: Set up Node.js
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 22
|
node-version-file: package.json
|
||||||
- name: Set up QEMU
|
cache: 'pnpm'
|
||||||
uses: docker/setup-qemu-action@v3
|
|
||||||
- name: Set up Docker Buildx
|
- name: Get PNPM version from package.json
|
||||||
uses: docker/setup-buildx-action@v3
|
id: pnpm-version
|
||||||
- name: Log in to Docker Hub
|
shell: bash
|
||||||
uses: docker/login-action@v3
|
run: echo "pnpm_version=$(node -p 'require(`./package.json`).packageManager.split(\"@\")[1]')" >> $GITHUB_OUTPUT
|
||||||
with:
|
|
||||||
username: ${{ secrets.DOCKER_USERNAME }}
|
|
||||||
password: ${{ secrets.DOCKER_TOKEN }}
|
|
||||||
- name: Log in to GitHub Container Registry
|
|
||||||
uses: docker/login-action@v3
|
|
||||||
with:
|
|
||||||
registry: ghcr.io
|
|
||||||
username: ${{ github.repository_owner }}
|
|
||||||
password: ${{ secrets.GH_TOKEN }}
|
|
||||||
- name: Pnpm Setup
|
- name: Pnpm Setup
|
||||||
uses: pnpm/action-setup@v4
|
uses: pnpm/action-setup@v4
|
||||||
with:
|
with:
|
||||||
version: 9
|
version: ${{ steps.pnpm-version.outputs.pnpm_version }}
|
||||||
|
|
||||||
- name: Get pnpm store directory
|
- name: Get pnpm store directory
|
||||||
shell: sh
|
shell: sh
|
||||||
run: |
|
run: |
|
||||||
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
|
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Setup pnpm cache
|
- name: Setup pnpm cache
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
@@ -47,77 +54,151 @@ jobs:
|
|||||||
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
||||||
restore-keys: |
|
restore-keys: |
|
||||||
${{ runner.os }}-pnpm-store-
|
${{ runner.os }}-pnpm-store-
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install
|
run: pnpm install
|
||||||
|
|
||||||
- name: Release
|
- name: Release
|
||||||
|
id: release
|
||||||
|
uses: cycjimmy/semantic-release-action@v5
|
||||||
|
with:
|
||||||
|
extra_plugins: |
|
||||||
|
@semantic-release/git@10
|
||||||
|
@semantic-release/changelog@6
|
||||||
|
@codedependant/semantic-release-docker@5
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
|
||||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
|
||||||
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
|
||||||
run: npx semantic-release
|
|
||||||
|
|
||||||
# build-snap:
|
build:
|
||||||
# name: Build Snap Package (${{ matrix.architecture }})
|
name: Build (per-arch, native runners)
|
||||||
# needs: semantic-release
|
needs: semantic-release
|
||||||
# runs-on: ubuntu-22.04
|
if: needs.semantic-release.outputs.new_release_published == 'true'
|
||||||
# strategy:
|
strategy:
|
||||||
# fail-fast: false
|
matrix:
|
||||||
# matrix:
|
include:
|
||||||
# architecture:
|
- runner: ubuntu-24.04
|
||||||
# - amd64
|
platform: linux/amd64
|
||||||
# - arm64
|
arch: amd64
|
||||||
# steps:
|
- runner: ubuntu-24.04-arm
|
||||||
# - name: Checkout Code
|
platform: linux/arm64
|
||||||
# uses: actions/checkout@v4
|
arch: arm64
|
||||||
# with:
|
runs-on: ${{ matrix.runner }}
|
||||||
# fetch-depth: 0
|
steps:
|
||||||
# - name: Switch to main branch
|
- name: Checkout
|
||||||
# run: git checkout main
|
uses: actions/checkout@v4
|
||||||
# - name: Pull latest changes
|
with:
|
||||||
# run: git pull
|
persist-credentials: false
|
||||||
# - name: Prepare
|
|
||||||
# id: prepare
|
- name: Commit timestamp
|
||||||
# run: |
|
id: ts
|
||||||
# git fetch --prune --tags
|
run: echo "TIMESTAMP=$(git log -1 --pretty=%ct)" >> "$GITHUB_OUTPUT"
|
||||||
# if [[ $GITHUB_REF == refs/tags/* || $GITHUB_REF == refs/heads/master ]]; then
|
|
||||||
# echo "RELEASE=stable" >> $GITHUB_OUTPUT
|
- name: Set up Docker Buildx
|
||||||
# else
|
uses: docker/setup-buildx-action@v3
|
||||||
# echo "RELEASE=edge" >> $GITHUB_OUTPUT
|
|
||||||
# fi
|
- name: Warm cache (no push) — ${{ matrix.platform }}
|
||||||
# - name: Set Up QEMU
|
uses: docker/build-push-action@v6
|
||||||
# uses: docker/setup-qemu-action@v3
|
with:
|
||||||
# with:
|
context: .
|
||||||
# image: tonistiigi/binfmt@sha256:df15403e06a03c2f461c1f7938b171fda34a5849eb63a70e2a2109ed5a778bde
|
file: ./Dockerfile
|
||||||
# - name: Build Snap Package
|
platforms: ${{ matrix.platform }}
|
||||||
# uses: diddlesnaps/snapcraft-multiarch-action@v1
|
push: false
|
||||||
# id: build
|
build-args: |
|
||||||
# with:
|
COMMIT_TAG=${{ github.sha }}
|
||||||
# architecture: ${{ matrix.architecture }}
|
BUILD_VERSION=${{ needs.semantic-release.outputs.new_release_version }}
|
||||||
# - name: Upload Snap Package
|
SOURCE_DATE_EPOCH=${{ steps.ts.outputs.TIMESTAMP }}
|
||||||
# uses: actions/upload-artifact@v4
|
cache-from: type=gha,scope=${{ matrix.platform }}
|
||||||
# with:
|
cache-to: type=gha,mode=max,scope=${{ matrix.platform }}
|
||||||
# name: jellyseerr-snap-package-${{ matrix.architecture }}
|
provenance: false
|
||||||
# path: ${{ steps.build.outputs.snap }}
|
|
||||||
# - name: Review Snap Package
|
publish:
|
||||||
# uses: diddlesnaps/snapcraft-review-tools-action@v1
|
name: Publish multi-arch image
|
||||||
# with:
|
needs: [semantic-release, build]
|
||||||
# snap: ${{ steps.build.outputs.snap }}
|
if: needs.semantic-release.outputs.new_release_published == 'true'
|
||||||
# - name: Publish Snap Package
|
runs-on: ubuntu-24.04
|
||||||
# uses: snapcore/action-publish@v1
|
permissions:
|
||||||
# env:
|
contents: read
|
||||||
# SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAP_LOGIN }}
|
id-token: write
|
||||||
# with:
|
packages: write
|
||||||
# snap: ${{ steps.build.outputs.snap }}
|
steps:
|
||||||
# release: ${{ steps.prepare.outputs.RELEASE }}
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
|
- name: Commit timestamp
|
||||||
|
id: ts
|
||||||
|
run: echo "TIMESTAMP=$(git log -1 --pretty=%ct)" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
- name: Log in to Docker Hub
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKER_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKER_TOKEN }}
|
||||||
|
|
||||||
|
- name: Log in to GitHub Container Registry
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: ghcr.io
|
||||||
|
username: ${{ github.repository_owner }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Extract metadata
|
||||||
|
id: meta
|
||||||
|
uses: docker/metadata-action@v5
|
||||||
|
with:
|
||||||
|
images: |
|
||||||
|
${{ github.repository }}
|
||||||
|
ghcr.io/${{ github.repository }}
|
||||||
|
tags: |
|
||||||
|
type=raw,value=${{ needs.semantic-release.outputs.new_release_version }}
|
||||||
|
labels: |
|
||||||
|
org.opencontainers.image.created=${{ steps.ts.outputs.TIMESTAMP }}
|
||||||
|
|
||||||
|
- name: Build & Push (multi-arch, single tag)
|
||||||
|
uses: docker/build-push-action@v6
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: ./Dockerfile
|
||||||
|
platforms: linux/amd64,linux/arm64
|
||||||
|
push: true
|
||||||
|
build-args: |
|
||||||
|
COMMIT_TAG=${{ github.sha }}
|
||||||
|
BUILD_VERSION=${{ needs.semantic-release.outputs.new_release_version }}
|
||||||
|
SOURCE_DATE_EPOCH=${{ steps.ts.outputs.TIMESTAMP }}
|
||||||
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
|
cache-from: |
|
||||||
|
type=gha,scope=linux/amd64
|
||||||
|
type=gha,scope=linux/arm64
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
|
provenance: false
|
||||||
|
|
||||||
|
- name: Also tag :latest (non-pre-release only)
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
VER="${{ needs.semantic-release.outputs.new_release_version }}"
|
||||||
|
if [[ "$VER" != *"-"* ]]; then
|
||||||
|
docker buildx imagetools create \
|
||||||
|
-t ${{ github.repository }}:latest \
|
||||||
|
${{ github.repository }}:${VER}
|
||||||
|
docker buildx imagetools create \
|
||||||
|
-t ghcr.io/${{ github.repository }}:latest \
|
||||||
|
ghcr.io/${{ github.repository }}:${VER}
|
||||||
|
fi
|
||||||
|
|
||||||
discord:
|
discord:
|
||||||
name: Send Discord Notification
|
name: Send Discord Notification
|
||||||
needs: semantic-release
|
needs: publish
|
||||||
if: always()
|
if: always()
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-24.04
|
||||||
steps:
|
steps:
|
||||||
- name: Get Build Job Status
|
- name: Get Build Job Status
|
||||||
uses: technote-space/workflow-conclusion-action@v3
|
uses: technote-space/workflow-conclusion-action@v3
|
||||||
|
|
||||||
- name: Combine Job Status
|
- name: Combine Job Status
|
||||||
id: status
|
id: status
|
||||||
run: |
|
run: |
|
||||||
@@ -127,6 +208,7 @@ jobs:
|
|||||||
else
|
else
|
||||||
echo "status=$WORKFLOW_CONCLUSION" >> $GITHUB_OUTPUT
|
echo "status=$WORKFLOW_CONCLUSION" >> $GITHUB_OUTPUT
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Post Status to Discord
|
- name: Post Status to Discord
|
||||||
uses: sarisia/actions-status-discord@v1
|
uses: sarisia/actions-status-discord@v1
|
||||||
with:
|
with:
|
||||||
|
|||||||
94
.github/workflows/snap.yaml.disabled
vendored
94
.github/workflows/snap.yaml.disabled
vendored
@@ -1,94 +0,0 @@
|
|||||||
name: Publish Snap
|
|
||||||
|
|
||||||
# turn off edge snap builds temporarily and make it manual
|
|
||||||
|
|
||||||
# on:
|
|
||||||
# push:
|
|
||||||
# branches:
|
|
||||||
# - develop
|
|
||||||
|
|
||||||
on: workflow_dispatch
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
jobs:
|
|
||||||
name: Job Check
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
if: "!contains(github.event.head_commit.message, '[skip ci]')"
|
|
||||||
steps:
|
|
||||||
- name: Cancel Previous Runs
|
|
||||||
uses: styfle/cancel-workflow-action@0.12.1
|
|
||||||
with:
|
|
||||||
access_token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
build-snap:
|
|
||||||
name: Build Snap Package (${{ matrix.architecture }})
|
|
||||||
needs: jobs
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
architecture:
|
|
||||||
- amd64
|
|
||||||
- arm64
|
|
||||||
steps:
|
|
||||||
- name: Checkout Code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: Prepare
|
|
||||||
id: prepare
|
|
||||||
run: |
|
|
||||||
git fetch --prune --unshallow --tags
|
|
||||||
if [[ $GITHUB_REF == refs/tags/* || $GITHUB_REF == refs/heads/master ]]; then
|
|
||||||
echo "RELEASE=stable" >> $GITHUB_OUTPUT
|
|
||||||
else
|
|
||||||
echo "RELEASE=edge" >> $GITHUB_OUTPUT
|
|
||||||
fi
|
|
||||||
- name: Set Up QEMU
|
|
||||||
uses: docker/setup-qemu-action@v3
|
|
||||||
- name: Configure Git
|
|
||||||
run: git config --add safe.directory /data/parts/jellyseerr/src
|
|
||||||
- name: Build Snap Package
|
|
||||||
uses: diddlesnaps/snapcraft-multiarch-action@v1
|
|
||||||
id: build
|
|
||||||
with:
|
|
||||||
architecture: ${{ matrix.architecture }}
|
|
||||||
- name: Upload Snap Package
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: jellyseerr-snap-package-${{ matrix.architecture }}
|
|
||||||
path: ${{ steps.build.outputs.snap }}
|
|
||||||
- name: Review Snap Package
|
|
||||||
uses: diddlesnaps/snapcraft-review-tools-action@v1
|
|
||||||
with:
|
|
||||||
snap: ${{ steps.build.outputs.snap }}
|
|
||||||
- name: Publish Snap Package
|
|
||||||
uses: snapcore/action-publish@v1
|
|
||||||
env:
|
|
||||||
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAP_LOGIN }}
|
|
||||||
with:
|
|
||||||
snap: ${{ steps.build.outputs.snap }}
|
|
||||||
release: ${{ steps.prepare.outputs.RELEASE }}
|
|
||||||
|
|
||||||
discord:
|
|
||||||
name: Send Discord Notification
|
|
||||||
needs: build-snap
|
|
||||||
if: always() && !contains(github.event.head_commit.message, '[skip ci]')
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
steps:
|
|
||||||
- name: Get Build Job Status
|
|
||||||
uses: technote-space/workflow-conclusion-action@v3
|
|
||||||
- name: Combine Job Status
|
|
||||||
id: status
|
|
||||||
run: |
|
|
||||||
failures=(neutral, skipped, timed_out, action_required)
|
|
||||||
if [[ ${array[@]} =~ $WORKFLOW_CONCLUSION ]]; then
|
|
||||||
echo "status=failure" >> $GITHUB_OUTPUT
|
|
||||||
else
|
|
||||||
echo "status=$WORKFLOW_CONCLUSION" >> $GITHUB_OUTPUT
|
|
||||||
fi
|
|
||||||
- name: Post Status to Discord
|
|
||||||
uses: sarisia/actions-status-discord@v1
|
|
||||||
with:
|
|
||||||
webhook: ${{ secrets.DISCORD_WEBHOOK }}
|
|
||||||
status: ${{ steps.status.outputs.status }}
|
|
||||||
title: ${{ github.workflow }}
|
|
||||||
nofail: true
|
|
||||||
29
.github/workflows/support.yml
vendored
29
.github/workflows/support.yml
vendored
@@ -4,15 +4,27 @@ on:
|
|||||||
issues:
|
issues:
|
||||||
types: [labeled, unlabeled, reopened]
|
types: [labeled, unlabeled, reopened]
|
||||||
|
|
||||||
|
permissions: {}
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: support-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
support:
|
support:
|
||||||
runs-on: ubuntu-latest
|
if: github.event.label.name == 'support'
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
|
permissions:
|
||||||
|
issues: write
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
GH_REPO: ${{ github.repository }}
|
||||||
|
NUMBER: ${{ github.event.issue.number }}
|
||||||
steps:
|
steps:
|
||||||
- uses: dessant/support-requests@v4
|
- name: Comment and close issue
|
||||||
with:
|
run: gh issue close "$NUMBER" -r "off-topic" -c "$BODY"
|
||||||
github-token: ${{ github.token }}
|
env:
|
||||||
support-label: 'support'
|
BODY: >
|
||||||
issue-comment: >
|
|
||||||
:wave: @{issue-author}, we use the issue tracker exclusively
|
:wave: @{issue-author}, we use the issue tracker exclusively
|
||||||
for bug reports and feature requests. However, this issue appears
|
for bug reports and feature requests. However, this issue appears
|
||||||
to be a support request. Please use our support channels
|
to be a support request. Please use our support channels
|
||||||
@@ -20,6 +32,5 @@ jobs:
|
|||||||
|
|
||||||
- [Discord](https://discord.gg/ckbvBtDJgC)
|
- [Discord](https://discord.gg/ckbvBtDJgC)
|
||||||
|
|
||||||
close-issue: true
|
- name: Lock issue
|
||||||
lock-issue: true
|
run: gh issue lock "$NUMBER" -r "off_topic"
|
||||||
issue-lock-reason: 'off-topic'
|
|
||||||
|
|||||||
23
.github/workflows/test-docs-deploy.yml
vendored
23
.github/workflows/test-docs-deploy.yml
vendored
@@ -8,24 +8,39 @@ on:
|
|||||||
- 'docs/**'
|
- 'docs/**'
|
||||||
- 'gen-docs/**'
|
- 'gen-docs/**'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: docs-pr-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
test-deploy:
|
test-deploy:
|
||||||
name: Test deployment
|
name: Test deployment
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
- name: Set up Node.js
|
- name: Set up Node.js
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 20
|
node-version-file: package.json
|
||||||
|
|
||||||
|
- name: Get PNPM version from package.json
|
||||||
|
id: pnpm-version
|
||||||
|
shell: bash
|
||||||
|
run: echo "pnpm_version=$(node -p 'require(`./package.json`).packageManager.split(\"@\")[1]')" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Pnpm Setup
|
- name: Pnpm Setup
|
||||||
uses: pnpm/action-setup@v4
|
uses: pnpm/action-setup@v4
|
||||||
with:
|
with:
|
||||||
version: 9
|
version: ${{ steps.pnpm-version.outputs.pnpm_version }}
|
||||||
|
|
||||||
- name: Get pnpm store directory
|
- name: Get pnpm store directory
|
||||||
shell: sh
|
shell: sh
|
||||||
@@ -42,7 +57,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
cd gen-docs
|
cd gen-docs
|
||||||
pnpm install --frozen-lockfile
|
pnpm install --frozen-lockfile
|
||||||
|
|
||||||
- name: Build website
|
- name: Build website
|
||||||
|
|||||||
5
.vscode/settings.json
vendored
5
.vscode/settings.json
vendored
@@ -20,5 +20,8 @@
|
|||||||
"files.associations": {
|
"files.associations": {
|
||||||
"globals.css": "tailwindcss"
|
"globals.css": "tailwindcss"
|
||||||
},
|
},
|
||||||
"i18n-ally.localesPaths": ["src/i18n/locale"]
|
"i18n-ally.localesPaths": [
|
||||||
|
"src/i18n/locale"
|
||||||
|
],
|
||||||
|
"yaml.format.singleQuote": true
|
||||||
}
|
}
|
||||||
|
|||||||
31
Dockerfile
31
Dockerfile
@@ -2,8 +2,11 @@ FROM node:22-alpine AS BUILD_IMAGE
|
|||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
|
ARG SOURCE_DATE_EPOCH
|
||||||
ARG TARGETPLATFORM
|
ARG TARGETPLATFORM
|
||||||
|
ARG COMMIT_TAG
|
||||||
ENV TARGETPLATFORM=${TARGETPLATFORM:-linux/amd64}
|
ENV TARGETPLATFORM=${TARGETPLATFORM:-linux/amd64}
|
||||||
|
ENV COMMIT_TAG=${COMMIT_TAG}
|
||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
case "${TARGETPLATFORM}" in \
|
case "${TARGETPLATFORM}" in \
|
||||||
@@ -20,36 +23,16 @@ COPY package.json pnpm-lock.yaml postinstall-win.js ./
|
|||||||
RUN CYPRESS_INSTALL_BINARY=0 pnpm install --frozen-lockfile
|
RUN CYPRESS_INSTALL_BINARY=0 pnpm install --frozen-lockfile
|
||||||
|
|
||||||
COPY . ./
|
COPY . ./
|
||||||
|
|
||||||
ARG COMMIT_TAG
|
|
||||||
ENV COMMIT_TAG=${COMMIT_TAG}
|
|
||||||
|
|
||||||
RUN pnpm build
|
RUN pnpm build
|
||||||
|
|
||||||
# remove development dependencies
|
# remove development dependencies
|
||||||
RUN pnpm prune --prod --ignore-scripts
|
RUN pnpm prune --prod --ignore-scripts && \
|
||||||
|
rm -rf src server .next/cache charts gen-docs docs && \
|
||||||
RUN rm -rf src server .next/cache charts gen-docs docs
|
touch config/DOCKER && \
|
||||||
|
echo "{\"commitTag\": \"${COMMIT_TAG}\"}" > committag.json
|
||||||
RUN touch config/DOCKER
|
|
||||||
|
|
||||||
RUN echo "{\"commitTag\": \"${COMMIT_TAG}\"}" > committag.json
|
|
||||||
|
|
||||||
|
|
||||||
FROM node:22-alpine
|
FROM node:22-alpine
|
||||||
|
|
||||||
# OCI Meta information
|
|
||||||
ARG BUILD_DATE
|
|
||||||
ARG BUILD_VERSION
|
|
||||||
LABEL \
|
|
||||||
org.opencontainers.image.authors="Fallenbagel" \
|
|
||||||
org.opencontainers.image.source="https://github.com/fallenbagel/jellyseerr" \
|
|
||||||
org.opencontainers.image.created=${BUILD_DATE} \
|
|
||||||
org.opencontainers.image.version=${BUILD_VERSION} \
|
|
||||||
org.opencontainers.image.title="Jellyseerr" \
|
|
||||||
org.opencontainers.image.description="Open-source media request and discovery manager for Jellyfin, Plex, and Emby." \
|
|
||||||
org.opencontainers.image.licenses="MIT"
|
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
RUN apk add --no-cache tzdata tini && rm -rf /tmp/*
|
RUN apk add --no-cache tzdata tini && rm -rf /tmp/*
|
||||||
|
|||||||
28
package.json
28
package.json
@@ -2,6 +2,7 @@
|
|||||||
"name": "jellyseerr",
|
"name": "jellyseerr",
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
|
"packageManager": "pnpm@9.0.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"preinstall": "npx only-allow pnpm",
|
"preinstall": "npx only-allow pnpm",
|
||||||
"postinstall": "node postinstall-win.js",
|
"postinstall": "node postinstall-win.js",
|
||||||
@@ -116,11 +117,8 @@
|
|||||||
"zod": "3.24.2"
|
"zod": "3.24.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@codedependant/semantic-release-docker": "^5.1.0",
|
|
||||||
"@commitlint/cli": "17.4.4",
|
"@commitlint/cli": "17.4.4",
|
||||||
"@commitlint/config-conventional": "17.4.4",
|
"@commitlint/config-conventional": "17.4.4",
|
||||||
"@semantic-release/changelog": "6.0.3",
|
|
||||||
"@semantic-release/git": "10.0.1",
|
|
||||||
"@tailwindcss/aspect-ratio": "0.4.2",
|
"@tailwindcss/aspect-ratio": "0.4.2",
|
||||||
"@tailwindcss/forms": "0.5.10",
|
"@tailwindcss/forms": "0.5.10",
|
||||||
"@tailwindcss/typography": "0.5.16",
|
"@tailwindcss/typography": "0.5.16",
|
||||||
@@ -170,7 +168,6 @@
|
|||||||
"prettier": "2.8.4",
|
"prettier": "2.8.4",
|
||||||
"prettier-plugin-organize-imports": "3.2.2",
|
"prettier-plugin-organize-imports": "3.2.2",
|
||||||
"prettier-plugin-tailwindcss": "0.2.3",
|
"prettier-plugin-tailwindcss": "0.2.3",
|
||||||
"semantic-release": "24.2.7",
|
|
||||||
"tailwindcss": "3.2.7",
|
"tailwindcss": "3.2.7",
|
||||||
"ts-node": "10.9.1",
|
"ts-node": "10.9.1",
|
||||||
"tsc-alias": "1.8.2",
|
"tsc-alias": "1.8.2",
|
||||||
@@ -178,8 +175,7 @@
|
|||||||
"typescript": "4.9.5"
|
"typescript": "4.9.5"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^22.0.0",
|
"node": "^22.0.0"
|
||||||
"pnpm": "^9.0.0"
|
|
||||||
},
|
},
|
||||||
"overrides": {
|
"overrides": {
|
||||||
"sqlite3/node-gyp": "8.4.1",
|
"sqlite3/node-gyp": "8.4.1",
|
||||||
@@ -208,28 +204,12 @@
|
|||||||
"plugins": [
|
"plugins": [
|
||||||
"@semantic-release/commit-analyzer",
|
"@semantic-release/commit-analyzer",
|
||||||
"@semantic-release/release-notes-generator",
|
"@semantic-release/release-notes-generator",
|
||||||
[
|
|
||||||
"@semantic-release/changelog",
|
|
||||||
{
|
|
||||||
"changelogFile": "CHANGELOG.md"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"@semantic-release/npm",
|
"@semantic-release/npm",
|
||||||
[
|
|
||||||
"@semantic-release/git",
|
|
||||||
{
|
|
||||||
"assets": [
|
|
||||||
"package.json",
|
|
||||||
"CHANGELOG.md"
|
|
||||||
],
|
|
||||||
"message": "chore(release): ${nextRelease.version}"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
[
|
[
|
||||||
"@codedependant/semantic-release-docker",
|
"@codedependant/semantic-release-docker",
|
||||||
{
|
{
|
||||||
"dockerArgs": {
|
"dockerArgs": {
|
||||||
"COMMIT_TAG": "$GIT_SHA"
|
"COMMIT_TAG": "${GITHUB_SHA}"
|
||||||
},
|
},
|
||||||
"dockerLogin": false,
|
"dockerLogin": false,
|
||||||
"dockerProject": "fallenbagel",
|
"dockerProject": "fallenbagel",
|
||||||
@@ -250,7 +230,7 @@
|
|||||||
"@codedependant/semantic-release-docker",
|
"@codedependant/semantic-release-docker",
|
||||||
{
|
{
|
||||||
"dockerArgs": {
|
"dockerArgs": {
|
||||||
"COMMIT_TAG": "$GIT_SHA"
|
"COMMIT_TAG": "${GITHUB_SHA}"
|
||||||
},
|
},
|
||||||
"dockerLogin": false,
|
"dockerLogin": false,
|
||||||
"dockerRegistry": "ghcr.io",
|
"dockerRegistry": "ghcr.io",
|
||||||
|
|||||||
1361
pnpm-lock.yaml
generated
1361
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user