From 976e090f42b3ac8b1436726ef73333dfda29db01 Mon Sep 17 00:00:00 2001 From: Rudra Sankha Sinhamahapatra Date: Sun, 9 Mar 2025 03:31:35 +0530 Subject: [PATCH 01/14] adding ffmpeg v7 --- packages/build/src/extensions/core/ffmpeg.ts | 37 ++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/packages/build/src/extensions/core/ffmpeg.ts b/packages/build/src/extensions/core/ffmpeg.ts index 84a91d7061..4f54394e80 100644 --- a/packages/build/src/extensions/core/ffmpeg.ts +++ b/packages/build/src/extensions/core/ffmpeg.ts @@ -38,3 +38,40 @@ export function ffmpeg(options: FfmpegOptions = {}): BuildExtension { }, }; } + +/** + * Add ffmpeg 7.x to the build, and automatically set the FFMPEG_PATH and FFPROBE_PATH environment variables. + * This uses the static build from johnvansickle.com to install the latest 7.x version. + * + * @returns The build extension. + */ + +export function ffmpeg7(): BuildExtension { + return { + name:"ffmpeg7", + onBuildComplete(context) { + if(context.target === "dev") { + return; + } + + context.logger.debug("Adding ffmpeg 7"); + + context.addLayer({ + id:"ffmpeg", + image: { + instructions:[ + "RUN apt-get update && apt-get install -y --no-install-recommends wget xz-utils && apt-get clean && rm -rf /var/lib/apt/lists/*", + "RUN wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz -O ffmpeg.tar.xz && tar xvf ffmpeg.tar.xz -C /usr/bin --strip-components=1 --no-anchored 'ffmpeg' 'ffprobe' && rm ffmpeg.tar.xz", + ], + }, + deploy : { + env: { + FFMPEG_PATH: "/usr/bin/ffmpeg", + FFPROBE_PATH: "/usr/bin/ffprobe", + }, + override: true, + } + }) + } + } +} \ No newline at end of file From 5e4d8ea77fbd25b1db924052041e7fba46783a05 Mon Sep 17 00:00:00 2001 From: Rudra Sankha Sinhamahapatra Date: Sun, 9 Mar 2025 03:44:29 +0530 Subject: [PATCH 02/14] Renaming id ffmpeg to ffmpeg7 --- packages/build/src/extensions/core/ffmpeg.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/build/src/extensions/core/ffmpeg.ts b/packages/build/src/extensions/core/ffmpeg.ts index 4f54394e80..bdcadbd90b 100644 --- a/packages/build/src/extensions/core/ffmpeg.ts +++ b/packages/build/src/extensions/core/ffmpeg.ts @@ -57,7 +57,7 @@ export function ffmpeg7(): BuildExtension { context.logger.debug("Adding ffmpeg 7"); context.addLayer({ - id:"ffmpeg", + id:"ffmpeg7", image: { instructions:[ "RUN apt-get update && apt-get install -y --no-install-recommends wget xz-utils && apt-get clean && rm -rf /var/lib/apt/lists/*", From cba27619dee82e8db1fc89ce33a9f2b9948df141 Mon Sep 17 00:00:00 2001 From: Rudra Sankha Sinhamahapatra Date: Sun, 9 Mar 2025 15:24:26 +0530 Subject: [PATCH 03/14] added space --- packages/build/src/extensions/core/ffmpeg.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/build/src/extensions/core/ffmpeg.ts b/packages/build/src/extensions/core/ffmpeg.ts index bdcadbd90b..96a00db2e5 100644 --- a/packages/build/src/extensions/core/ffmpeg.ts +++ b/packages/build/src/extensions/core/ffmpeg.ts @@ -48,7 +48,7 @@ export function ffmpeg(options: FfmpegOptions = {}): BuildExtension { export function ffmpeg7(): BuildExtension { return { - name:"ffmpeg7", + name: "ffmpeg7", onBuildComplete(context) { if(context.target === "dev") { return; From e523e4d84be905891fb059ee26e0ce75fd303205 Mon Sep 17 00:00:00 2001 From: Rudra Sankha Sinhamahapatra Date: Sun, 9 Mar 2025 15:29:52 +0530 Subject: [PATCH 04/14] fixing formatting issue --- packages/build/src/extensions/core/ffmpeg.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/build/src/extensions/core/ffmpeg.ts b/packages/build/src/extensions/core/ffmpeg.ts index 96a00db2e5..953c2bf688 100644 --- a/packages/build/src/extensions/core/ffmpeg.ts +++ b/packages/build/src/extensions/core/ffmpeg.ts @@ -50,21 +50,21 @@ export function ffmpeg7(): BuildExtension { return { name: "ffmpeg7", onBuildComplete(context) { - if(context.target === "dev") { + if (context.target === "dev") { return; } context.logger.debug("Adding ffmpeg 7"); context.addLayer({ - id:"ffmpeg7", + id: "ffmpeg7", image: { instructions:[ "RUN apt-get update && apt-get install -y --no-install-recommends wget xz-utils && apt-get clean && rm -rf /var/lib/apt/lists/*", "RUN wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz -O ffmpeg.tar.xz && tar xvf ffmpeg.tar.xz -C /usr/bin --strip-components=1 --no-anchored 'ffmpeg' 'ffprobe' && rm ffmpeg.tar.xz", ], }, - deploy : { + deploy: { env: { FFMPEG_PATH: "/usr/bin/ffmpeg", FFPROBE_PATH: "/usr/bin/ffprobe", From 6323723a3b0420b9894278d71dbac4253b626185 Mon Sep 17 00:00:00 2001 From: nicktrn <55853254+nicktrn@users.noreply.github.com> Date: Tue, 13 May 2025 00:36:05 +0100 Subject: [PATCH 05/14] fix unit test workflow for forks --- .github/workflows/unit-tests.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index 382ee5617f..79d280ce57 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -7,6 +7,8 @@ jobs: unitTests: name: "๐Ÿงช Unit Tests" runs-on: ubuntu-latest + env: + DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} steps: - name: ๐Ÿ”ง Disable IPv6 run: | @@ -52,10 +54,14 @@ jobs: # ..to avoid rate limits when pulling images - name: ๐Ÿณ Login to DockerHub + if: ${{ env.DOCKERHUB_USERNAME }} uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: ๐Ÿณ Skipping DockerHub login (no secrets available) + if: ${{ !env.DOCKERHUB_USERNAME }} + run: echo "DockerHub login skipped because secrets are not available." - name: ๐Ÿ“ฅ Download deps run: pnpm install --frozen-lockfile From 9ae9114ada099194d48a83ce905f7433016884e2 Mon Sep 17 00:00:00 2001 From: nicktrn <55853254+nicktrn@users.noreply.github.com> Date: Tue, 13 May 2025 00:50:58 +0100 Subject: [PATCH 06/14] merge ffmpeg v7 into existing extension --- packages/build/src/extensions/core/ffmpeg.ts | 41 +++++++++++++++++++- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/packages/build/src/extensions/core/ffmpeg.ts b/packages/build/src/extensions/core/ffmpeg.ts index 953c2bf688..694360faeb 100644 --- a/packages/build/src/extensions/core/ffmpeg.ts +++ b/packages/build/src/extensions/core/ffmpeg.ts @@ -1,12 +1,23 @@ import { BuildExtension } from "@trigger.dev/core/v3/build"; export type FfmpegOptions = { + /** + * The version of ffmpeg to install. If not provided, the latest version from apt will be installed. + * If set to '7' or starts with '7.', a static build of ffmpeg 7.x from johnvansickle.com will be used instead of apt. + * @example + * ffmpeg() // Installs latest ffmpeg from apt + * ffmpeg({ version: '7' }) // Installs static build of ffmpeg 7.x + * ffmpeg({ version: '7.0.1' }) // Installs static build of ffmpeg 7.x + * ffmpeg({ version: '6' }) // Version ignored, installs latest ffmpeg from apt + * ffmpeg({ version: '8' }) // Version ignored, installs latest ffmpeg from apt + */ version?: string; }; /** * Add ffmpeg to the build, and automatically set the FFMPEG_PATH and FFPROBE_PATH environment variables. - * @param options.version The version of ffmpeg to install. If not provided, the latest version will be installed. + * @param options.version The version of ffmpeg to install. If not provided, the latest version from apt will be installed. + * If set to '7' or starts with '7.', a static build of ffmpeg 7.x from johnvansickle.com will be used instead of apt. * * @returns The build extension. */ @@ -22,10 +33,36 @@ export function ffmpeg(options: FfmpegOptions = {}): BuildExtension { options, }); + // Use static build for version 7 or 7.x + if (options.version === "7" || options.version?.startsWith("7.")) { + context.addLayer({ + id: "ffmpeg7", + image: { + instructions: [ + "RUN apt-get update && apt-get install -y --no-install-recommends wget xz-utils && apt-get clean && rm -rf /var/lib/apt/lists/*", + "RUN wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz -O ffmpeg.tar.xz && tar xvf ffmpeg.tar.xz -C /usr/bin --strip-components=1 --no-anchored 'ffmpeg' 'ffprobe' && rm ffmpeg.tar.xz", + ], + }, + deploy: { + env: { + FFMPEG_PATH: "/usr/bin/ffmpeg", + FFPROBE_PATH: "/usr/bin/ffprobe", + }, + override: true, + }, + }); + return; + } else if (options.version) { + context.logger.warn("Custom ffmpeg version not supported, ignoring", { + version: options.version, + }); + } + + // Default: use apt context.addLayer({ id: "ffmpeg", image: { - pkgs: options.version ? [`ffmpeg=${options.version}`] : ["ffmpeg"], + pkgs: ["ffmpeg"], }, deploy: { env: { From 6f49cdbe9fb930e9d07d0174a7e698d99d7c57ad Mon Sep 17 00:00:00 2001 From: nicktrn <55853254+nicktrn@users.noreply.github.com> Date: Tue, 13 May 2025 01:00:14 +0100 Subject: [PATCH 07/14] verify md5 checksum --- packages/build/src/extensions/core/ffmpeg.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/build/src/extensions/core/ffmpeg.ts b/packages/build/src/extensions/core/ffmpeg.ts index 694360faeb..cfc1c661ed 100644 --- a/packages/build/src/extensions/core/ffmpeg.ts +++ b/packages/build/src/extensions/core/ffmpeg.ts @@ -39,8 +39,13 @@ export function ffmpeg(options: FfmpegOptions = {}): BuildExtension { id: "ffmpeg7", image: { instructions: [ - "RUN apt-get update && apt-get install -y --no-install-recommends wget xz-utils && apt-get clean && rm -rf /var/lib/apt/lists/*", - "RUN wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz -O ffmpeg.tar.xz && tar xvf ffmpeg.tar.xz -C /usr/bin --strip-components=1 --no-anchored 'ffmpeg' 'ffprobe' && rm ffmpeg.tar.xz", + // Install ffmpeg after checksum validation + "RUN apt-get update && apt-get install -y --no-install-recommends wget xz-utils && apt-get clean && rm -rf /var/lib/apt/lists/* && " + + "wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz.md5 -O ffmpeg.tar.xz.md5 && " + + "wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz -O ffmpeg.tar.xz && " + + "md5sum -c ffmpeg.tar.xz.md5 && " + + "tar xvf ffmpeg.tar.xz -C /usr/bin --strip-components=1 --no-anchored 'ffmpeg' 'ffprobe' && " + + "rm ffmpeg.tar.xz ffmpeg.tar.xz.md5", ], }, deploy: { From 1b29f203c13f4824de798f6e6b2111d60552bcf3 Mon Sep 17 00:00:00 2001 From: nicktrn <55853254+nicktrn@users.noreply.github.com> Date: Tue, 13 May 2025 01:00:38 +0100 Subject: [PATCH 08/14] fix dns resolution --- packages/build/src/extensions/core/ffmpeg.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/build/src/extensions/core/ffmpeg.ts b/packages/build/src/extensions/core/ffmpeg.ts index cfc1c661ed..451ecda9db 100644 --- a/packages/build/src/extensions/core/ffmpeg.ts +++ b/packages/build/src/extensions/core/ffmpeg.ts @@ -40,7 +40,7 @@ export function ffmpeg(options: FfmpegOptions = {}): BuildExtension { image: { instructions: [ // Install ffmpeg after checksum validation - "RUN apt-get update && apt-get install -y --no-install-recommends wget xz-utils && apt-get clean && rm -rf /var/lib/apt/lists/* && " + + "RUN apt-get update && apt-get install -y --no-install-recommends wget xz-utils nscd && apt-get clean && rm -rf /var/lib/apt/lists/* && " + "wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz.md5 -O ffmpeg.tar.xz.md5 && " + "wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz -O ffmpeg.tar.xz && " + "md5sum -c ffmpeg.tar.xz.md5 && " + From eeb2df46222d5c8cc072af462864c85d463e5bc5 Mon Sep 17 00:00:00 2001 From: nicktrn <55853254+nicktrn@users.noreply.github.com> Date: Tue, 13 May 2025 01:58:11 +0100 Subject: [PATCH 09/14] fix v7 install --- packages/build/src/extensions/core/ffmpeg.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/build/src/extensions/core/ffmpeg.ts b/packages/build/src/extensions/core/ffmpeg.ts index 451ecda9db..e70dc6329a 100644 --- a/packages/build/src/extensions/core/ffmpeg.ts +++ b/packages/build/src/extensions/core/ffmpeg.ts @@ -40,12 +40,12 @@ export function ffmpeg(options: FfmpegOptions = {}): BuildExtension { image: { instructions: [ // Install ffmpeg after checksum validation - "RUN apt-get update && apt-get install -y --no-install-recommends wget xz-utils nscd && apt-get clean && rm -rf /var/lib/apt/lists/* && " + - "wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz.md5 -O ffmpeg.tar.xz.md5 && " + - "wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz -O ffmpeg.tar.xz && " + - "md5sum -c ffmpeg.tar.xz.md5 && " + - "tar xvf ffmpeg.tar.xz -C /usr/bin --strip-components=1 --no-anchored 'ffmpeg' 'ffprobe' && " + - "rm ffmpeg.tar.xz ffmpeg.tar.xz.md5", + "RUN apt-get update && apt-get install -y --no-install-recommends wget xz-utils nscd ca-certificates && apt-get clean && rm -rf /var/lib/apt/lists/* && " + + "wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz.md5 && " + + "wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz && " + + "md5sum -c ffmpeg-git-amd64-static.tar.xz.md5 && " + + "tar xvf ffmpeg-git-amd64-static.tar.xz -C /usr/bin --strip-components=1 --no-anchored 'ffmpeg' 'ffprobe' && " + + "rm ffmpeg-git-amd64-static.tar.xz*", ], }, deploy: { From 9b58272db07b82ceef6e8546d4363233cb69fed9 Mon Sep 17 00:00:00 2001 From: nicktrn <55853254+nicktrn@users.noreply.github.com> Date: Tue, 13 May 2025 02:08:38 +0100 Subject: [PATCH 10/14] remove redundant code --- packages/build/src/extensions/core/ffmpeg.ts | 39 +------------------- 1 file changed, 1 insertion(+), 38 deletions(-) diff --git a/packages/build/src/extensions/core/ffmpeg.ts b/packages/build/src/extensions/core/ffmpeg.ts index e70dc6329a..11e8c0c80a 100644 --- a/packages/build/src/extensions/core/ffmpeg.ts +++ b/packages/build/src/extensions/core/ffmpeg.ts @@ -36,7 +36,7 @@ export function ffmpeg(options: FfmpegOptions = {}): BuildExtension { // Use static build for version 7 or 7.x if (options.version === "7" || options.version?.startsWith("7.")) { context.addLayer({ - id: "ffmpeg7", + id: "ffmpeg", image: { instructions: [ // Install ffmpeg after checksum validation @@ -80,40 +80,3 @@ export function ffmpeg(options: FfmpegOptions = {}): BuildExtension { }, }; } - -/** - * Add ffmpeg 7.x to the build, and automatically set the FFMPEG_PATH and FFPROBE_PATH environment variables. - * This uses the static build from johnvansickle.com to install the latest 7.x version. - * - * @returns The build extension. - */ - -export function ffmpeg7(): BuildExtension { - return { - name: "ffmpeg7", - onBuildComplete(context) { - if (context.target === "dev") { - return; - } - - context.logger.debug("Adding ffmpeg 7"); - - context.addLayer({ - id: "ffmpeg7", - image: { - instructions:[ - "RUN apt-get update && apt-get install -y --no-install-recommends wget xz-utils && apt-get clean && rm -rf /var/lib/apt/lists/*", - "RUN wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz -O ffmpeg.tar.xz && tar xvf ffmpeg.tar.xz -C /usr/bin --strip-components=1 --no-anchored 'ffmpeg' 'ffprobe' && rm ffmpeg.tar.xz", - ], - }, - deploy: { - env: { - FFMPEG_PATH: "/usr/bin/ffmpeg", - FFPROBE_PATH: "/usr/bin/ffprobe", - }, - override: true, - } - }) - } - } -} \ No newline at end of file From e661dc1b7363a526ccbd630e75f1ad03c6047ae4 Mon Sep 17 00:00:00 2001 From: nicktrn <55853254+nicktrn@users.noreply.github.com> Date: Tue, 13 May 2025 02:08:45 +0100 Subject: [PATCH 11/14] add changeset --- .changeset/thick-bikes-laugh.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/thick-bikes-laugh.md diff --git a/.changeset/thick-bikes-laugh.md b/.changeset/thick-bikes-laugh.md new file mode 100644 index 0000000000..7166bfca64 --- /dev/null +++ b/.changeset/thick-bikes-laugh.md @@ -0,0 +1,5 @@ +--- +"@trigger.dev/build": patch +--- + +Add ffmpeg v7 support to existing extension: `ffmpeg({ version: "7" })` From 74cd317ae69c7453a22d3fa412ff00b402840b87 Mon Sep 17 00:00:00 2001 From: nicktrn <55853254+nicktrn@users.noreply.github.com> Date: Tue, 13 May 2025 02:14:08 +0100 Subject: [PATCH 12/14] mark fluent-ffmpeg as external --- packages/build/src/extensions/core/ffmpeg.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/build/src/extensions/core/ffmpeg.ts b/packages/build/src/extensions/core/ffmpeg.ts index 11e8c0c80a..32b75f7671 100644 --- a/packages/build/src/extensions/core/ffmpeg.ts +++ b/packages/build/src/extensions/core/ffmpeg.ts @@ -24,6 +24,13 @@ export type FfmpegOptions = { export function ffmpeg(options: FfmpegOptions = {}): BuildExtension { return { name: "ffmpeg", + externalsForTarget(target) { + if (target === "dev") { + return []; + } + + return ["fluent-ffmpeg"]; + }, onBuildComplete(context) { if (context.target === "dev") { return; From 4186bc1247b9cdd3e18944bbf436559871938550 Mon Sep 17 00:00:00 2001 From: nicktrn <55853254+nicktrn@users.noreply.github.com> Date: Tue, 13 May 2025 02:14:12 +0100 Subject: [PATCH 13/14] add docs --- docs/config/extensions/ffmpeg.mdx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/config/extensions/ffmpeg.mdx b/docs/config/extensions/ffmpeg.mdx index 390e2796f0..581970b411 100644 --- a/docs/config/extensions/ffmpeg.mdx +++ b/docs/config/extensions/ffmpeg.mdx @@ -19,7 +19,11 @@ export default defineConfig({ }); ``` -By default, this will install the version of `ffmpeg` that is available in the Debian package manager. If you need a specific version, you can pass in the version as an argument: +By default, this will install the version of `ffmpeg` that is available in the Debian package manager (via `apt`). + +## FFmpeg 7.x (static build) + +If you need FFmpeg 7.x, you can pass `{ version: "7" }` to the extension. This will install a static build of FFmpeg 7.x instead of using the Debian package: ```ts import { defineConfig } from "@trigger.dev/sdk/v3"; @@ -29,7 +33,7 @@ export default defineConfig({ project: "", // Your other config settings... build: { - extensions: [ffmpeg({ version: "6.0-4" })], + extensions: [ffmpeg({ version: "7" })], }, }); ``` From 2aa3ccd2f25d3529ed115ad568d44d8bcc430f75 Mon Sep 17 00:00:00 2001 From: nicktrn <55853254+nicktrn@users.noreply.github.com> Date: Tue, 13 May 2025 02:17:49 +0100 Subject: [PATCH 14/14] Revert "mark fluent-ffmpeg as external" This reverts commit 74cd317ae69c7453a22d3fa412ff00b402840b87. --- packages/build/src/extensions/core/ffmpeg.ts | 7 ------- 1 file changed, 7 deletions(-) diff --git a/packages/build/src/extensions/core/ffmpeg.ts b/packages/build/src/extensions/core/ffmpeg.ts index 32b75f7671..11e8c0c80a 100644 --- a/packages/build/src/extensions/core/ffmpeg.ts +++ b/packages/build/src/extensions/core/ffmpeg.ts @@ -24,13 +24,6 @@ export type FfmpegOptions = { export function ffmpeg(options: FfmpegOptions = {}): BuildExtension { return { name: "ffmpeg", - externalsForTarget(target) { - if (target === "dev") { - return []; - } - - return ["fluent-ffmpeg"]; - }, onBuildComplete(context) { if (context.target === "dev") { return;