mirror of
https://github.com/linuxserver/docker-ffmpeg.git
synced 2026-02-20 04:56:23 +08:00
Compare commits
96 Commits
7.1-cli-ls
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f35f0c9720 | ||
|
|
d424516bec | ||
|
|
7100fa33c6 | ||
|
|
7b414e7bd9 | ||
|
|
118ea9dee1 | ||
|
|
3d3a0f3fdf | ||
|
|
37bfd69cfb | ||
|
|
ab5fede4d2 | ||
|
|
c52f067a11 | ||
|
|
839170000d | ||
|
|
79cbc25e01 | ||
|
|
77ad03e76c | ||
|
|
237805303e | ||
|
|
c01a2f7787 | ||
|
|
5803a9b64f | ||
|
|
c6a0f2b929 | ||
|
|
91b626f2c2 | ||
|
|
80b1900f78 | ||
|
|
259227e5dd | ||
|
|
eee4a1436a | ||
|
|
33269ab474 | ||
|
|
306cf13333 | ||
|
|
2f3d26d118 | ||
|
|
1272de2b43 | ||
|
|
8492517284 | ||
|
|
289dae9395 | ||
|
|
15fadb5862 | ||
|
|
e7b350bddc | ||
|
|
f197ab858d | ||
|
|
4759516f0f | ||
|
|
ae0f517118 | ||
|
|
8f5d687dcb | ||
|
|
6aae044a04 | ||
|
|
7dfa233d6d | ||
|
|
7388bdf50b | ||
|
|
188c92bdaf | ||
|
|
28b3269bc9 | ||
|
|
b846a21cc9 | ||
|
|
eb0817433d | ||
|
|
5f93798531 | ||
|
|
a72a94cb41 | ||
|
|
ad4b9919af | ||
|
|
57996e79f4 | ||
|
|
772a3b66a0 | ||
|
|
1ae2b33b3a | ||
|
|
84b0fc67c6 | ||
|
|
e4e39e0ed6 | ||
|
|
bfc8160fb6 | ||
|
|
75cbcfc925 | ||
|
|
fd5a5b386d | ||
|
|
ac3554a86c | ||
|
|
cb233c8241 | ||
|
|
52ab84a072 | ||
|
|
70df6eb677 | ||
|
|
884b9c5b00 | ||
|
|
970a7d035c | ||
|
|
50dc5d8696 | ||
|
|
ccaf335ca8 | ||
|
|
07756e90ff | ||
|
|
b81ddb65b8 | ||
|
|
c38dac6d51 | ||
|
|
158a5b8f57 | ||
|
|
8b98868c40 | ||
|
|
2b5a969177 | ||
|
|
1f4153c29a | ||
|
|
161def8c4e | ||
|
|
3f0a626bce | ||
|
|
daf525ef35 | ||
|
|
23b4cea876 | ||
|
|
98a8c9aedd | ||
|
|
402bd7b486 | ||
|
|
87f4661467 | ||
|
|
3819b379f6 | ||
|
|
c3ce08ae34 | ||
|
|
314ce6a11f | ||
|
|
224fb37cb9 | ||
|
|
b6478ffcc4 | ||
|
|
363e904e38 | ||
|
|
17de168698 | ||
|
|
311f8b6e90 | ||
|
|
aedfa9f62c | ||
|
|
6198408c9a | ||
|
|
b93ae37877 | ||
|
|
ff419663fc | ||
|
|
89a77204b5 | ||
|
|
8751eb564a | ||
|
|
134a162732 | ||
|
|
bfa40dc2eb | ||
|
|
ca191ead02 | ||
|
|
60b97dd62e | ||
|
|
498763439e | ||
|
|
f10c7eadc7 | ||
|
|
2ca7ccc425 | ||
|
|
abb8c19e8a | ||
|
|
e79ff22f4e | ||
|
|
4761c8f632 |
0
.editorconfig
Executable file → Normal file
0
.editorconfig
Executable file → Normal file
2
.github/CONTRIBUTING.md
vendored
Executable file → Normal file
2
.github/CONTRIBUTING.md
vendored
Executable file → Normal file
@ -6,7 +6,7 @@
|
|||||||
* Read, and fill the Pull Request template
|
* Read, and fill the Pull Request template
|
||||||
* If this is a fix for a typo (in code, documentation, or the README) please file an issue and let us sort it out. We do not need a PR
|
* If this is a fix for a typo (in code, documentation, or the README) please file an issue and let us sort it out. We do not need a PR
|
||||||
* If the PR is addressing an existing issue include, closes #\<issue number>, in the body of the PR commit message
|
* If the PR is addressing an existing issue include, closes #\<issue number>, in the body of the PR commit message
|
||||||
* If you want to discuss changes, you can also bring it up in [#dev-talk](https://discordapp.com/channels/354974912613449730/757585807061155840) in our [Discord server](https://discord.gg/YWrKVTn)
|
* If you want to discuss changes, you can also bring it up in [#dev-talk](https://discordapp.com/channels/354974912613449730/757585807061155840) in our [Discord server](https://linuxserver.io/discord)
|
||||||
|
|
||||||
## Common files
|
## Common files
|
||||||
|
|
||||||
|
|||||||
2
.github/ISSUE_TEMPLATE/config.yml
vendored
Executable file → Normal file
2
.github/ISSUE_TEMPLATE/config.yml
vendored
Executable file → Normal file
@ -1,7 +1,7 @@
|
|||||||
blank_issues_enabled: false
|
blank_issues_enabled: false
|
||||||
contact_links:
|
contact_links:
|
||||||
- name: Discord chat support
|
- name: Discord chat support
|
||||||
url: https://discord.gg/YWrKVTn
|
url: https://linuxserver.io/discord
|
||||||
about: Realtime support / chat with the community and the team.
|
about: Realtime support / chat with the community and the team.
|
||||||
|
|
||||||
- name: Discourse discussion forum
|
- name: Discourse discussion forum
|
||||||
|
|||||||
0
.github/ISSUE_TEMPLATE/issue.bug.yml
vendored
Executable file → Normal file
0
.github/ISSUE_TEMPLATE/issue.bug.yml
vendored
Executable file → Normal file
0
.github/ISSUE_TEMPLATE/issue.feature.yml
vendored
Executable file → Normal file
0
.github/ISSUE_TEMPLATE/issue.feature.yml
vendored
Executable file → Normal file
0
.github/PULL_REQUEST_TEMPLATE.md
vendored
Executable file → Normal file
0
.github/PULL_REQUEST_TEMPLATE.md
vendored
Executable file → Normal file
3
.github/workflows/call_issue_pr_tracker.yml
vendored
Executable file → Normal file
3
.github/workflows/call_issue_pr_tracker.yml
vendored
Executable file → Normal file
@ -8,6 +8,9 @@ on:
|
|||||||
pull_request_review:
|
pull_request_review:
|
||||||
types: [submitted,edited,dismissed]
|
types: [submitted,edited,dismissed]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
manage-project:
|
manage-project:
|
||||||
permissions:
|
permissions:
|
||||||
|
|||||||
3
.github/workflows/call_issues_cron.yml
vendored
Executable file → Normal file
3
.github/workflows/call_issues_cron.yml
vendored
Executable file → Normal file
@ -4,6 +4,9 @@ on:
|
|||||||
- cron: '15 0 * * *'
|
- cron: '15 0 * * *'
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
stale:
|
stale:
|
||||||
permissions:
|
permissions:
|
||||||
|
|||||||
60
.github/workflows/external_trigger.yml
vendored
Executable file → Normal file
60
.github/workflows/external_trigger.yml
vendored
Executable file → Normal file
@ -3,6 +3,9 @@ name: External Trigger Main
|
|||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
external-trigger-master:
|
external-trigger-master:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@ -15,7 +18,10 @@ jobs:
|
|||||||
SKIP_EXTERNAL_TRIGGER: ${{ vars.SKIP_EXTERNAL_TRIGGER }}
|
SKIP_EXTERNAL_TRIGGER: ${{ vars.SKIP_EXTERNAL_TRIGGER }}
|
||||||
run: |
|
run: |
|
||||||
printf "# External trigger for docker-ffmpeg\n\n" >> $GITHUB_STEP_SUMMARY
|
printf "# External trigger for docker-ffmpeg\n\n" >> $GITHUB_STEP_SUMMARY
|
||||||
if grep -q "^ffmpeg_master" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
|
if grep -q "^ffmpeg_master_" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
|
||||||
|
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`ffmpeg_master_\`; will skip trigger if version matches." >> $GITHUB_STEP_SUMMARY
|
||||||
|
elif grep -q "^ffmpeg_master" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
|
||||||
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`ffmpeg_master\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
|
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`ffmpeg_master\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
|
||||||
exit 0
|
exit 0
|
||||||
@ -23,8 +29,13 @@ jobs:
|
|||||||
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
|
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "> External trigger running off of master branch. To disable this trigger, add \`ffmpeg_master\` into the Github organizational variable \`SKIP_EXTERNAL_TRIGGER\`." >> $GITHUB_STEP_SUMMARY
|
echo "> External trigger running off of master branch. To disable this trigger, add \`ffmpeg_master\` into the Github organizational variable \`SKIP_EXTERNAL_TRIGGER\`." >> $GITHUB_STEP_SUMMARY
|
||||||
printf "\n## Retrieving external version\n\n" >> $GITHUB_STEP_SUMMARY
|
printf "\n## Retrieving external version\n\n" >> $GITHUB_STEP_SUMMARY
|
||||||
EXT_RELEASE=$(echo 7.1-cli)
|
EXT_RELEASE=$(echo 8.0.1-cli)
|
||||||
echo "Type is \`custom_version_command\`" >> $GITHUB_STEP_SUMMARY
|
echo "Type is \`custom_version_command\`" >> $GITHUB_STEP_SUMMARY
|
||||||
|
if grep -q "^ffmpeg_master_${EXT_RELEASE}" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
|
||||||
|
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` matches current external release; skipping trigger." >> $GITHUB_STEP_SUMMARY
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then
|
if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then
|
||||||
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "> Can't retrieve external version, exiting" >> $GITHUB_STEP_SUMMARY
|
echo "> Can't retrieve external version, exiting" >> $GITHUB_STEP_SUMMARY
|
||||||
@ -35,8 +46,8 @@ jobs:
|
|||||||
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
|
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
EXT_RELEASE=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g')
|
EXT_RELEASE_SANITIZED=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g')
|
||||||
echo "External version: \`${EXT_RELEASE}\`" >> $GITHUB_STEP_SUMMARY
|
echo "Sanitized external version: \`${EXT_RELEASE_SANITIZED}\`" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "Retrieving last pushed version" >> $GITHUB_STEP_SUMMARY
|
echo "Retrieving last pushed version" >> $GITHUB_STEP_SUMMARY
|
||||||
image="linuxserver/ffmpeg"
|
image="linuxserver/ffmpeg"
|
||||||
tag="latest"
|
tag="latest"
|
||||||
@ -48,13 +59,30 @@ jobs:
|
|||||||
--header "Accept: application/vnd.oci.image.index.v1+json" \
|
--header "Accept: application/vnd.oci.image.index.v1+json" \
|
||||||
--header "Authorization: Bearer ${token}" \
|
--header "Authorization: Bearer ${token}" \
|
||||||
"https://ghcr.io/v2/${image}/manifests/${tag}")
|
"https://ghcr.io/v2/${image}/manifests/${tag}")
|
||||||
multidigest=$(jq -r ".manifests[] | select(.platform.architecture == \"amd64\").digest?" <<< "${multidigest}")
|
if jq -e '.layers // empty' <<< "${multidigest}" >/dev/null 2>&1; then
|
||||||
digest=$(curl -s \
|
# If there's a layer element it's a single-arch manifest so just get that digest
|
||||||
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
|
digest=$(jq -r '.config.digest' <<< "${multidigest}")
|
||||||
--header "Accept: application/vnd.oci.image.manifest.v1+json" \
|
else
|
||||||
--header "Authorization: Bearer ${token}" \
|
# Otherwise it's multi-arch or has manifest annotations
|
||||||
"https://ghcr.io/v2/${image}/manifests/${multidigest}" \
|
if jq -e '.manifests[]?.annotations // empty' <<< "${multidigest}" >/dev/null 2>&1; then
|
||||||
| jq -r '.config.digest')
|
# Check for manifest annotations and delete if found
|
||||||
|
multidigest=$(jq 'del(.manifests[] | select(.annotations))' <<< "${multidigest}")
|
||||||
|
fi
|
||||||
|
if [[ $(jq '.manifests | length' <<< "${multidigest}") -gt 1 ]]; then
|
||||||
|
# If there's still more than one digest, it's multi-arch
|
||||||
|
multidigest=$(jq -r ".manifests[] | select(.platform.architecture == \"amd64\").digest?" <<< "${multidigest}")
|
||||||
|
else
|
||||||
|
# Otherwise it's single arch
|
||||||
|
multidigest=$(jq -r ".manifests[].digest?" <<< "${multidigest}")
|
||||||
|
fi
|
||||||
|
if digest=$(curl -s \
|
||||||
|
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
|
||||||
|
--header "Accept: application/vnd.oci.image.manifest.v1+json" \
|
||||||
|
--header "Authorization: Bearer ${token}" \
|
||||||
|
"https://ghcr.io/v2/${image}/manifests/${multidigest}"); then
|
||||||
|
digest=$(jq -r '.config.digest' <<< "${digest}");
|
||||||
|
fi
|
||||||
|
fi
|
||||||
image_info=$(curl -sL \
|
image_info=$(curl -sL \
|
||||||
--header "Authorization: Bearer ${token}" \
|
--header "Authorization: Bearer ${token}" \
|
||||||
"https://ghcr.io/v2/${image}/blobs/${digest}")
|
"https://ghcr.io/v2/${image}/blobs/${digest}")
|
||||||
@ -75,8 +103,8 @@ jobs:
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo "Last pushed version: \`${IMAGE_VERSION}\`" >> $GITHUB_STEP_SUMMARY
|
echo "Last pushed version: \`${IMAGE_VERSION}\`" >> $GITHUB_STEP_SUMMARY
|
||||||
if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then
|
if [ "${EXT_RELEASE_SANITIZED}" == "${IMAGE_VERSION}" ]; then
|
||||||
echo "Version \`${EXT_RELEASE}\` already pushed, exiting" >> $GITHUB_STEP_SUMMARY
|
echo "Sanitized version \`${EXT_RELEASE_SANITIZED}\` already pushed, exiting" >> $GITHUB_STEP_SUMMARY
|
||||||
exit 0
|
exit 0
|
||||||
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-ffmpeg/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then
|
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-ffmpeg/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then
|
||||||
echo "New version \`${EXT_RELEASE}\` found; but there already seems to be an active build on Jenkins; exiting" >> $GITHUB_STEP_SUMMARY
|
echo "New version \`${EXT_RELEASE}\` found; but there already seems to be an active build on Jenkins; exiting" >> $GITHUB_STEP_SUMMARY
|
||||||
@ -91,8 +119,8 @@ jobs:
|
|||||||
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
|
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
|
||||||
else
|
else
|
||||||
printf "\n## Trigger new build\n\n" >> $GITHUB_STEP_SUMMARY
|
printf "\n## Trigger new build\n\n" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "New version \`${EXT_RELEASE}\` found; old version was \`${IMAGE_VERSION}\`. Triggering new build" >> $GITHUB_STEP_SUMMARY
|
echo "New sanitized version \`${EXT_RELEASE_SANITIZED}\` found; old version was \`${IMAGE_VERSION}\`. Triggering new build" >> $GITHUB_STEP_SUMMARY
|
||||||
if "${artifacts_found}" == "true" ]]; then
|
if [[ "${artifacts_found}" == "true" ]]; then
|
||||||
echo "All artifacts seem to be uploaded." >> $GITHUB_STEP_SUMMARY
|
echo "All artifacts seem to be uploaded." >> $GITHUB_STEP_SUMMARY
|
||||||
fi
|
fi
|
||||||
response=$(curl -iX POST \
|
response=$(curl -iX POST \
|
||||||
@ -111,7 +139,7 @@ jobs:
|
|||||||
--data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
|
--data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
|
||||||
--data-urlencode "Submit=Submit"
|
--data-urlencode "Submit=Submit"
|
||||||
echo "**** Notifying Discord ****"
|
echo "**** Notifying Discord ****"
|
||||||
TRIGGER_REASON="A version change was detected for ffmpeg tag latest. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE}"
|
TRIGGER_REASON="A version change was detected for ffmpeg tag latest. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE_SANITIZED}"
|
||||||
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
|
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
|
||||||
"description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}],
|
"description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}],
|
||||||
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
|
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
|
||||||
|
|||||||
3
.github/workflows/external_trigger_scheduler.yml
vendored
Executable file → Normal file
3
.github/workflows/external_trigger_scheduler.yml
vendored
Executable file → Normal file
@ -5,6 +5,9 @@ on:
|
|||||||
- cron: '1 * * * *'
|
- cron: '1 * * * *'
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
external-trigger-scheduler:
|
external-trigger-scheduler:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|||||||
6
.github/workflows/greetings.yml
vendored
Executable file → Normal file
6
.github/workflows/greetings.yml
vendored
Executable file → Normal file
@ -2,8 +2,14 @@ name: Greetings
|
|||||||
|
|
||||||
on: [pull_request_target, issues]
|
on: [pull_request_target, issues]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
greeting:
|
greeting:
|
||||||
|
permissions:
|
||||||
|
issues: write
|
||||||
|
pull-requests: write
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/first-interaction@v1
|
- uses: actions/first-interaction@v1
|
||||||
|
|||||||
30
.github/workflows/package_trigger_scheduler.yml
vendored
Executable file → Normal file
30
.github/workflows/package_trigger_scheduler.yml
vendored
Executable file → Normal file
@ -5,6 +5,9 @@ on:
|
|||||||
- cron: '59 21 * * 4'
|
- cron: '59 21 * * 4'
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
package-trigger-scheduler:
|
package-trigger-scheduler:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@ -27,9 +30,18 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
printf "\n## Evaluating \`%s\`\n\n" ${br} >> $GITHUB_STEP_SUMMARY
|
printf "\n## Evaluating \`%s\`\n\n" ${br} >> $GITHUB_STEP_SUMMARY
|
||||||
JENKINS_VARS=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-ffmpeg/${br}/jenkins-vars.yml)
|
JENKINS_VARS=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-ffmpeg/${br}/jenkins-vars.yml)
|
||||||
if [[ "${br}" == $(yq -r '.ls_branch' <<< "${JENKINS_VARS}") ]]; then
|
if ! curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-ffmpeg/${br}/Jenkinsfile >/dev/null 2>&1; then
|
||||||
|
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "> No Jenkinsfile found. Branch is either deprecated or is an early dev branch." >> $GITHUB_STEP_SUMMARY
|
||||||
|
skipped_branches="${skipped_branches}${br} "
|
||||||
|
elif [[ "${br}" == $(yq -r '.ls_branch' <<< "${JENKINS_VARS}") ]]; then
|
||||||
echo "Branch appears to be live; checking workflow." >> $GITHUB_STEP_SUMMARY
|
echo "Branch appears to be live; checking workflow." >> $GITHUB_STEP_SUMMARY
|
||||||
if [[ $(yq -r '.skip_package_check' <<< "${JENKINS_VARS}") == "true" ]]; then
|
README_VARS=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-ffmpeg/${br}/readme-vars.yml)
|
||||||
|
if [[ $(yq -r '.project_deprecation_status' <<< "${README_VARS}") == "true" ]]; then
|
||||||
|
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "> Branch appears to be deprecated; skipping trigger." >> $GITHUB_STEP_SUMMARY
|
||||||
|
skipped_branches="${skipped_branches}${br} "
|
||||||
|
elif [[ $(yq -r '.skip_package_check' <<< "${JENKINS_VARS}") == "true" ]]; then
|
||||||
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "> Skipping branch ${br} due to \`skip_package_check\` being set in \`jenkins-vars.yml\`." >> $GITHUB_STEP_SUMMARY
|
echo "> Skipping branch ${br} due to \`skip_package_check\` being set in \`jenkins-vars.yml\`." >> $GITHUB_STEP_SUMMARY
|
||||||
skipped_branches="${skipped_branches}${br} "
|
skipped_branches="${skipped_branches}${br} "
|
||||||
@ -37,7 +49,7 @@ jobs:
|
|||||||
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "> Github organizational variable \`SKIP_PACKAGE_TRIGGER\` contains \`ffmpeg_${br}\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
|
echo "> Github organizational variable \`SKIP_PACKAGE_TRIGGER\` contains \`ffmpeg_${br}\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
|
||||||
skipped_branches="${skipped_branches}${br} "
|
skipped_branches="${skipped_branches}${br} "
|
||||||
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-ffmpeg/job/${br}/lastBuild/api/json | jq -r '.building') == "true" ]; then
|
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-ffmpeg/job/${br}/lastBuild/api/json | jq -r '.building' 2>/dev/null) == "true" ]; then
|
||||||
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "> There already seems to be an active build on Jenkins; skipping package trigger for ${br}" >> $GITHUB_STEP_SUMMARY
|
echo "> There already seems to be an active build on Jenkins; skipping package trigger for ${br}" >> $GITHUB_STEP_SUMMARY
|
||||||
skipped_branches="${skipped_branches}${br} "
|
skipped_branches="${skipped_branches}${br} "
|
||||||
@ -49,6 +61,11 @@ jobs:
|
|||||||
response=$(curl -iX POST \
|
response=$(curl -iX POST \
|
||||||
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-ffmpeg/job/${br}/buildWithParameters?PACKAGE_CHECK=true \
|
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-ffmpeg/job/${br}/buildWithParameters?PACKAGE_CHECK=true \
|
||||||
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
|
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
|
||||||
|
if [[ -z "${response}" ]]; then
|
||||||
|
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "> Jenkins build could not be triggered. Skipping branch."
|
||||||
|
continue
|
||||||
|
fi
|
||||||
echo "Jenkins [job queue url](${response%$'\r'})" >> $GITHUB_STEP_SUMMARY
|
echo "Jenkins [job queue url](${response%$'\r'})" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY
|
echo "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY
|
||||||
sleep 10
|
sleep 10
|
||||||
@ -56,11 +73,14 @@ jobs:
|
|||||||
buildurl="${buildurl%$'\r'}"
|
buildurl="${buildurl%$'\r'}"
|
||||||
echo "Jenkins job [build url](${buildurl})" >> $GITHUB_STEP_SUMMARY
|
echo "Jenkins job [build url](${buildurl})" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "Attempting to change the Jenkins job description" >> $GITHUB_STEP_SUMMARY
|
echo "Attempting to change the Jenkins job description" >> $GITHUB_STEP_SUMMARY
|
||||||
curl -iX POST \
|
if ! curl -ifX POST \
|
||||||
"${buildurl}submitDescription" \
|
"${buildurl}submitDescription" \
|
||||||
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
|
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
|
||||||
--data-urlencode "description=GHA package trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
|
--data-urlencode "description=GHA package trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
|
||||||
--data-urlencode "Submit=Submit"
|
--data-urlencode "Submit=Submit"; then
|
||||||
|
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "> Unable to change the Jenkins job description."
|
||||||
|
fi
|
||||||
sleep 20
|
sleep 20
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
|
|||||||
0
.github/workflows/permissions.yml
vendored
Executable file → Normal file
0
.github/workflows/permissions.yml
vendored
Executable file → Normal file
95
Dockerfile
95
Dockerfile
@ -1,7 +1,7 @@
|
|||||||
# syntax=docker/dockerfile:1
|
# syntax=docker/dockerfile:1
|
||||||
|
|
||||||
# build stage
|
# build stage
|
||||||
FROM ghcr.io/linuxserver/baseimage-ubuntu:noble as buildstage
|
FROM ghcr.io/linuxserver/baseimage-ubuntu:noble AS buildstage
|
||||||
|
|
||||||
# set version label
|
# set version label
|
||||||
ARG FFMPEG_VERSION
|
ARG FFMPEG_VERSION
|
||||||
@ -10,56 +10,57 @@ ARG FFMPEG_VERSION
|
|||||||
ENV \
|
ENV \
|
||||||
DEBIAN_FRONTEND="noninteractive" \
|
DEBIAN_FRONTEND="noninteractive" \
|
||||||
MAKEFLAGS="-j4" \
|
MAKEFLAGS="-j4" \
|
||||||
|
CMAKE_POLICY_VERSION_MINIMUM="3.5" \
|
||||||
PATH="/root/.cargo/bin:${PATH}"
|
PATH="/root/.cargo/bin:${PATH}"
|
||||||
|
|
||||||
# versions
|
# versions
|
||||||
ENV \
|
ENV \
|
||||||
AOM=v3.11.0 \
|
AOM=v3.13.1 \
|
||||||
FDKAAC=2.0.3 \
|
FDKAAC=2.0.3 \
|
||||||
FFMPEG_HARD=7.1 \
|
FFMPEG_HARD=8.0.1 \
|
||||||
FONTCONFIG=2.15.0 \
|
FONTCONFIG=2.16.0 \
|
||||||
FREETYPE=2.13.3 \
|
FREETYPE=2.14.1 \
|
||||||
FRIBIDI=1.0.16 \
|
FRIBIDI=1.0.16 \
|
||||||
GMMLIB=22.5.2 \
|
GMMLIB=22.8.2 \
|
||||||
HARFBUZZ=10.1.0 \
|
HARFBUZZ=12.3.0 \
|
||||||
IHD=24.3.4 \
|
IHD=25.3.4 \
|
||||||
KVAZAAR=2.3.1 \
|
KVAZAAR=2.3.2 \
|
||||||
LAME=3.100 \
|
LAME=3.100 \
|
||||||
LIBASS=0.17.3 \
|
LIBASS=0.17.4 \
|
||||||
LIBDAV1D=1.5.0 \
|
LIBDAV1D=1.5.3 \
|
||||||
LIBDOVI=2.1.2 \
|
LIBDOVI=2.3.1 \
|
||||||
LIBDRM=2.4.123 \
|
LIBDRM=2.4.131 \
|
||||||
LIBGL=1.7.0 \
|
LIBGL=1.7.0 \
|
||||||
LIBLC3=1.1.1 \
|
LIBLC3=1.1.3 \
|
||||||
LIBMFX=22.5.4 \
|
LIBMFX=22.5.4 \
|
||||||
LIBPLACEBO=7.349.0 \
|
LIBPLACEBO=7.351.0 \
|
||||||
LIBPNG=1.6.44 \
|
LIBPNG=1.6.53 \
|
||||||
LIBVA=2.22.0 \
|
LIBVA=2.23.0 \
|
||||||
LIBVDPAU=1.5 \
|
LIBVDPAU=1.5 \
|
||||||
LIBVIDSTAB=1.1.1 \
|
LIBVIDSTAB=1.1.1 \
|
||||||
LIBVMAF=3.0.0 \
|
LIBVMAF=3.0.0 \
|
||||||
LIBVPL=2.13.0 \
|
LIBVPL=2.16.0 \
|
||||||
MESA=24.3.0 \
|
MESA=25.3.3 \
|
||||||
NVCODEC=n12.2.72.0 \
|
NVCODEC=n13.0.19.0 \
|
||||||
OGG=1.3.5 \
|
OGG=1.3.6 \
|
||||||
OPENCOREAMR=0.1.6 \
|
OPENCOREAMR=0.1.6 \
|
||||||
OPENJPEG=2.5.2 \
|
OPENJPEG=2.5.4 \
|
||||||
OPUS=1.5.2 \
|
OPUS=1.6 \
|
||||||
RAV1E=0.7.1 \
|
RAV1E=0.8.1 \
|
||||||
RIST=0.2.11 \
|
RIST=0.2.11 \
|
||||||
SHADERC=v2024.3 \
|
SHADERC=v2025.5 \
|
||||||
SRT=1.5.4 \
|
SRT=1.5.4 \
|
||||||
SVTAV1=2.3.0 \
|
SVTAV1=3.1.2 \
|
||||||
THEORA=1.1.1 \
|
THEORA=1.2.0 \
|
||||||
VORBIS=1.3.7 \
|
VORBIS=1.3.7 \
|
||||||
VPLGPURT=24.3.4 \
|
VPLGPURT=25.3.4 \
|
||||||
VPX=1.15.0 \
|
VPX=1.15.2 \
|
||||||
VULKANSDK=vulkan-sdk-1.3.296.0 \
|
VULKANSDK=vulkan-sdk-1.4.335.0 \
|
||||||
VVENC=1.12.1 \
|
VVENC=1.13.1 \
|
||||||
WEBP=1.4.0 \
|
WEBP=1.6.0 \
|
||||||
X265=4.1 \
|
X265=4.1 \
|
||||||
XVID=1.3.7 \
|
XVID=1.3.7 \
|
||||||
ZIMG=3.0.5 \
|
ZIMG=3.0.6 \
|
||||||
ZMQ=v4.3.5
|
ZMQ=v4.3.5
|
||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
@ -131,13 +132,13 @@ RUN \
|
|||||||
tar xf /tmp/rust.tar.gz -C /tmp/rust --strip-components=1 && \
|
tar xf /tmp/rust.tar.gz -C /tmp/rust --strip-components=1 && \
|
||||||
cd /tmp/rust && \
|
cd /tmp/rust && \
|
||||||
./install.sh && \
|
./install.sh && \
|
||||||
cargo install cargo-c cbindgen && \
|
cargo install bindgen-cli cargo-c cbindgen --locked && \
|
||||||
python3 -m venv /lsiopy && \
|
python3 -m venv /lsiopy && \
|
||||||
pip install -U --no-cache-dir \
|
pip install -U --no-cache-dir \
|
||||||
pip \
|
pip \
|
||||||
setuptools \
|
setuptools \
|
||||||
wheel && \
|
wheel && \
|
||||||
pip install --no-cache-dir cmake mako meson ninja packaging ply pyyaml
|
pip install --no-cache-dir cmake==3.31.6 mako meson ninja packaging ply pyyaml
|
||||||
|
|
||||||
# compile 3rd party libs
|
# compile 3rd party libs
|
||||||
RUN \
|
RUN \
|
||||||
@ -181,7 +182,7 @@ RUN \
|
|||||||
mkdir -p /tmp/ffnvcodec && \
|
mkdir -p /tmp/ffnvcodec && \
|
||||||
git clone \
|
git clone \
|
||||||
--branch ${NVCODEC} \
|
--branch ${NVCODEC} \
|
||||||
--depth 1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git \
|
--depth 1 https://github.com/FFmpeg/nv-codec-headers.git \
|
||||||
/tmp/ffnvcodec
|
/tmp/ffnvcodec
|
||||||
RUN \
|
RUN \
|
||||||
echo "**** compiling ffnvcodec ****" && \
|
echo "**** compiling ffnvcodec ****" && \
|
||||||
@ -206,8 +207,8 @@ RUN \
|
|||||||
echo "**** grabbing fontconfig ****" && \
|
echo "**** grabbing fontconfig ****" && \
|
||||||
mkdir -p /tmp/fontconfig && \
|
mkdir -p /tmp/fontconfig && \
|
||||||
curl -Lf \
|
curl -Lf \
|
||||||
https://www.freedesktop.org/software/fontconfig/release/fontconfig-${FONTCONFIG}.tar.gz | \
|
https://www.freedesktop.org/software/fontconfig/release/fontconfig-${FONTCONFIG}.tar.xz | \
|
||||||
tar -zx --strip-components=1 -C /tmp/fontconfig
|
tar -xJ --strip-components=1 -C /tmp/fontconfig
|
||||||
RUN \
|
RUN \
|
||||||
echo "**** compiling fontconfig ****" && \
|
echo "**** compiling fontconfig ****" && \
|
||||||
cd /tmp/fontconfig && \
|
cd /tmp/fontconfig && \
|
||||||
@ -691,16 +692,6 @@ RUN \
|
|||||||
RUN \
|
RUN \
|
||||||
echo "**** compiling theora ****" && \
|
echo "**** compiling theora ****" && \
|
||||||
cd /tmp/theora && \
|
cd /tmp/theora && \
|
||||||
cp \
|
|
||||||
/usr/share/automake-1.16/config.guess \
|
|
||||||
config.guess && \
|
|
||||||
cp \
|
|
||||||
/usr/share/automake-1.16/config.sub \
|
|
||||||
config.sub && \
|
|
||||||
curl -fL \
|
|
||||||
'https://gitlab.xiph.org/xiph/theora/-/commit/7288b539c52e99168488dc3a343845c9365617c8.diff' \
|
|
||||||
> png.patch && \
|
|
||||||
patch ./examples/png2theora.c < png.patch && \
|
|
||||||
./configure \
|
./configure \
|
||||||
--disable-static \
|
--disable-static \
|
||||||
--enable-shared && \
|
--enable-shared && \
|
||||||
@ -898,10 +889,11 @@ RUN \
|
|||||||
curl -Lf \
|
curl -Lf \
|
||||||
https://ffmpeg.org/releases/ffmpeg-${FFMPEG}.tar.bz2 | \
|
https://ffmpeg.org/releases/ffmpeg-${FFMPEG}.tar.bz2 | \
|
||||||
tar -jx --strip-components=1 -C /tmp/ffmpeg
|
tar -jx --strip-components=1 -C /tmp/ffmpeg
|
||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
echo "**** compiling ffmpeg ****" && \
|
echo "**** compiling ffmpeg ****" && \
|
||||||
cd /tmp/ffmpeg && \
|
cd /tmp/ffmpeg && \
|
||||||
./configure \
|
./configure \
|
||||||
--disable-debug \
|
--disable-debug \
|
||||||
--disable-doc \
|
--disable-doc \
|
||||||
--disable-ffplay \
|
--disable-ffplay \
|
||||||
@ -969,7 +961,6 @@ RUN \
|
|||||||
/buildout/usr/local/lib/libmfx-gen \
|
/buildout/usr/local/lib/libmfx-gen \
|
||||||
/buildout/usr/local/lib/mfx \
|
/buildout/usr/local/lib/mfx \
|
||||||
/buildout/usr/local/lib/x86_64-linux-gnu/dri \
|
/buildout/usr/local/lib/x86_64-linux-gnu/dri \
|
||||||
/buildout/usr/local/lib/x86_64-linux-gnu/vdpau \
|
|
||||||
/buildout/usr/local/share/vulkan \
|
/buildout/usr/local/share/vulkan \
|
||||||
/buildout/usr/share/fonts \
|
/buildout/usr/share/fonts \
|
||||||
/buildout/usr/share/libdrm \
|
/buildout/usr/share/libdrm \
|
||||||
@ -998,9 +989,6 @@ RUN \
|
|||||||
cp -a \
|
cp -a \
|
||||||
/usr/local/lib/x86_64-linux-gnu/dri/*.so \
|
/usr/local/lib/x86_64-linux-gnu/dri/*.so \
|
||||||
/buildout/usr/local/lib/x86_64-linux-gnu/dri/ && \
|
/buildout/usr/local/lib/x86_64-linux-gnu/dri/ && \
|
||||||
cp -a \
|
|
||||||
/usr/local/lib/x86_64-linux-gnu/vdpau/*.so \
|
|
||||||
/buildout/usr/local/lib/x86_64-linux-gnu/vdpau/ && \
|
|
||||||
cp -a \
|
cp -a \
|
||||||
/usr/lib/x86_64-linux-gnu/dri/i965* \
|
/usr/lib/x86_64-linux-gnu/dri/i965* \
|
||||||
/buildout/usr/local/lib/x86_64-linux-gnu/dri/ && \
|
/buildout/usr/local/lib/x86_64-linux-gnu/dri/ && \
|
||||||
@ -1068,6 +1056,7 @@ RUN \
|
|||||||
libxshmfence1 \
|
libxshmfence1 \
|
||||||
libxml2 \
|
libxml2 \
|
||||||
ocl-icd-libopencl1 && \
|
ocl-icd-libopencl1 && \
|
||||||
|
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
|
||||||
echo "**** clean up ****" && \
|
echo "**** clean up ****" && \
|
||||||
rm -rf \
|
rm -rf \
|
||||||
/var/lib/apt/lists/* \
|
/var/lib/apt/lists/* \
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
# syntax=docker/dockerfile:1
|
# syntax=docker/dockerfile:1
|
||||||
|
|
||||||
# build stage
|
# build stage
|
||||||
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm64v8-noble as buildstage
|
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm64v8-noble AS buildstage
|
||||||
|
|
||||||
# set version label
|
# set version label
|
||||||
ARG FFMPEG_VERSION
|
ARG FFMPEG_VERSION
|
||||||
@ -10,44 +10,46 @@ ARG FFMPEG_VERSION
|
|||||||
ENV \
|
ENV \
|
||||||
DEBIAN_FRONTEND="noninteractive" \
|
DEBIAN_FRONTEND="noninteractive" \
|
||||||
MAKEFLAGS="-j4" \
|
MAKEFLAGS="-j4" \
|
||||||
|
CMAKE_POLICY_VERSION_MINIMUM="3.5" \
|
||||||
PATH="/root/.cargo/bin:${PATH}"
|
PATH="/root/.cargo/bin:${PATH}"
|
||||||
|
|
||||||
# versions
|
# versions
|
||||||
ENV \
|
ENV \
|
||||||
AOM=v3.11.0 \
|
AOM=v3.13.1 \
|
||||||
FDKAAC=2.0.3 \
|
FDKAAC=2.0.3 \
|
||||||
FFMPEG_HARD=7.1 \
|
FFMPEG_HARD=8.0.1 \
|
||||||
FONTCONFIG=2.15.0 \
|
FONTCONFIG=2.16.0 \
|
||||||
FREETYPE=2.13.3 \
|
FREETYPE=2.14.1 \
|
||||||
FRIBIDI=1.0.16 \
|
FRIBIDI=1.0.16 \
|
||||||
HARFBUZZ=10.1.0 \
|
HARFBUZZ=12.3.0 \
|
||||||
KVAZAAR=2.3.1 \
|
KVAZAAR=2.3.2 \
|
||||||
LAME=3.100 \
|
LAME=3.100 \
|
||||||
LIBASS=0.17.3 \
|
LIBASS=0.17.4 \
|
||||||
LIBDAV1D=1.5.0 \
|
LIBDAV1D=1.5.3 \
|
||||||
LIBLC3=1.1.1 \
|
LIBDRM=2.4.131 \
|
||||||
LIBPNG=1.6.44 \
|
LIBLC3=1.1.3 \
|
||||||
LIBVA=2.22.0 \
|
LIBPNG=1.6.53 \
|
||||||
|
LIBVA=2.23.0 \
|
||||||
LIBVDPAU=1.5 \
|
LIBVDPAU=1.5 \
|
||||||
LIBVIDSTAB=1.1.1 \
|
LIBVIDSTAB=1.1.1 \
|
||||||
LIBVMAF=3.0.0 \
|
LIBVMAF=3.0.0 \
|
||||||
NVCODEC=n12.1.14.0 \
|
NVCODEC=n13.0.19.0 \
|
||||||
OGG=1.3.5 \
|
OGG=1.3.6 \
|
||||||
OPENCOREAMR=0.1.6 \
|
OPENCOREAMR=0.1.6 \
|
||||||
OPENJPEG=2.5.2 \
|
OPENJPEG=2.5.4 \
|
||||||
OPUS=1.5.2 \
|
OPUS=1.6 \
|
||||||
RAV1E=0.7.1 \
|
RAV1E=0.8.1 \
|
||||||
RIST=0.2.11 \
|
RIST=0.2.11 \
|
||||||
SRT=1.5.4 \
|
SRT=1.5.4 \
|
||||||
SVTAV1=2.3.0 \
|
SVTAV1=3.1.2 \
|
||||||
THEORA=1.1.1 \
|
THEORA=1.2.0 \
|
||||||
VORBIS=1.3.7 \
|
VORBIS=1.3.7 \
|
||||||
VPX=1.15.0 \
|
VPX=1.15.2 \
|
||||||
VVENC=1.12.1 \
|
VVENC=1.13.1 \
|
||||||
WEBP=1.4.0 \
|
WEBP=1.6.0 \
|
||||||
X265=4.1 \
|
X265=4.1 \
|
||||||
XVID=1.3.7 \
|
XVID=1.3.7 \
|
||||||
ZIMG=3.0.5 \
|
ZIMG=3.0.6 \
|
||||||
ZMQ=v4.3.5
|
ZMQ=v4.3.5
|
||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
@ -56,14 +58,13 @@ RUN \
|
|||||||
apt-get install -y \
|
apt-get install -y \
|
||||||
autoconf \
|
autoconf \
|
||||||
automake \
|
automake \
|
||||||
|
build-essential \
|
||||||
bzip2 \
|
bzip2 \
|
||||||
cmake \
|
cmake \
|
||||||
clang \
|
clang \
|
||||||
diffutils \
|
diffutils \
|
||||||
g++ \
|
g++ \
|
||||||
g++-12 \
|
|
||||||
gcc \
|
gcc \
|
||||||
gcc-12 \
|
|
||||||
git \
|
git \
|
||||||
gperf \
|
gperf \
|
||||||
libasound2-dev \
|
libasound2-dev \
|
||||||
@ -96,13 +97,13 @@ RUN \
|
|||||||
tar xf /tmp/rust.tar.gz -C /tmp/rust --strip-components=1 && \
|
tar xf /tmp/rust.tar.gz -C /tmp/rust --strip-components=1 && \
|
||||||
cd /tmp/rust && \
|
cd /tmp/rust && \
|
||||||
./install.sh && \
|
./install.sh && \
|
||||||
cargo install cargo-c && \
|
cargo install cargo-c --locked && \
|
||||||
python3 -m venv /lsiopy && \
|
python3 -m venv /lsiopy && \
|
||||||
pip install -U --no-cache-dir \
|
pip install -U --no-cache-dir \
|
||||||
pip \
|
pip \
|
||||||
setuptools \
|
setuptools \
|
||||||
wheel && \
|
wheel && \
|
||||||
pip install --no-cache-dir cmake meson ninja
|
pip install --no-cache-dir cmake==3.31.6 meson ninja
|
||||||
|
|
||||||
# compile 3rd party libs
|
# compile 3rd party libs
|
||||||
RUN \
|
RUN \
|
||||||
@ -146,7 +147,7 @@ RUN \
|
|||||||
mkdir -p /tmp/ffnvcodec && \
|
mkdir -p /tmp/ffnvcodec && \
|
||||||
git clone \
|
git clone \
|
||||||
--branch ${NVCODEC} \
|
--branch ${NVCODEC} \
|
||||||
--depth 1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git \
|
--depth 1 https://github.com/FFmpeg/nv-codec-headers.git \
|
||||||
/tmp/ffnvcodec
|
/tmp/ffnvcodec
|
||||||
RUN \
|
RUN \
|
||||||
echo "**** compiling ffnvcodec ****" && \
|
echo "**** compiling ffnvcodec ****" && \
|
||||||
@ -171,8 +172,8 @@ RUN \
|
|||||||
echo "**** grabbing fontconfig ****" && \
|
echo "**** grabbing fontconfig ****" && \
|
||||||
mkdir -p /tmp/fontconfig && \
|
mkdir -p /tmp/fontconfig && \
|
||||||
curl -Lf \
|
curl -Lf \
|
||||||
https://www.freedesktop.org/software/fontconfig/release/fontconfig-${FONTCONFIG}.tar.gz | \
|
https://www.freedesktop.org/software/fontconfig/release/fontconfig-${FONTCONFIG}.tar.xz | \
|
||||||
tar -zx --strip-components=1 -C /tmp/fontconfig
|
tar -xJ --strip-components=1 -C /tmp/fontconfig
|
||||||
RUN \
|
RUN \
|
||||||
echo "**** compiling fontconfig ****" && \
|
echo "**** compiling fontconfig ****" && \
|
||||||
cd /tmp/fontconfig && \
|
cd /tmp/fontconfig && \
|
||||||
@ -209,7 +210,7 @@ RUN \
|
|||||||
cd /tmp/harfbuzz && \
|
cd /tmp/harfbuzz && \
|
||||||
meson build && \
|
meson build && \
|
||||||
ninja -C build install && \
|
ninja -C build install && \
|
||||||
strip -d /usr/local/lib/libharfbuzz*.so
|
strip -d /usr/local/lib/aarch64-linux-gnu/libharfbuzz*.so
|
||||||
RUN \
|
RUN \
|
||||||
echo "**** grabbing kvazaar ****" && \
|
echo "**** grabbing kvazaar ****" && \
|
||||||
mkdir -p /tmp/kvazaar && \
|
mkdir -p /tmp/kvazaar && \
|
||||||
@ -277,6 +278,22 @@ RUN \
|
|||||||
cd /tmp/libdav1d/build && \
|
cd /tmp/libdav1d/build && \
|
||||||
meson setup .. && \
|
meson setup .. && \
|
||||||
ninja install
|
ninja install
|
||||||
|
RUN \
|
||||||
|
echo "**** grabbing libdrm ****" && \
|
||||||
|
mkdir -p /tmp/libdrm && \
|
||||||
|
curl -Lf \
|
||||||
|
https://dri.freedesktop.org/libdrm/libdrm-${LIBDRM}.tar.xz | \
|
||||||
|
tar -xJ --strip-components=1 -C /tmp/libdrm
|
||||||
|
RUN \
|
||||||
|
echo "**** compiling libdrm ****" && \
|
||||||
|
cd /tmp/libdrm && \
|
||||||
|
meson setup \
|
||||||
|
--prefix=/usr --libdir=/usr/local/lib/aarch64-linux-gnu \
|
||||||
|
-Dvalgrind=disabled \
|
||||||
|
. build && \
|
||||||
|
ninja -C build && \
|
||||||
|
ninja -C build install && \
|
||||||
|
strip -d /usr/local/lib/aarch64-linux-gnu/libdrm*.so
|
||||||
RUN \
|
RUN \
|
||||||
echo "**** grabbing liblc3 ****" && \
|
echo "**** grabbing liblc3 ****" && \
|
||||||
mkdir -p /tmp/liblc3 && \
|
mkdir -p /tmp/liblc3 && \
|
||||||
@ -380,7 +397,7 @@ RUN \
|
|||||||
echo "**** compiling rav1e ****" && \
|
echo "**** compiling rav1e ****" && \
|
||||||
cd /tmp/rav1e && \
|
cd /tmp/rav1e && \
|
||||||
cargo cinstall --release && \
|
cargo cinstall --release && \
|
||||||
strip -d /usr/local/lib/librav1e.so
|
strip -d /usr/local/lib/aarch64-linux-gnu/librav1e.so
|
||||||
RUN \
|
RUN \
|
||||||
echo "**** grabbing rist ****" && \
|
echo "**** grabbing rist ****" && \
|
||||||
mkdir -p /tmp/rist && \
|
mkdir -p /tmp/rist && \
|
||||||
@ -438,16 +455,6 @@ RUN \
|
|||||||
RUN \
|
RUN \
|
||||||
echo "**** compiling theora ****" && \
|
echo "**** compiling theora ****" && \
|
||||||
cd /tmp/theora && \
|
cd /tmp/theora && \
|
||||||
cp \
|
|
||||||
/usr/share/automake-1.16/config.guess \
|
|
||||||
config.guess && \
|
|
||||||
cp \
|
|
||||||
/usr/share/automake-1.16/config.sub \
|
|
||||||
config.sub && \
|
|
||||||
curl -fL \
|
|
||||||
'https://gitlab.xiph.org/xiph/theora/-/commit/7288b539c52e99168488dc3a343845c9365617c8.diff' \
|
|
||||||
> png.patch && \
|
|
||||||
patch ./examples/png2theora.c < png.patch && \
|
|
||||||
./configure \
|
./configure \
|
||||||
--disable-static \
|
--disable-static \
|
||||||
--enable-shared && \
|
--enable-shared && \
|
||||||
@ -514,7 +521,7 @@ RUN \
|
|||||||
RUN \
|
RUN \
|
||||||
echo "**** compiling vvenc ****" && \
|
echo "**** compiling vvenc ****" && \
|
||||||
cd /tmp/vvenc && \
|
cd /tmp/vvenc && \
|
||||||
CC=/usr/bin/gcc-12 CXX=/usr/bin/g++-12 make install install-prefix=/usr/local && \
|
make install install-prefix=/usr/local && \
|
||||||
strip -d /usr/local/lib/libvvenc.so
|
strip -d /usr/local/lib/libvvenc.so
|
||||||
RUN \
|
RUN \
|
||||||
echo "**** grabbing webp ****" && \
|
echo "**** grabbing webp ****" && \
|
||||||
@ -616,14 +623,14 @@ RUN \
|
|||||||
curl -Lf \
|
curl -Lf \
|
||||||
https://ffmpeg.org/releases/ffmpeg-${FFMPEG}.tar.bz2 | \
|
https://ffmpeg.org/releases/ffmpeg-${FFMPEG}.tar.bz2 | \
|
||||||
tar -jx --strip-components=1 -C /tmp/ffmpeg
|
tar -jx --strip-components=1 -C /tmp/ffmpeg
|
||||||
RUN \
|
|
||||||
echo "**** compiling ffmpeg ****" && \
|
RUN \
|
||||||
cd /tmp/ffmpeg && \
|
echo "**** compiling ffmpeg ****" && \
|
||||||
./configure \
|
cd /tmp/ffmpeg && \
|
||||||
|
./configure \
|
||||||
--disable-debug \
|
--disable-debug \
|
||||||
--disable-doc \
|
--disable-doc \
|
||||||
--disable-ffplay \
|
--disable-ffplay \
|
||||||
--disable-libdrm \
|
|
||||||
--enable-alsa \
|
--enable-alsa \
|
||||||
--enable-cuda-llvm \
|
--enable-cuda-llvm \
|
||||||
--enable-cuvid \
|
--enable-cuvid \
|
||||||
@ -678,7 +685,7 @@ RUN \
|
|||||||
mkdir -p \
|
mkdir -p \
|
||||||
/buildout/usr/local/bin \
|
/buildout/usr/local/bin \
|
||||||
/buildout/usr/local/etc/fonts \
|
/buildout/usr/local/etc/fonts \
|
||||||
/buildout/usr/local/lib \
|
/buildout/usr/local/lib/aarch64-linux-gnu \
|
||||||
/buildout/usr/share/fonts && \
|
/buildout/usr/share/fonts && \
|
||||||
cp \
|
cp \
|
||||||
/tmp/ffmpeg/ffmpeg \
|
/tmp/ffmpeg/ffmpeg \
|
||||||
@ -692,6 +699,9 @@ RUN \
|
|||||||
cp -a \
|
cp -a \
|
||||||
/usr/local/lib/lib*so* \
|
/usr/local/lib/lib*so* \
|
||||||
/buildout/usr/local/lib/ && \
|
/buildout/usr/local/lib/ && \
|
||||||
|
cp -a \
|
||||||
|
/usr/local/lib/aarch64-linux-gnu/lib*so* \
|
||||||
|
/buildout/usr/local/lib/aarch64-linux-gnu/ && \
|
||||||
cp -a \
|
cp -a \
|
||||||
/usr/share/fonts/* \
|
/usr/share/fonts/* \
|
||||||
/buildout/usr/share/fonts/
|
/buildout/usr/share/fonts/
|
||||||
@ -730,6 +740,7 @@ RUN \
|
|||||||
libxext6 \
|
libxext6 \
|
||||||
libxml2 \
|
libxml2 \
|
||||||
ocl-icd-libopencl1 && \
|
ocl-icd-libopencl1 && \
|
||||||
|
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
|
||||||
echo "**** clean up ****" && \
|
echo "**** clean up ****" && \
|
||||||
rm -rf \
|
rm -rf \
|
||||||
/var/lib/apt/lists/* \
|
/var/lib/apt/lists/* \
|
||||||
|
|||||||
170
Jenkinsfile
vendored
170
Jenkinsfile
vendored
@ -49,11 +49,23 @@ pipeline {
|
|||||||
steps{
|
steps{
|
||||||
echo "Running on node: ${NODE_NAME}"
|
echo "Running on node: ${NODE_NAME}"
|
||||||
sh '''#! /bin/bash
|
sh '''#! /bin/bash
|
||||||
containers=$(docker ps -aq)
|
echo "Pruning builder"
|
||||||
|
docker builder prune -f --builder container || :
|
||||||
|
containers=$(docker ps -q)
|
||||||
if [[ -n "${containers}" ]]; then
|
if [[ -n "${containers}" ]]; then
|
||||||
docker stop ${containers}
|
BUILDX_CONTAINER_ID=$(docker ps -qf 'name=buildx_buildkit')
|
||||||
|
for container in ${containers}; do
|
||||||
|
if [[ "${container}" == "${BUILDX_CONTAINER_ID}" ]]; then
|
||||||
|
echo "skipping buildx container in docker stop"
|
||||||
|
else
|
||||||
|
echo "Stopping container ${container}"
|
||||||
|
docker stop ${container}
|
||||||
|
fi
|
||||||
|
done
|
||||||
fi
|
fi
|
||||||
docker system prune -af --volumes || : '''
|
docker system prune -f --volumes || :
|
||||||
|
docker image prune -af || :
|
||||||
|
'''
|
||||||
script{
|
script{
|
||||||
env.EXIT_STATUS = ''
|
env.EXIT_STATUS = ''
|
||||||
env.LS_RELEASE = sh(
|
env.LS_RELEASE = sh(
|
||||||
@ -75,7 +87,11 @@ pipeline {
|
|||||||
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/'
|
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/'
|
||||||
env.PULL_REQUEST = env.CHANGE_ID
|
env.PULL_REQUEST = env.CHANGE_ID
|
||||||
env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/call_issue_pr_tracker.yml ./.github/workflows/call_issues_cron.yml ./.github/workflows/permissions.yml ./.github/workflows/external_trigger.yml'
|
env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/call_issue_pr_tracker.yml ./.github/workflows/call_issues_cron.yml ./.github/workflows/permissions.yml ./.github/workflows/external_trigger.yml'
|
||||||
|
if ( env.SYFT_IMAGE_TAG == null ) {
|
||||||
|
env.SYFT_IMAGE_TAG = 'latest'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
echo "Using syft image tag ${SYFT_IMAGE_TAG}"
|
||||||
sh '''#! /bin/bash
|
sh '''#! /bin/bash
|
||||||
echo "The default github branch detected as ${GH_DEFAULT_BRANCH}" '''
|
echo "The default github branch detected as ${GH_DEFAULT_BRANCH}" '''
|
||||||
script{
|
script{
|
||||||
@ -124,7 +140,7 @@ pipeline {
|
|||||||
steps{
|
steps{
|
||||||
script{
|
script{
|
||||||
env.EXT_RELEASE = sh(
|
env.EXT_RELEASE = sh(
|
||||||
script: ''' echo 7.1-cli ''',
|
script: ''' echo 8.0.1-cli ''',
|
||||||
returnStdout: true).trim()
|
returnStdout: true).trim()
|
||||||
env.RELEASE_LINK = 'custom_command'
|
env.RELEASE_LINK = 'custom_command'
|
||||||
}
|
}
|
||||||
@ -185,6 +201,7 @@ pipeline {
|
|||||||
env.META_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
env.META_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||||
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
|
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
|
||||||
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
|
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
|
||||||
|
env.CITEST_IMAGETAG = 'latest'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -210,6 +227,7 @@ pipeline {
|
|||||||
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
|
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
|
||||||
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/'
|
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/'
|
||||||
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
|
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
|
||||||
|
env.CITEST_IMAGETAG = 'develop'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -235,6 +253,7 @@ pipeline {
|
|||||||
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST
|
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST
|
||||||
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/'
|
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/'
|
||||||
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
|
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
|
||||||
|
env.CITEST_IMAGETAG = 'develop'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -257,7 +276,7 @@ pipeline {
|
|||||||
-v ${WORKSPACE}:/mnt \
|
-v ${WORKSPACE}:/mnt \
|
||||||
-e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \
|
-e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \
|
||||||
-e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \
|
-e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \
|
||||||
ghcr.io/linuxserver/baseimage-alpine:3.20 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
|
ghcr.io/linuxserver/baseimage-alpine:3.23 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
|
||||||
apk add --no-cache python3 && \
|
apk add --no-cache python3 && \
|
||||||
python3 -m venv /lsiopy && \
|
python3 -m venv /lsiopy && \
|
||||||
pip install --no-cache-dir -U pip && \
|
pip install --no-cache-dir -U pip && \
|
||||||
@ -503,9 +522,9 @@ pipeline {
|
|||||||
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \
|
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \
|
||||||
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \
|
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \
|
||||||
--label \"org.opencontainers.image.title=Ffmpeg\" \
|
--label \"org.opencontainers.image.title=Ffmpeg\" \
|
||||||
--label \"org.opencontainers.image.description=ffmpeg image by linuxserver.io\" \
|
--label \"org.opencontainers.image.description=A complete, cross-platform solution to record, convert and stream audio and video.\" \
|
||||||
--no-cache --pull -t ${IMAGE}:${META_TAG} --platform=linux/amd64 \
|
--no-cache --pull -t ${IMAGE}:${META_TAG} --platform=linux/amd64 \
|
||||||
--provenance=false --sbom=false --builder=container --load \
|
--provenance=true --sbom=true --builder=container --load \
|
||||||
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
|
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
|
||||||
sh '''#! /bin/bash
|
sh '''#! /bin/bash
|
||||||
set -e
|
set -e
|
||||||
@ -529,12 +548,17 @@ pipeline {
|
|||||||
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
|
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
|
||||||
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
|
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
|
||||||
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
|
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
|
||||||
|
|
||||||
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
|
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
|
||||||
|
declare -A pids
|
||||||
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
|
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
|
||||||
for i in "${CACHE[@]}"; do
|
for i in "${CACHE[@]}"; do
|
||||||
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
|
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
|
||||||
|
pids[$!]="$i"
|
||||||
|
done
|
||||||
|
for p in "${!pids[@]}"; do
|
||||||
|
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
|
||||||
done
|
done
|
||||||
wait
|
|
||||||
fi
|
fi
|
||||||
'''
|
'''
|
||||||
}
|
}
|
||||||
@ -567,9 +591,9 @@ pipeline {
|
|||||||
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \
|
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \
|
||||||
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \
|
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \
|
||||||
--label \"org.opencontainers.image.title=Ffmpeg\" \
|
--label \"org.opencontainers.image.title=Ffmpeg\" \
|
||||||
--label \"org.opencontainers.image.description=ffmpeg image by linuxserver.io\" \
|
--label \"org.opencontainers.image.description=A complete, cross-platform solution to record, convert and stream audio and video.\" \
|
||||||
--no-cache --pull -t ${IMAGE}:amd64-${META_TAG} --platform=linux/amd64 \
|
--no-cache --pull -t ${IMAGE}:amd64-${META_TAG} --platform=linux/amd64 \
|
||||||
--provenance=false --sbom=false --builder=container --load \
|
--provenance=true --sbom=true --builder=container --load \
|
||||||
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
|
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
|
||||||
sh '''#! /bin/bash
|
sh '''#! /bin/bash
|
||||||
set -e
|
set -e
|
||||||
@ -593,12 +617,17 @@ pipeline {
|
|||||||
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
|
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
|
||||||
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
|
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
|
||||||
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
|
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
|
||||||
|
|
||||||
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
|
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
|
||||||
|
declare -A pids
|
||||||
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
|
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
|
||||||
for i in "${CACHE[@]}"; do
|
for i in "${CACHE[@]}"; do
|
||||||
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
|
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
|
||||||
|
pids[$!]="$i"
|
||||||
|
done
|
||||||
|
for p in "${!pids[@]}"; do
|
||||||
|
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
|
||||||
done
|
done
|
||||||
wait
|
|
||||||
fi
|
fi
|
||||||
'''
|
'''
|
||||||
}
|
}
|
||||||
@ -624,9 +653,9 @@ pipeline {
|
|||||||
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \
|
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \
|
||||||
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \
|
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \
|
||||||
--label \"org.opencontainers.image.title=Ffmpeg\" \
|
--label \"org.opencontainers.image.title=Ffmpeg\" \
|
||||||
--label \"org.opencontainers.image.description=ffmpeg image by linuxserver.io\" \
|
--label \"org.opencontainers.image.description=A complete, cross-platform solution to record, convert and stream audio and video.\" \
|
||||||
--no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} --platform=linux/arm64 \
|
--no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} --platform=linux/arm64 \
|
||||||
--provenance=false --sbom=false --builder=container --load \
|
--provenance=true --sbom=true --builder=container --load \
|
||||||
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
|
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
|
||||||
sh '''#! /bin/bash
|
sh '''#! /bin/bash
|
||||||
set -e
|
set -e
|
||||||
@ -651,11 +680,15 @@ pipeline {
|
|||||||
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
|
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
|
||||||
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
|
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
|
||||||
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
|
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
|
||||||
|
declare -A pids
|
||||||
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
|
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
|
||||||
for i in "${CACHE[@]}"; do
|
for i in "${CACHE[@]}"; do
|
||||||
docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} &
|
docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} &
|
||||||
|
pids[$!]="$i"
|
||||||
|
done
|
||||||
|
for p in "${!pids[@]}"; do
|
||||||
|
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
|
||||||
done
|
done
|
||||||
wait
|
|
||||||
fi
|
fi
|
||||||
'''
|
'''
|
||||||
}
|
}
|
||||||
@ -665,7 +698,8 @@ pipeline {
|
|||||||
if [[ -n "${containers}" ]]; then
|
if [[ -n "${containers}" ]]; then
|
||||||
docker stop ${containers}
|
docker stop ${containers}
|
||||||
fi
|
fi
|
||||||
docker system prune -af --volumes || :
|
docker system prune -f --volumes || :
|
||||||
|
docker image prune -af || :
|
||||||
'''
|
'''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -691,7 +725,7 @@ pipeline {
|
|||||||
docker run --rm \
|
docker run --rm \
|
||||||
-v /var/run/docker.sock:/var/run/docker.sock:ro \
|
-v /var/run/docker.sock:/var/run/docker.sock:ro \
|
||||||
-v ${TEMPDIR}:/tmp \
|
-v ${TEMPDIR}:/tmp \
|
||||||
ghcr.io/anchore/syft:latest \
|
ghcr.io/anchore/syft:${SYFT_IMAGE_TAG} \
|
||||||
${LOCAL_CONTAINER} -o table=/tmp/package_versions.txt
|
${LOCAL_CONTAINER} -o table=/tmp/package_versions.txt
|
||||||
NEW_PACKAGE_TAG=$(md5sum ${TEMPDIR}/package_versions.txt | cut -c1-8 )
|
NEW_PACKAGE_TAG=$(md5sum ${TEMPDIR}/package_versions.txt | cut -c1-8 )
|
||||||
echo "Package tag sha from current packages in buit container is ${NEW_PACKAGE_TAG} comparing to old ${PACKAGE_TAG} from github"
|
echo "Package tag sha from current packages in buit container is ${NEW_PACKAGE_TAG} comparing to old ${PACKAGE_TAG} from github"
|
||||||
@ -778,7 +812,7 @@ pipeline {
|
|||||||
CI_DOCKERENV="LSIO_FIRST_PARTY=true"
|
CI_DOCKERENV="LSIO_FIRST_PARTY=true"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
docker pull ghcr.io/linuxserver/ci:latest
|
docker pull ghcr.io/linuxserver/ci:${CITEST_IMAGETAG}
|
||||||
if [ "${MULTIARCH}" == "true" ]; then
|
if [ "${MULTIARCH}" == "true" ]; then
|
||||||
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64
|
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64
|
||||||
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
|
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
|
||||||
@ -800,7 +834,10 @@ pipeline {
|
|||||||
-e WEB_AUTH=\"${CI_AUTH}\" \
|
-e WEB_AUTH=\"${CI_AUTH}\" \
|
||||||
-e WEB_PATH=\"${CI_WEBPATH}\" \
|
-e WEB_PATH=\"${CI_WEBPATH}\" \
|
||||||
-e NODE_NAME=\"${NODE_NAME}\" \
|
-e NODE_NAME=\"${NODE_NAME}\" \
|
||||||
-t ghcr.io/linuxserver/ci:latest \
|
-e SYFT_IMAGE_TAG=\"${CI_SYFT_IMAGE_TAG:-${SYFT_IMAGE_TAG}}\" \
|
||||||
|
-e COMMIT_SHA=\"${COMMIT_SHA}\" \
|
||||||
|
-e BUILD_NUMBER=\"${BUILD_NUMBER}\" \
|
||||||
|
-t ghcr.io/linuxserver/ci:${CITEST_IMAGETAG} \
|
||||||
python3 test_build.py'''
|
python3 test_build.py'''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -826,9 +863,11 @@ pipeline {
|
|||||||
CACHEIMAGE=${i}
|
CACHEIMAGE=${i}
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:latest -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
|
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:latest -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
|
||||||
|
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
|
||||||
if [ -n "${SEMVER}" ]; then
|
if [ -n "${SEMVER}" ]; then
|
||||||
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
|
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
|
||||||
|
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
'''
|
'''
|
||||||
@ -853,20 +892,27 @@ pipeline {
|
|||||||
CACHEIMAGE=${i}
|
CACHEIMAGE=${i}
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-latest -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
|
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-latest -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
|
||||||
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-latest -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
|
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
|
||||||
|
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-latest -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
|
||||||
|
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
|
||||||
if [ -n "${SEMVER}" ]; then
|
if [ -n "${SEMVER}" ]; then
|
||||||
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
|
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
|
||||||
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
|
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
|
||||||
|
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
|
||||||
|
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
|
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
|
||||||
docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest
|
docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest || \
|
||||||
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
|
||||||
|
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} || \
|
||||||
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
|
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
|
||||||
|
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} || \
|
||||||
|
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
|
||||||
if [ -n "${SEMVER}" ]; then
|
if [ -n "${SEMVER}" ]; then
|
||||||
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
|
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} || \
|
||||||
|
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
'''
|
'''
|
||||||
@ -884,23 +930,41 @@ pipeline {
|
|||||||
environment name: 'EXIT_STATUS', value: ''
|
environment name: 'EXIT_STATUS', value: ''
|
||||||
}
|
}
|
||||||
steps {
|
steps {
|
||||||
echo "Pushing New tag for current commit ${META_TAG}"
|
|
||||||
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
|
|
||||||
-d '{"tag":"'${META_TAG}'",\
|
|
||||||
"object": "'${COMMIT_SHA}'",\
|
|
||||||
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master",\
|
|
||||||
"type": "commit",\
|
|
||||||
"tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}' '''
|
|
||||||
echo "Pushing New release for Tag"
|
|
||||||
sh '''#! /bin/bash
|
sh '''#! /bin/bash
|
||||||
|
echo "Auto-generating release notes"
|
||||||
|
if [ "$(git tag --points-at HEAD)" != "" ]; then
|
||||||
|
echo "Existing tag points to current commit, suggesting no new LS changes"
|
||||||
|
AUTO_RELEASE_NOTES="No changes"
|
||||||
|
else
|
||||||
|
AUTO_RELEASE_NOTES=$(curl -fsL -H "Authorization: token ${GITHUB_TOKEN}" -H "Accept: application/vnd.github+json" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases/generate-notes \
|
||||||
|
-d '{"tag_name":"'${META_TAG}'",\
|
||||||
|
"target_commitish": "master"}' \
|
||||||
|
| jq -r '.body' | sed 's|## What.s Changed||')
|
||||||
|
fi
|
||||||
|
echo "Pushing New tag for current commit ${META_TAG}"
|
||||||
|
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
|
||||||
|
-d '{"tag":"'${META_TAG}'",\
|
||||||
|
"object": "'${COMMIT_SHA}'",\
|
||||||
|
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master",\
|
||||||
|
"type": "commit",\
|
||||||
|
"tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}'
|
||||||
|
echo "Pushing New release for Tag"
|
||||||
echo "Updating to ${EXT_RELEASE_CLEAN}" > releasebody.json
|
echo "Updating to ${EXT_RELEASE_CLEAN}" > releasebody.json
|
||||||
echo '{"tag_name":"'${META_TAG}'",\
|
jq -n \
|
||||||
"target_commitish": "master",\
|
--arg tag_name "$META_TAG" \
|
||||||
"name": "'${META_TAG}'",\
|
--arg target_commitish "master" \
|
||||||
"body": "**CI Report:**\\n\\n'${CI_URL:-N/A}'\\n\\n**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**Remote Changes:**\\n\\n' > start
|
--arg ci_url "${CI_URL:-N/A}" \
|
||||||
printf '","draft": false,"prerelease": false}' >> releasebody.json
|
--arg ls_notes "$AUTO_RELEASE_NOTES" \
|
||||||
paste -d'\\0' start releasebody.json > releasebody.json.done
|
--arg remote_notes "$(cat releasebody.json)" \
|
||||||
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done'''
|
'{
|
||||||
|
"tag_name": $tag_name,
|
||||||
|
"target_commitish": $target_commitish,
|
||||||
|
"name": $tag_name,
|
||||||
|
"body": ("**CI Report:**\\n\\n" + $ci_url + "\\n\\n**LinuxServer Changes:**\\n\\n" + $ls_notes + "\\n\\n**Remote Changes:**\\n\\n" + $remote_notes),
|
||||||
|
"draft": false,
|
||||||
|
"prerelease": false }' > releasebody.json.done
|
||||||
|
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done
|
||||||
|
'''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Add protection to the release branch
|
// Add protection to the release branch
|
||||||
@ -1075,12 +1139,22 @@ EOF
|
|||||||
}
|
}
|
||||||
cleanup {
|
cleanup {
|
||||||
sh '''#! /bin/bash
|
sh '''#! /bin/bash
|
||||||
echo "Performing docker system prune!!"
|
echo "Pruning builder!!"
|
||||||
containers=$(docker ps -aq)
|
docker builder prune -f --builder container || :
|
||||||
|
containers=$(docker ps -q)
|
||||||
if [[ -n "${containers}" ]]; then
|
if [[ -n "${containers}" ]]; then
|
||||||
docker stop ${containers}
|
BUILDX_CONTAINER_ID=$(docker ps -qf 'name=buildx_buildkit')
|
||||||
|
for container in ${containers}; do
|
||||||
|
if [[ "${container}" == "${BUILDX_CONTAINER_ID}" ]]; then
|
||||||
|
echo "skipping buildx container in docker stop"
|
||||||
|
else
|
||||||
|
echo "Stopping container ${container}"
|
||||||
|
docker stop ${container}
|
||||||
|
fi
|
||||||
|
done
|
||||||
fi
|
fi
|
||||||
docker system prune -af --volumes || :
|
docker system prune -f --volumes || :
|
||||||
|
docker image prune -af || :
|
||||||
'''
|
'''
|
||||||
cleanWs()
|
cleanWs()
|
||||||
}
|
}
|
||||||
|
|||||||
@ -183,6 +183,15 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
|
|||||||
|
|
||||||
## Versions
|
## Versions
|
||||||
|
|
||||||
|
* **06.01.26:** - Remove mpp from aarch64 build due to upstream DMCA removal. Bump harfbuzz, libdav1d, libdrm, libpng, libva, libvpl, mesa, opus, shaderc and vulkan-sdk.
|
||||||
|
* **01.12.25:** - Bump ffmpeg to 8.0.1.
|
||||||
|
* **19.11.25:** - Bump aom, freetype, harfbuzz, Intel drivers and libs, kvazaar, libdav1d, libdrm, mesa, mpp, openjpeg, shaderc, svt-av1 and vulkan-sdk.
|
||||||
|
* **23.08.25:** - Bump ffmpeg to 8.0. Bump harfbuzz, Intel drivers and libs, libdovi, libdrm, libpng, mesa, ogg, rav1e, shaderc, svt-av1, vulkan-sdk, webp and zimg.
|
||||||
|
* **06.08.25:** - Bump svt-av1.
|
||||||
|
* **07.06.25:** - Bump harfbuzz, libass, libdovi, libplacebo, libpng, mesa, rav1e, shaderc, libvpx and vulkan-sdk.
|
||||||
|
* **04.06.25:** - Add libdrm and rkmpp to arm64 image.
|
||||||
|
* **21.04.25:** - Bump aom, Intel drivers and libs, harfbuzz, mesa, svt-av1, libvpx, libtheora, vulkan-sdk and vvenc.
|
||||||
|
* **07.03.25:** - Bump ffmpeg to 7.1.1, Bump aom, fontconfig, Intel drivers and libs, harfbuzz, libdav1d, libdovi, libdrm, liblc3, libpng, mesa, openjpeg, shaderc, svt-av1, vulkan-sdk, vvenc and webp.
|
||||||
* **26.11.24:** - Bump libaom, mesa, rist, srt and libx265.
|
* **26.11.24:** - Bump libaom, mesa, rist, srt and libx265.
|
||||||
* **07.11.24:** - Bump harfbuzz, Intel drivers and libs, libdav1d, mesa, svtav1, vpx, vulkan sdk and vvenc.
|
* **07.11.24:** - Bump harfbuzz, Intel drivers and libs, libdav1d, mesa, svtav1, vpx, vulkan sdk and vvenc.
|
||||||
* **05.10.24:** - Add support for libvvenc on aarch64. Bump mesa.
|
* **05.10.24:** - Add support for libvvenc on aarch64. Bump mesa.
|
||||||
|
|||||||
@ -3,11 +3,10 @@
|
|||||||
# jenkins variables
|
# jenkins variables
|
||||||
project_name: docker-ffmpeg
|
project_name: docker-ffmpeg
|
||||||
external_type: na
|
external_type: na
|
||||||
custom_version_command: "echo 7.1-cli"
|
custom_version_command: "echo 8.0.1-cli"
|
||||||
release_type: stable
|
release_type: stable
|
||||||
release_tag: latest
|
release_tag: latest
|
||||||
ls_branch: master
|
ls_branch: master
|
||||||
build_armhf: false
|
|
||||||
repo_vars:
|
repo_vars:
|
||||||
- BUILD_VERSION_ARG = 'FFMPEG_VERSION'
|
- BUILD_VERSION_ARG = 'FFMPEG_VERSION'
|
||||||
- LS_USER = 'linuxserver'
|
- LS_USER = 'linuxserver'
|
||||||
|
|||||||
@ -1,109 +1,109 @@
|
|||||||
NAME VERSION TYPE
|
NAME VERSION TYPE
|
||||||
adduser 3.137ubuntu1 deb
|
adduser 3.137ubuntu1 deb
|
||||||
alsa-topology-conf 1.2.5.1-2 deb
|
alsa-topology-conf 1.2.5.1-2 deb
|
||||||
alsa-ucm-conf 1.2.10-1ubuntu5.3 deb
|
alsa-ucm-conf 1.2.10-1ubuntu5.9 deb
|
||||||
apt 2.7.14build2 deb
|
apt 2.8.3 deb
|
||||||
apt-utils 2.7.14build2 deb
|
apt-utils 2.8.3 deb
|
||||||
base-files 13ubuntu10.1 deb
|
base-files 13ubuntu10.4 deb
|
||||||
base-passwd 3.6.3build1 deb
|
base-passwd 3.6.3build1 deb
|
||||||
bash 5.2.21-2ubuntu4 deb
|
bash 5.2.21-2ubuntu4 deb
|
||||||
bsdutils 1:2.39.3-9ubuntu6.1 deb
|
bsdutils 1:2.39.3-9ubuntu6.4 deb
|
||||||
ca-certificates 20240203 deb
|
ca-certificates 20240203 deb
|
||||||
catatonit 0.1.7-1 deb
|
catatonit 0.1.7-1 deb
|
||||||
coreutils 9.4-3ubuntu6 deb
|
coreutils 9.4-3ubuntu6.1 deb
|
||||||
cron 3.0pl1-184ubuntu2 deb
|
cron 3.0pl1-184ubuntu2 deb
|
||||||
cron-daemon-common 3.0pl1-184ubuntu2 deb
|
cron-daemon-common 3.0pl1-184ubuntu2 deb
|
||||||
curl 8.5.0-2ubuntu10.4 deb
|
curl 8.5.0-2ubuntu10.6 deb
|
||||||
dash 0.5.12-6ubuntu5 deb
|
dash 0.5.12-6ubuntu5 deb
|
||||||
debconf 1.5.86ubuntu1 deb
|
debconf 1.5.86ubuntu1 deb
|
||||||
debianutils 5.17build1 deb
|
debianutils 5.17build1 deb
|
||||||
diffutils 1:3.10-1build1 deb
|
diffutils 1:3.10-1build1 deb
|
||||||
dirmngr 2.4.4-2ubuntu17 deb
|
dirmngr 2.4.4-2ubuntu17.4 deb
|
||||||
dpkg 1.22.6ubuntu6.1 deb
|
dpkg 1.22.6ubuntu6.5 deb
|
||||||
e2fsprogs 1.47.0-2.4~exp1ubuntu4.1 deb
|
e2fsprogs 1.47.0-2.4~exp1ubuntu4.1 deb
|
||||||
findutils 4.9.0-5build1 deb
|
findutils 4.9.0-5build1 deb
|
||||||
gcc-14-base 14.2.0-4ubuntu2~24.04 deb
|
gcc-14-base 14.2.0-4ubuntu2~24.04 deb
|
||||||
gnupg 2.4.4-2ubuntu17 deb
|
gnupg 2.4.4-2ubuntu17.4 deb
|
||||||
gnupg-l10n 2.4.4-2ubuntu17 deb
|
gnupg-l10n 2.4.4-2ubuntu17.4 deb
|
||||||
gnupg-utils 2.4.4-2ubuntu17 deb
|
gnupg-utils 2.4.4-2ubuntu17.4 deb
|
||||||
gpg 2.4.4-2ubuntu17 deb
|
gpg 2.4.4-2ubuntu17.4 deb
|
||||||
gpg-agent 2.4.4-2ubuntu17 deb
|
gpg-agent 2.4.4-2ubuntu17.4 deb
|
||||||
gpg-wks-client 2.4.4-2ubuntu17 deb
|
gpg-wks-client 2.4.4-2ubuntu17.4 deb
|
||||||
gpgconf 2.4.4-2ubuntu17 deb
|
gpgconf 2.4.4-2ubuntu17.4 deb
|
||||||
gpgsm 2.4.4-2ubuntu17 deb
|
gpgsm 2.4.4-2ubuntu17.4 deb
|
||||||
gpgv 2.4.4-2ubuntu17 deb
|
gpgv 2.4.4-2ubuntu17.4 deb
|
||||||
grep 3.11-4build1 deb
|
grep 3.11-4build1 deb
|
||||||
gzip 1.12-1ubuntu3 deb
|
gzip 1.12-1ubuntu3.1 deb
|
||||||
hostname 3.23+nmu2ubuntu2 deb
|
hostname 3.23+nmu2ubuntu2 deb
|
||||||
init-system-helpers 1.66ubuntu1 deb
|
init-system-helpers 1.66ubuntu1 deb
|
||||||
jq 1.7.1-3build1 deb
|
jq 1.7.1-3ubuntu0.24.04.1 deb
|
||||||
keyboxd 2.4.4-2ubuntu17 deb
|
keyboxd 2.4.4-2ubuntu17.4 deb
|
||||||
krb5-locales 1.20.1-6ubuntu2.1 deb
|
krb5-locales 1.20.1-6ubuntu2.6 deb
|
||||||
libacl1 2.3.2-1build1 deb
|
libacl1 2.3.2-1build1.1 deb
|
||||||
libapt-pkg6.0t64 2.7.14build2 deb
|
libapt-pkg6.0t64 2.8.3 deb
|
||||||
libasound2-data 1.2.11-1build2 deb
|
libasound2-data 1.2.11-1ubuntu0.1 deb
|
||||||
libasound2t64 1.2.11-1build2 deb
|
libasound2t64 1.2.11-1ubuntu0.1 deb
|
||||||
libassuan0 2.5.6-1build1 deb
|
libassuan0 2.5.6-1build1 deb
|
||||||
libattr1 1:2.5.2-1build1 deb
|
libattr1 1:2.5.2-1build1.1 deb
|
||||||
libaudit-common 1:3.1.2-2.1build1 deb
|
libaudit-common 1:3.1.2-2.1build1.1 deb
|
||||||
libaudit1 1:3.1.2-2.1build1 deb
|
libaudit1 1:3.1.2-2.1build1.1 deb
|
||||||
libblkid1 2.39.3-9ubuntu6.1 deb
|
libblkid1 2.39.3-9ubuntu6.4 deb
|
||||||
libbrotli1 1.1.0-2build2 deb
|
libbrotli1 1.1.0-2build2 deb
|
||||||
libbsd0 0.12.1-1build1 deb
|
libbsd0 0.12.1-1build1.1 deb
|
||||||
libbz2-1.0 1.0.8-5.1build0.1 deb
|
libbz2-1.0 1.0.8-5.1build0.1 deb
|
||||||
libc-bin 2.39-0ubuntu8.3 deb
|
libc-bin 2.39-0ubuntu8.7 deb
|
||||||
libc6 2.39-0ubuntu8.3 deb
|
libc6 2.39-0ubuntu8.7 deb
|
||||||
libcap-ng0 0.8.4-2build2 deb
|
libcap-ng0 0.8.4-2build2 deb
|
||||||
libcap2 1:2.66-5ubuntu2 deb
|
libcap2 1:2.66-5ubuntu2.2 deb
|
||||||
libcom-err2 1.47.0-2.4~exp1ubuntu4.1 deb
|
libcom-err2 1.47.0-2.4~exp1ubuntu4.1 deb
|
||||||
libcrypt1 1:4.4.36-4build1 deb
|
libcrypt1 1:4.4.36-4build1 deb
|
||||||
libcurl4t64 8.5.0-2ubuntu10.4 deb
|
libcurl4t64 8.5.0-2ubuntu10.6 deb
|
||||||
libdb5.3t64 5.3.28+dfsg2-7 deb
|
libdb5.3t64 5.3.28+dfsg2-7 deb
|
||||||
libdebconfclient0 0.271ubuntu3 deb
|
libdebconfclient0 0.271ubuntu3 deb
|
||||||
libedit2 3.1-20230828-1build1 deb
|
libedit2 3.1-20230828-1build1 deb
|
||||||
libelf1t64 0.190-1.1build4 deb
|
libelf1t64 0.190-1.1ubuntu0.1 deb
|
||||||
libexpat1 2.6.1-2ubuntu0.1 deb
|
libexpat1 2.6.1-2ubuntu0.3 deb
|
||||||
libext2fs2t64 1.47.0-2.4~exp1ubuntu4.1 deb
|
libext2fs2t64 1.47.0-2.4~exp1ubuntu4.1 deb
|
||||||
libffi8 3.4.6-1build1 deb
|
libffi8 3.4.6-1build1 deb
|
||||||
libgcc-s1 14.2.0-4ubuntu2~24.04 deb
|
libgcc-s1 14.2.0-4ubuntu2~24.04 deb
|
||||||
libgcrypt20 1.10.3-2build1 deb
|
libgcrypt20 1.10.3-2build1 deb
|
||||||
libglib2.0-0t64 2.80.0-6ubuntu3.2 deb
|
libglib2.0-0t64 2.80.0-6ubuntu3.8 deb
|
||||||
libglib2.0-data 2.80.0-6ubuntu3.2 deb
|
libglib2.0-data 2.80.0-6ubuntu3.8 deb
|
||||||
libgmp10 2:6.3.0+dfsg-2ubuntu6 deb
|
libgmp10 2:6.3.0+dfsg-2ubuntu6.1 deb
|
||||||
libgnutls30t64 3.8.3-1.1ubuntu3.2 deb
|
libgnutls30t64 3.8.3-1.1ubuntu3.4 deb
|
||||||
libgomp1 14.2.0-4ubuntu2~24.04 deb
|
libgomp1 14.2.0-4ubuntu2~24.04 deb
|
||||||
libgpg-error0 1.47-3build2 deb
|
libgpg-error0 1.47-3build2.1 deb
|
||||||
libgssapi-krb5-2 1.20.1-6ubuntu2.1 deb
|
libgssapi-krb5-2 1.20.1-6ubuntu2.6 deb
|
||||||
libhogweed6t64 3.9.1-2.2build1.1 deb
|
libhogweed6t64 3.9.1-2.2build1.1 deb
|
||||||
libicu74 74.2-1ubuntu3.1 deb
|
libicu74 74.2-1ubuntu3.1 deb
|
||||||
libidn2-0 2.3.7-2build1 deb
|
libidn2-0 2.3.7-2build1.1 deb
|
||||||
libjpeg-turbo8 2.1.5-2ubuntu2 deb
|
libjpeg-turbo8 2.1.5-2ubuntu2 deb
|
||||||
libjpeg8 8c-2ubuntu11 deb
|
libjpeg8 8c-2ubuntu11 deb
|
||||||
libjq1 1.7.1-3build1 deb
|
libjq1 1.7.1-3ubuntu0.24.04.1 deb
|
||||||
libk5crypto3 1.20.1-6ubuntu2.1 deb
|
libk5crypto3 1.20.1-6ubuntu2.6 deb
|
||||||
libkeyutils1 1.6.3-3build1 deb
|
libkeyutils1 1.6.3-3build1 deb
|
||||||
libkrb5-3 1.20.1-6ubuntu2.1 deb
|
libkrb5-3 1.20.1-6ubuntu2.6 deb
|
||||||
libkrb5support0 1.20.1-6ubuntu2.1 deb
|
libkrb5support0 1.20.1-6ubuntu2.6 deb
|
||||||
libksba8 1.6.6-1build1 deb
|
libksba8 1.6.6-1build1 deb
|
||||||
libldap-common 2.6.7+dfsg-1~exp1ubuntu8 deb
|
libldap-common 2.6.10+dfsg-0ubuntu0.24.04.1 deb
|
||||||
libldap2 2.6.7+dfsg-1~exp1ubuntu8 deb
|
libldap2 2.6.10+dfsg-0ubuntu0.24.04.1 deb
|
||||||
libllvm18 1:18.1.3-1ubuntu1 deb
|
libllvm18 1:18.1.3-1ubuntu1 deb
|
||||||
liblz4-1 1.9.4-1build1.1 deb
|
liblz4-1 1.9.4-1build1.1 deb
|
||||||
liblzma5 5.6.1+really5.4.5-1build0.1 deb
|
liblzma5 5.6.1+really5.4.5-1ubuntu0.2 deb
|
||||||
libmd0 1.1.0-2build1 deb
|
libmd0 1.1.0-2build1.1 deb
|
||||||
libmount1 2.39.3-9ubuntu6.1 deb
|
libmount1 2.39.3-9ubuntu6.4 deb
|
||||||
libncursesw6 6.4+20240113-1ubuntu2 deb
|
libncursesw6 6.4+20240113-1ubuntu2 deb
|
||||||
libnettle8t64 3.9.1-2.2build1.1 deb
|
libnettle8t64 3.9.1-2.2build1.1 deb
|
||||||
libnghttp2-14 1.59.0-1ubuntu0.1 deb
|
libnghttp2-14 1.59.0-1ubuntu0.2 deb
|
||||||
libnpth0t64 1.6-3.1build1 deb
|
libnpth0t64 1.6-3.1build1 deb
|
||||||
libonig5 6.9.9-1build1 deb
|
libonig5 6.9.9-1build1 deb
|
||||||
libp11-kit0 0.25.3-4ubuntu2.1 deb
|
libp11-kit0 0.25.3-4ubuntu2.1 deb
|
||||||
libpam-modules 1.5.3-5ubuntu5.1 deb
|
libpam-modules 1.5.3-5ubuntu5.5 deb
|
||||||
libpam-modules-bin 1.5.3-5ubuntu5.1 deb
|
libpam-modules-bin 1.5.3-5ubuntu5.5 deb
|
||||||
libpam-runtime 1.5.3-5ubuntu5.1 deb
|
libpam-runtime 1.5.3-5ubuntu5.5 deb
|
||||||
libpam0g 1.5.3-5ubuntu5.1 deb
|
libpam0g 1.5.3-5ubuntu5.5 deb
|
||||||
libpciaccess0 0.17-3build1 deb
|
libpciaccess0 0.17-3ubuntu0.24.04.2 deb
|
||||||
libpcre2-8-0 10.42-4ubuntu2 deb
|
libpcre2-8-0 10.42-4ubuntu2.1 deb
|
||||||
libproc2-0 2:4.0.4-4ubuntu3.2 deb
|
libproc2-0 2:4.0.4-4ubuntu3.2 deb
|
||||||
libpsl5t64 0.21.2-1.1build1 deb
|
libpsl5t64 0.21.2-1.1build1 deb
|
||||||
libreadline8t64 8.2-4build1 deb
|
libreadline8t64 8.2-4build1 deb
|
||||||
@ -112,22 +112,22 @@ libsasl2-2 2.1.28+dfsg1-5ubuntu3.1 deb
|
|||||||
libsasl2-modules 2.1.28+dfsg1-5ubuntu3.1 deb
|
libsasl2-modules 2.1.28+dfsg1-5ubuntu3.1 deb
|
||||||
libsasl2-modules-db 2.1.28+dfsg1-5ubuntu3.1 deb
|
libsasl2-modules-db 2.1.28+dfsg1-5ubuntu3.1 deb
|
||||||
libseccomp2 2.5.5-1ubuntu3.1 deb
|
libseccomp2 2.5.5-1ubuntu3.1 deb
|
||||||
libselinux1 3.5-2ubuntu2 deb
|
libselinux1 3.5-2ubuntu2.1 deb
|
||||||
libsemanage-common 3.5-1build5 deb
|
libsemanage-common 3.5-1build5 deb
|
||||||
libsemanage2 3.5-1build5 deb
|
libsemanage2 3.5-1build5 deb
|
||||||
libsepol2 3.5-2build1 deb
|
libsepol2 3.5-2build1 deb
|
||||||
libsmartcols1 2.39.3-9ubuntu6.1 deb
|
libsmartcols1 2.39.3-9ubuntu6.4 deb
|
||||||
libsqlite3-0 3.45.1-1ubuntu2 deb
|
libsqlite3-0 3.45.1-1ubuntu2.5 deb
|
||||||
libss2 1.47.0-2.4~exp1ubuntu4.1 deb
|
libss2 1.47.0-2.4~exp1ubuntu4.1 deb
|
||||||
libssh-4 0.10.6-2build2 deb
|
libssh-4 0.10.6-2ubuntu0.2 deb
|
||||||
libssl3t64 3.0.13-0ubuntu3.4 deb
|
libssl3t64 3.0.13-0ubuntu3.7 deb
|
||||||
libstdc++6 14.2.0-4ubuntu2~24.04 deb
|
libstdc++6 14.2.0-4ubuntu2~24.04 deb
|
||||||
libsystemd0 255.4-1ubuntu8.4 deb
|
libsystemd0 255.4-1ubuntu8.12 deb
|
||||||
libtasn1-6 4.19.0-3build1 deb
|
libtasn1-6 4.19.0-3ubuntu0.24.04.2 deb
|
||||||
libtinfo6 6.4+20240113-1ubuntu2 deb
|
libtinfo6 6.4+20240113-1ubuntu2 deb
|
||||||
libudev1 255.4-1ubuntu8.4 deb
|
libudev1 255.4-1ubuntu8.12 deb
|
||||||
libunistring5 1.1-2build1 deb
|
libunistring5 1.1-2build1.1 deb
|
||||||
libuuid1 2.39.3-9ubuntu6.1 deb
|
libuuid1 2.39.3-9ubuntu6.4 deb
|
||||||
libv4l-0t64 1.26.1-4build3 deb
|
libv4l-0t64 1.26.1-4build3 deb
|
||||||
libv4lconvert0t64 1.26.1-4build3 deb
|
libv4lconvert0t64 1.26.1-4build3 deb
|
||||||
libwayland-client0 1.22.0-2.1build1 deb
|
libwayland-client0 1.22.0-2.1build1 deb
|
||||||
@ -147,22 +147,22 @@ libxcb1 1.15-1ubuntu2 deb
|
|||||||
libxdmcp6 1:1.1.3-0ubuntu6 deb
|
libxdmcp6 1:1.1.3-0ubuntu6 deb
|
||||||
libxext6 2:1.3.4-1build2 deb
|
libxext6 2:1.3.4-1build2 deb
|
||||||
libxfixes3 1:6.0.0-2build1 deb
|
libxfixes3 1:6.0.0-2build1 deb
|
||||||
libxml2 2.9.14+dfsg-1.3ubuntu3 deb
|
libxml2 2.9.14+dfsg-1.3ubuntu3.7 deb
|
||||||
libxshmfence1 1.3-1build5 deb
|
libxshmfence1 1.3-1build5 deb
|
||||||
libxxhash0 0.8.2-2build1 deb
|
libxxhash0 0.8.2-2build1 deb
|
||||||
libzstd1 1.5.5+dfsg2-2build1.1 deb
|
libzstd1 1.5.5+dfsg2-2build1.1 deb
|
||||||
locales 2.39-0ubuntu8.3 deb
|
locales 2.39-0ubuntu8.7 deb
|
||||||
login 1:4.13+dfsg1-4ubuntu3.2 deb
|
login 1:4.13+dfsg1-4ubuntu3.2 deb
|
||||||
logsave 1.47.0-2.4~exp1ubuntu4.1 deb
|
logsave 1.47.0-2.4~exp1ubuntu4.1 deb
|
||||||
mawk 1.3.4.20240123-1build1 deb
|
mawk 1.3.4.20240123-1build1 deb
|
||||||
mount 2.39.3-9ubuntu6.1 deb
|
mount 2.39.3-9ubuntu6.4 deb
|
||||||
ncurses-base 6.4+20240113-1ubuntu2 deb
|
ncurses-base 6.4+20240113-1ubuntu2 deb
|
||||||
ncurses-bin 6.4+20240113-1ubuntu2 deb
|
ncurses-bin 6.4+20240113-1ubuntu2 deb
|
||||||
netcat-openbsd 1.226-1ubuntu2 deb
|
netcat-openbsd 1.226-1ubuntu2 deb
|
||||||
ocl-icd-libopencl1 2.3.2-1build1 deb
|
ocl-icd-libopencl1 2.3.2-1build1 deb
|
||||||
openssl 3.0.13-0ubuntu3.4 deb
|
openssl 3.0.13-0ubuntu3.7 deb
|
||||||
passwd 1:4.13+dfsg1-4ubuntu3.2 deb
|
passwd 1:4.13+dfsg1-4ubuntu3.2 deb
|
||||||
perl-base 5.38.2-3.2build2 deb
|
perl-base 5.38.2-3.2ubuntu0.2 deb
|
||||||
pinentry-curses 1.2.1-3ubuntu5 deb
|
pinentry-curses 1.2.1-3ubuntu5 deb
|
||||||
procps 2:4.0.4-4ubuntu3.2 deb
|
procps 2:4.0.4-4ubuntu3.2 deb
|
||||||
publicsuffix 20231001.0357-0.1 deb
|
publicsuffix 20231001.0357-0.1 deb
|
||||||
@ -170,11 +170,12 @@ readline-common 8.2-4build1 deb
|
|||||||
sed 4.9-2build1 deb
|
sed 4.9-2build1 deb
|
||||||
sensible-utils 0.0.22 deb
|
sensible-utils 0.0.22 deb
|
||||||
shared-mime-info 2.4-4 deb
|
shared-mime-info 2.4-4 deb
|
||||||
systemd-standalone-sysusers 255.4-1ubuntu8.4 deb
|
systemd-standalone-sysusers 255.4-1ubuntu8.12 deb
|
||||||
sysvinit-utils 3.08-6ubuntu3 deb
|
sysvinit-utils 3.08-6ubuntu3 deb
|
||||||
tar 1.35+dfsg-3build1 deb
|
tar 1.35+dfsg-3build1 deb
|
||||||
tzdata 2024a-3ubuntu1.1 deb
|
tzdata 2025b-0ubuntu0.24.04.1 deb
|
||||||
ubuntu-keyring 2023.11.28.1 deb
|
ubuntu-keyring 2023.11.28.1 deb
|
||||||
util-linux 2.39.3-9ubuntu6.1 deb
|
unminimize 0.2.1 deb
|
||||||
|
util-linux 2.39.3-9ubuntu6.4 deb
|
||||||
xdg-user-dirs 0.18-1build1 deb
|
xdg-user-dirs 0.18-1build1 deb
|
||||||
zlib1g 1:1.3.dfsg-3.1ubuntu2.1 deb
|
zlib1g 1:1.3.dfsg-3.1ubuntu2.1 deb
|
||||||
|
|||||||
@ -2,6 +2,9 @@
|
|||||||
|
|
||||||
# project information
|
# project information
|
||||||
project_name: ffmpeg
|
project_name: ffmpeg
|
||||||
|
project_logo: "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/ffmpeg.png"
|
||||||
|
project_blurb: A complete, cross-platform solution to record, convert and stream audio and video.
|
||||||
|
project_categories: "Media Tools"
|
||||||
full_custom_readme: |
|
full_custom_readme: |
|
||||||
{% raw -%}
|
{% raw -%}
|
||||||
[](https://linuxserver.io)
|
[](https://linuxserver.io)
|
||||||
@ -41,11 +44,11 @@ full_custom_readme: |
|
|||||||
[](https://hub.docker.com/r/linuxserver/ffmpeg)
|
[](https://hub.docker.com/r/linuxserver/ffmpeg)
|
||||||
[](https://hub.docker.com/r/linuxserver/ffmpeg)
|
[](https://hub.docker.com/r/linuxserver/ffmpeg)
|
||||||
[](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-ffmpeg/job/master/)
|
[](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-ffmpeg/job/master/)
|
||||||
|
|
||||||
[FFmpeg](https://ffmpeg.org) - A complete, cross-platform solution to record, convert and stream audio and video.
|
[FFmpeg](https://ffmpeg.org) - A complete, cross-platform solution to record, convert and stream audio and video.
|
||||||
|
|
||||||
[](https://ffmpeg.org)
|
[](https://ffmpeg.org)
|
||||||
|
|
||||||
## Supported Architectures
|
## Supported Architectures
|
||||||
|
|
||||||
We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://distribution.github.io/distribution/spec/manifest-v2-2/#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
|
We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://distribution.github.io/distribution/spec/manifest-v2-2/#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
|
||||||
@ -59,9 +62,9 @@ full_custom_readme: |
|
|||||||
| x86-64 | ✅ | amd64-\<version tag\> |
|
| x86-64 | ✅ | amd64-\<version tag\> |
|
||||||
| arm64 | ✅ | arm64v8-\<version tag\> |
|
| arm64 | ✅ | arm64v8-\<version tag\> |
|
||||||
| armhf | ❌ | |
|
| armhf | ❌ | |
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
Unlike most of our container library this image is meant to be run ephemerally from the command line parsing user input for a custom FFmpeg command. You will need to understand some Docker basics to use this image and be familiar with how to construct an FFmpeg command. In the commands below we will be bind mounting our current working directory from the CLI to /config, the assumption is that input.mkv is in your current working directory.
|
Unlike most of our container library this image is meant to be run ephemerally from the command line parsing user input for a custom FFmpeg command. You will need to understand some Docker basics to use this image and be familiar with how to construct an FFmpeg command. In the commands below we will be bind mounting our current working directory from the CLI to /config, the assumption is that input.mkv is in your current working directory.
|
||||||
|
|
||||||
If an input file is detected we will run FFmpeg as that user/group so the output file will match its permissions.
|
If an input file is detected we will run FFmpeg as that user/group so the output file will match its permissions.
|
||||||
@ -93,7 +96,7 @@ full_custom_readme: |
|
|||||||
```
|
```
|
||||||
|
|
||||||
### Hardware accelerated (VAAPI) ([click for more info](https://trac.ffmpeg.org/wiki/Hardware/VAAPI))
|
### Hardware accelerated (VAAPI) ([click for more info](https://trac.ffmpeg.org/wiki/Hardware/VAAPI))
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker run --rm -it \
|
docker run --rm -it \
|
||||||
--device=/dev/dri:/dev/dri \
|
--device=/dev/dri:/dev/dri \
|
||||||
@ -109,7 +112,7 @@ full_custom_readme: |
|
|||||||
```
|
```
|
||||||
|
|
||||||
### Hardware accelerated (QSV) ([click for more info](https://trac.ffmpeg.org/wiki/Hardware/QuickSync))
|
### Hardware accelerated (QSV) ([click for more info](https://trac.ffmpeg.org/wiki/Hardware/QuickSync))
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker run --rm -it \
|
docker run --rm -it \
|
||||||
--device=/dev/dri:/dev/dri \
|
--device=/dev/dri:/dev/dri \
|
||||||
@ -187,6 +190,15 @@ full_custom_readme: |
|
|||||||
|
|
||||||
## Versions
|
## Versions
|
||||||
|
|
||||||
|
* **06.01.26:** - Remove mpp from aarch64 build due to upstream DMCA removal. Bump harfbuzz, libdav1d, libdrm, libpng, libva, libvpl, mesa, opus, shaderc and vulkan-sdk.
|
||||||
|
* **01.12.25:** - Bump ffmpeg to 8.0.1.
|
||||||
|
* **19.11.25:** - Bump aom, freetype, harfbuzz, Intel drivers and libs, kvazaar, libdav1d, libdrm, mesa, mpp, openjpeg, shaderc, svt-av1 and vulkan-sdk.
|
||||||
|
* **23.08.25:** - Bump ffmpeg to 8.0. Bump harfbuzz, Intel drivers and libs, libdovi, libdrm, libpng, mesa, ogg, rav1e, shaderc, svt-av1, vulkan-sdk, webp and zimg.
|
||||||
|
* **06.08.25:** - Bump svt-av1.
|
||||||
|
* **07.06.25:** - Bump harfbuzz, libass, libdovi, libplacebo, libpng, mesa, rav1e, shaderc, libvpx and vulkan-sdk.
|
||||||
|
* **04.06.25:** - Add libdrm and rkmpp to arm64 image.
|
||||||
|
* **21.04.25:** - Bump aom, Intel drivers and libs, harfbuzz, mesa, svt-av1, libvpx, libtheora, vulkan-sdk and vvenc.
|
||||||
|
* **07.03.25:** - Bump ffmpeg to 7.1.1, Bump aom, fontconfig, Intel drivers and libs, harfbuzz, libdav1d, libdovi, libdrm, liblc3, libpng, mesa, openjpeg, shaderc, svt-av1, vulkan-sdk, vvenc and webp.
|
||||||
* **26.11.24:** - Bump libaom, mesa, rist, srt and libx265.
|
* **26.11.24:** - Bump libaom, mesa, rist, srt and libx265.
|
||||||
* **07.11.24:** - Bump harfbuzz, Intel drivers and libs, libdav1d, mesa, svtav1, vpx, vulkan sdk and vvenc.
|
* **07.11.24:** - Bump harfbuzz, Intel drivers and libs, libdav1d, mesa, svtav1, vpx, vulkan sdk and vvenc.
|
||||||
* **05.10.24:** - Add support for libvvenc on aarch64. Bump mesa.
|
* **05.10.24:** - Add support for libvvenc on aarch64. Bump mesa.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user