diff --git a/.editorconfig b/.editorconfig old mode 100644 new mode 100755 diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index dab7f9e..fd4f11d 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -6,7 +6,7 @@ * 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 the PR is addressing an existing issue include, closes #\, 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://linuxserver.io/discord) +* 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) ## Common files @@ -105,10 +105,10 @@ docker build \ -t linuxserver/audacity:latest . ``` -The ARM variants can be built on x86_64 hardware and vice versa using `lscr.io/linuxserver/qemu-static` +The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static` ```bash -docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset +docker run --rm --privileged multiarch/qemu-user-static:register --reset ``` Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`. diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index face150..452b3b9 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,7 +1,7 @@ blank_issues_enabled: false contact_links: - name: Discord chat support - url: https://linuxserver.io/discord + url: https://discord.gg/YWrKVTn about: Realtime support / chat with the community and the team. - name: Discourse discussion forum diff --git a/.github/ISSUE_TEMPLATE/issue.bug.yml b/.github/ISSUE_TEMPLATE/issue.bug.yml old mode 100644 new mode 100755 index b812b88..1f25845 --- a/.github/ISSUE_TEMPLATE/issue.bug.yml +++ b/.github/ISSUE_TEMPLATE/issue.bug.yml @@ -66,10 +66,10 @@ body: - type: textarea attributes: description: | - Provide a full docker log, output of "docker logs audacity" + Provide a full docker log, output of "docker logs linuxserver.io" label: Container logs placeholder: | - Output of `docker logs audacity` + Output of `docker logs linuxserver.io` render: bash validations: required: true diff --git a/.github/ISSUE_TEMPLATE/issue.feature.yml b/.github/ISSUE_TEMPLATE/issue.feature.yml old mode 100644 new mode 100755 diff --git a/.github/workflows/call_issue_pr_tracker.yml b/.github/workflows/call_issue_pr_tracker.yml old mode 100644 new mode 100755 index d07cf12..2c30784 --- a/.github/workflows/call_issue_pr_tracker.yml +++ b/.github/workflows/call_issue_pr_tracker.yml @@ -8,9 +8,6 @@ on: pull_request_review: types: [submitted,edited,dismissed] -permissions: - contents: read - jobs: manage-project: permissions: diff --git a/.github/workflows/call_issues_cron.yml b/.github/workflows/call_issues_cron.yml old mode 100644 new mode 100755 index 22be2ed..2b962ad --- a/.github/workflows/call_issues_cron.yml +++ b/.github/workflows/call_issues_cron.yml @@ -4,9 +4,6 @@ on: - cron: '52 17 * * *' workflow_dispatch: -permissions: - contents: read - jobs: stale: permissions: diff --git a/.github/workflows/external_trigger.yml b/.github/workflows/external_trigger.yml index 917bbea..409260b 100644 --- a/.github/workflows/external_trigger.yml +++ b/.github/workflows/external_trigger.yml @@ -3,42 +3,26 @@ name: External Trigger Main on: workflow_dispatch: -permissions: - contents: read - jobs: external-trigger-main: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@v3.1.0 - name: External Trigger if: github.ref == 'refs/heads/main' - env: - SKIP_EXTERNAL_TRIGGER: ${{ vars.SKIP_EXTERNAL_TRIGGER }} run: | - printf "# External trigger for docker-audacity\n\n" >> $GITHUB_STEP_SUMMARY - if grep -q "^audacity_main_" <<< "${SKIP_EXTERNAL_TRIGGER}"; then - echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY - echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`audacity_main_\`; will skip trigger if version matches." >> $GITHUB_STEP_SUMMARY - elif grep -q "^audacity_main" <<< "${SKIP_EXTERNAL_TRIGGER}"; then - echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY - echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`audacity_main\`; skipping trigger." >> $GITHUB_STEP_SUMMARY + if [ -n "${{ secrets.PAUSE_EXTERNAL_TRIGGER_AUDACITY_MAIN }}" ]; then + echo "**** Github secret PAUSE_EXTERNAL_TRIGGER_AUDACITY_MAIN is set; skipping trigger. ****" + echo "Github secret \`PAUSE_EXTERNAL_TRIGGER_AUDACITY_MAIN\` is set; skipping trigger." >> $GITHUB_STEP_SUMMARY exit 0 fi - echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY - echo "> External trigger running off of main branch. To disable this trigger, add \`audacity_main\` into the Github organizational variable \`SKIP_EXTERNAL_TRIGGER\`." >> $GITHUB_STEP_SUMMARY - printf "\n## Retrieving external version\n\n" >> $GITHUB_STEP_SUMMARY + echo "**** External trigger running off of main branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_AUDACITY_MAIN\". ****" + echo "External trigger running off of main branch. To disable this trigger, set a Github secret named \`PAUSE_EXTERNAL_TRIGGER_AUDACITY_MAIN\`" >> $GITHUB_STEP_SUMMARY + echo "**** Retrieving external version ****" EXT_RELEASE=$(curl -u ${{ secrets.CR_USER }}:${{ secrets.CR_PAT }} -sX GET https://api.github.com/repos/audacity/audacity/releases/latest | jq -r '.tag_name' | sed 's|^Audacity-||') - echo "Type is \`custom_version_command\`" >> $GITHUB_STEP_SUMMARY - if grep -q "^audacity_main_${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 - echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY - echo "> Can't retrieve external version, exiting" >> $GITHUB_STEP_SUMMARY + echo "**** Can't retrieve external version, exiting ****" FAILURE_REASON="Can't retrieve external version for audacity branch main" GHA_TRIGGER_URL="https://github.com/linuxserver/docker-audacity/actions/runs/${{ github.run_id }}" curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680, @@ -46,43 +30,20 @@ jobs: "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} exit 1 fi - EXT_RELEASE_SANITIZED=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g') - echo "Sanitized external version: \`${EXT_RELEASE_SANITIZED}\`" >> $GITHUB_STEP_SUMMARY - echo "Retrieving last pushed version" >> $GITHUB_STEP_SUMMARY + EXT_RELEASE=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g') + echo "**** External version: ${EXT_RELEASE} ****" + echo "External version: ${EXT_RELEASE}" >> $GITHUB_STEP_SUMMARY + echo "**** Retrieving last pushed version ****" image="linuxserver/audacity" tag="latest" token=$(curl -sX GET \ "https://ghcr.io/token?scope=repository%3Alinuxserver%2Faudacity%3Apull" \ | jq -r '.token') - multidigest=$(curl -s \ - --header "Accept: application/vnd.docker.distribution.manifest.v2+json" \ - --header "Accept: application/vnd.oci.image.index.v1+json" \ - --header "Authorization: Bearer ${token}" \ - "https://ghcr.io/v2/${image}/manifests/${tag}") - if jq -e '.layers // empty' <<< "${multidigest}" >/dev/null 2>&1; then - # If there's a layer element it's a single-arch manifest so just get that digest - digest=$(jq -r '.config.digest' <<< "${multidigest}") - else - # Otherwise it's multi-arch or has manifest annotations - if jq -e '.manifests[]?.annotations // empty' <<< "${multidigest}" >/dev/null 2>&1; then - # 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 \ + 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 + "https://ghcr.io/v2/${image}/manifests/${tag}" \ + | jq -r '.config.digest') image_info=$(curl -sL \ --header "Authorization: Bearer ${token}" \ "https://ghcr.io/v2/${image}/blobs/${digest}") @@ -94,54 +55,45 @@ jobs: IMAGE_RELEASE=$(echo ${image_info} | jq -r '.Labels.build_version' | awk '{print $3}') IMAGE_VERSION=$(echo ${IMAGE_RELEASE} | awk -F'-ls' '{print $1}') if [ -z "${IMAGE_VERSION}" ]; then - echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY - echo "Can't retrieve last pushed version, exiting" >> $GITHUB_STEP_SUMMARY + echo "**** Can't retrieve last pushed version, exiting ****" FAILURE_REASON="Can't retrieve last pushed version for audacity tag latest" curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680, "description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}], "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} exit 1 fi - echo "Last pushed version: \`${IMAGE_VERSION}\`" >> $GITHUB_STEP_SUMMARY - if [ "${EXT_RELEASE_SANITIZED}" == "${IMAGE_VERSION}" ]; then - echo "Sanitized version \`${EXT_RELEASE_SANITIZED}\` already pushed, exiting" >> $GITHUB_STEP_SUMMARY + echo "**** Last pushed version: ${IMAGE_VERSION} ****" + echo "Last pushed version: ${IMAGE_VERSION}" >> $GITHUB_STEP_SUMMARY + if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then + echo "**** Version ${EXT_RELEASE} already pushed, exiting ****" + echo "Version ${EXT_RELEASE} already pushed, exiting" >> $GITHUB_STEP_SUMMARY exit 0 elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-audacity/job/main/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 ****" + echo "New version ${EXT_RELEASE} found; but there already seems to be an active build on Jenkins; exiting" >> $GITHUB_STEP_SUMMARY exit 0 else - if [[ "${artifacts_found}" == "false" ]]; then - echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY - echo "> New version detected, but not all artifacts are published yet; skipping trigger" >> $GITHUB_STEP_SUMMARY - FAILURE_REASON="New version ${EXT_RELEASE} for audacity tag latest is detected, however not all artifacts are uploaded to upstream release yet. Will try again later." - curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903, - "description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}], - "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} - else - printf "\n## Trigger new build\n\n" >> $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 - echo "All artifacts seem to be uploaded." >> $GITHUB_STEP_SUMMARY - fi - response=$(curl -iX POST \ - https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-audacity/job/main/buildWithParameters?PACKAGE_CHECK=false \ - --user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|") - echo "Jenkins [job queue url](${response%$'\r'})" >> $GITHUB_STEP_SUMMARY - echo "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY - sleep 10 - buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url') - buildurl="${buildurl%$'\r'}" - echo "Jenkins job [build url](${buildurl})" >> $GITHUB_STEP_SUMMARY - echo "Attempting to change the Jenkins job description" >> $GITHUB_STEP_SUMMARY - curl -iX POST \ - "${buildurl}submitDescription" \ - --user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \ - --data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \ - --data-urlencode "Submit=Submit" - echo "**** Notifying Discord ****" - TRIGGER_REASON="A version change was detected for audacity 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, - "description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}], - "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} - fi + echo "**** New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build ****" + echo "New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build" >> $GITHUB_STEP_SUMMARY + response=$(curl -iX POST \ + https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-audacity/job/main/buildWithParameters?PACKAGE_CHECK=false \ + --user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|") + echo "**** Jenkins job queue url: ${response%$'\r'} ****" + echo "**** Sleeping 10 seconds until job starts ****" + sleep 10 + buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url') + buildurl="${buildurl%$'\r'}" + echo "**** Jenkins job build url: ${buildurl} ****" + echo "Jenkins job build url: ${buildurl}" >> $GITHUB_STEP_SUMMARY + echo "**** Attempting to change the Jenkins job description ****" + curl -iX POST \ + "${buildurl}submitDescription" \ + --user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \ + --data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \ + --data-urlencode "Submit=Submit" + echo "**** Notifying Discord ****" + TRIGGER_REASON="A version change was detected for audacity tag latest. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE}" + 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"}], + "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} fi diff --git a/.github/workflows/external_trigger_scheduler.yml b/.github/workflows/external_trigger_scheduler.yml index ed8ec95..6d36762 100644 --- a/.github/workflows/external_trigger_scheduler.yml +++ b/.github/workflows/external_trigger_scheduler.yml @@ -5,44 +5,41 @@ on: - cron: '34 * * * *' workflow_dispatch: -permissions: - contents: read - jobs: external-trigger-scheduler: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@v3.1.0 with: fetch-depth: '0' - name: External Trigger Scheduler run: | - printf "# External trigger scheduler for docker-audacity\n\n" >> $GITHUB_STEP_SUMMARY - printf "Found the branches:\n\n%s\n" "$(git for-each-ref --format='- %(refname:lstrip=3)' refs/remotes)" >> $GITHUB_STEP_SUMMARY - for br in $(git for-each-ref --format='%(refname:lstrip=3)' refs/remotes) + echo "**** Branches found: ****" + git for-each-ref --format='%(refname:short)' refs/remotes + for br in $(git for-each-ref --format='%(refname:short)' refs/remotes) do - if [[ "${br}" == "HEAD" ]]; then - printf "\nSkipping %s.\n" ${br} >> $GITHUB_STEP_SUMMARY - continue - fi - printf "\n## Evaluating \`%s\`\n\n" ${br} >> $GITHUB_STEP_SUMMARY + br=$(echo "$br" | sed 's|origin/||g') + echo "**** Evaluating branch ${br} ****" ls_jenkins_vars=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-audacity/${br}/jenkins-vars.yml) ls_branch=$(echo "${ls_jenkins_vars}" | yq -r '.ls_branch') ls_trigger=$(echo "${ls_jenkins_vars}" | yq -r '.external_type') if [[ "${br}" == "${ls_branch}" ]] && [[ "${ls_trigger}" != "os" ]]; then - echo "Branch appears to be live and trigger is not os; checking workflow." >> $GITHUB_STEP_SUMMARY + echo "**** Branch ${br} appears to be live and trigger is not os; checking workflow. ****" if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-audacity/${br}/.github/workflows/external_trigger.yml > /dev/null 2>&1; then - echo "Triggering external trigger workflow for branch." >> $GITHUB_STEP_SUMMARY + echo "**** Workflow exists. Triggering external trigger workflow for branch ${br} ****." + echo "Triggering external trigger workflow for branch ${br}" >> $GITHUB_STEP_SUMMARY curl -iX POST \ -H "Authorization: token ${{ secrets.CR_PAT }}" \ -H "Accept: application/vnd.github.v3+json" \ -d "{\"ref\":\"refs/heads/${br}\"}" \ https://api.github.com/repos/linuxserver/docker-audacity/actions/workflows/external_trigger.yml/dispatches else - echo "Skipping branch due to no external trigger workflow present." >> $GITHUB_STEP_SUMMARY + echo "**** Workflow doesn't exist; skipping trigger. ****" + echo "Skipping branch ${br} due to no external trigger workflow present." >> $GITHUB_STEP_SUMMARY fi else - echo "Skipping branch due to being detected as dev branch or having no external version." >> $GITHUB_STEP_SUMMARY + echo "**** ${br} is either a dev branch, or has no external version; skipping trigger. ****" + echo "Skipping branch ${br} due to being detected as dev branch or having no external version." >> $GITHUB_STEP_SUMMARY fi done diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml index 753384d..5d7ce49 100644 --- a/.github/workflows/greetings.yml +++ b/.github/workflows/greetings.yml @@ -2,14 +2,8 @@ name: Greetings on: [pull_request_target, issues] -permissions: - contents: read - jobs: greeting: - permissions: - issues: write - pull-requests: write runs-on: ubuntu-latest steps: - uses: actions/first-interaction@v1 diff --git a/.github/workflows/package_trigger.yml b/.github/workflows/package_trigger.yml new file mode 100644 index 0000000..2c79d37 --- /dev/null +++ b/.github/workflows/package_trigger.yml @@ -0,0 +1,42 @@ +name: Package Trigger Main + +on: + workflow_dispatch: + +jobs: + package-trigger-main: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3.1.0 + + - name: Package Trigger + if: github.ref == 'refs/heads/main' + run: | + if [ -n "${{ secrets.PAUSE_PACKAGE_TRIGGER_AUDACITY_MAIN }}" ]; then + echo "**** Github secret PAUSE_PACKAGE_TRIGGER_AUDACITY_MAIN is set; skipping trigger. ****" + echo "Github secret \`PAUSE_PACKAGE_TRIGGER_AUDACITY_MAIN\` is set; skipping trigger." >> $GITHUB_STEP_SUMMARY + exit 0 + fi + if [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-audacity/job/main/lastBuild/api/json | jq -r '.building') == "true" ]; then + echo "**** There already seems to be an active build on Jenkins; skipping package trigger ****" + echo "There already seems to be an active build on Jenkins; skipping package trigger" >> $GITHUB_STEP_SUMMARY + exit 0 + fi + echo "**** Package trigger running off of main branch. To disable, set a Github secret named \"PAUSE_PACKAGE_TRIGGER_AUDACITY_MAIN\". ****" + echo "Package trigger running off of main branch. To disable, set a Github secret named \`PAUSE_PACKAGE_TRIGGER_AUDACITY_MAIN\`" >> $GITHUB_STEP_SUMMARY + response=$(curl -iX POST \ + https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-audacity/job/main/buildWithParameters?PACKAGE_CHECK=true \ + --user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|") + echo "**** Jenkins job queue url: ${response%$'\r'} ****" + echo "**** Sleeping 10 seconds until job starts ****" + sleep 10 + buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url') + buildurl="${buildurl%$'\r'}" + echo "**** Jenkins job build url: ${buildurl} ****" + echo "Jenkins job build url: ${buildurl}" >> $GITHUB_STEP_SUMMARY + echo "**** Attempting to change the Jenkins job description ****" + curl -iX POST \ + "${buildurl}submitDescription" \ + --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 "Submit=Submit" diff --git a/.github/workflows/package_trigger_scheduler.yml b/.github/workflows/package_trigger_scheduler.yml index 39609c6..3cdd79b 100644 --- a/.github/workflows/package_trigger_scheduler.yml +++ b/.github/workflows/package_trigger_scheduler.yml @@ -5,99 +5,46 @@ on: - cron: '49 4 * * 2' workflow_dispatch: -permissions: - contents: read - jobs: package-trigger-scheduler: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@v3.1.0 with: fetch-depth: '0' - name: Package Trigger Scheduler - env: - SKIP_PACKAGE_TRIGGER: ${{ vars.SKIP_PACKAGE_TRIGGER }} run: | - printf "# Package trigger scheduler for docker-audacity\n\n" >> $GITHUB_STEP_SUMMARY - printf "Found the branches:\n\n%s\n" "$(git for-each-ref --format='- %(refname:lstrip=3)' refs/remotes)" >> $GITHUB_STEP_SUMMARY - for br in $(git for-each-ref --format='%(refname:lstrip=3)' refs/remotes) + echo "**** Branches found: ****" + git for-each-ref --format='%(refname:short)' refs/remotes + for br in $(git for-each-ref --format='%(refname:short)' refs/remotes) do - if [[ "${br}" == "HEAD" ]]; then - printf "\nSkipping %s.\n" ${br} >> $GITHUB_STEP_SUMMARY - continue - fi - printf "\n## Evaluating \`%s\`\n\n" ${br} >> $GITHUB_STEP_SUMMARY - JENKINS_VARS=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-audacity/${br}/jenkins-vars.yml) - if ! curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-audacity/${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 - README_VARS=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-audacity/${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 "> Skipping branch ${br} due to \`skip_package_check\` being set in \`jenkins-vars.yml\`." >> $GITHUB_STEP_SUMMARY - skipped_branches="${skipped_branches}${br} " - elif grep -q "^audacity_${br}" <<< "${SKIP_PACKAGE_TRIGGER}"; then - echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY - echo "> Github organizational variable \`SKIP_PACKAGE_TRIGGER\` contains \`audacity_${br}\`; skipping trigger." >> $GITHUB_STEP_SUMMARY - skipped_branches="${skipped_branches}${br} " - elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-audacity/job/${br}/lastBuild/api/json | jq -r '.building' 2>/dev/null) == "true" ]; then - echo "> [!WARNING]" >> $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} " - else - echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY - echo "> Triggering package trigger for branch ${br}" >> $GITHUB_STEP_SUMMARY - printf "> To disable, add \`audacity_%s\` into the Github organizational variable \`SKIP_PACKAGE_TRIGGER\`.\n\n" "${br}" >> $GITHUB_STEP_SUMMARY + br=$(echo "$br" | sed 's|origin/||g') + echo "**** Evaluating branch ${br} ****" + ls_branch=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-audacity/${br}/jenkins-vars.yml | yq -r '.ls_branch') + if [ "${br}" == "${ls_branch}" ]; then + echo "**** Branch ${br} appears to be live; checking workflow. ****" + if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-audacity/${br}/.github/workflows/package_trigger.yml > /dev/null 2>&1; then + echo "**** Workflow exists. Triggering package trigger workflow for branch ${br}. ****" + echo "Triggering package trigger workflow for branch ${br}" >> $GITHUB_STEP_SUMMARY triggered_branches="${triggered_branches}${br} " - response=$(curl -iX POST \ - https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-audacity/job/${br}/buildWithParameters?PACKAGE_CHECK=true \ - --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 "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY - sleep 10 - buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url') - buildurl="${buildurl%$'\r'}" - echo "Jenkins job [build url](${buildurl})" >> $GITHUB_STEP_SUMMARY - echo "Attempting to change the Jenkins job description" >> $GITHUB_STEP_SUMMARY - if ! curl -ifX POST \ - "${buildurl}submitDescription" \ - --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 "Submit=Submit"; then - echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY - echo "> Unable to change the Jenkins job description." - fi - sleep 20 + curl -iX POST \ + -H "Authorization: token ${{ secrets.CR_PAT }}" \ + -H "Accept: application/vnd.github.v3+json" \ + -d "{\"ref\":\"refs/heads/${br}\"}" \ + https://api.github.com/repos/linuxserver/docker-audacity/actions/workflows/package_trigger.yml/dispatches + sleep 30 + else + echo "**** Workflow doesn't exist; skipping trigger. ****" + echo "Skipping branch ${br} due to no package trigger workflow present." >> $GITHUB_STEP_SUMMARY fi else + echo "**** ${br} appears to be a dev branch; skipping trigger. ****" echo "Skipping branch ${br} due to being detected as dev branch." >> $GITHUB_STEP_SUMMARY fi done - if [[ -n "${triggered_branches}" ]] || [[ -n "${skipped_branches}" ]]; then - if [[ -n "${triggered_branches}" ]]; then - NOTIFY_BRANCHES="**Triggered:** ${triggered_branches} \n" - NOTIFY_BUILD_URL="**Build URL:** https://ci.linuxserver.io/blue/organizations/jenkins/Docker-Pipeline-Builders%2Fdocker-audacity/activity/ \n" - echo "**** Package check build(s) triggered for branch(es): ${triggered_branches} ****" - fi - if [[ -n "${skipped_branches}" ]]; then - NOTIFY_BRANCHES="${NOTIFY_BRANCHES}**Skipped:** ${skipped_branches} \n" - fi - echo "**** Notifying Discord ****" - curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903, - "description": "**Package Check Build(s) for audacity** \n'"${NOTIFY_BRANCHES}"''"${NOTIFY_BUILD_URL}"'"}], - "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} - fi + echo "**** Package check build(s) triggered for branch(es): ${triggered_branches} ****" + echo "**** Notifying Discord ****" + curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903, + "description": "**Package Check Build(s) Triggered for audacity** \n**Branch(es):** '"${triggered_branches}"' \n**Build URL:** '"https://ci.linuxserver.io/blue/organizations/jenkins/Docker-Pipeline-Builders%2Fdocker-audacity/activity/"' \n"}], + "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} diff --git a/.github/workflows/permissions.yml b/.github/workflows/permissions.yml old mode 100644 new mode 100755 index 02e1bdb..1447bc5 --- a/.github/workflows/permissions.yml +++ b/.github/workflows/permissions.yml @@ -5,8 +5,6 @@ on: - '**/run' - '**/finish' - '**/check' - - 'root/migrations/*' - jobs: permission_check: uses: linuxserver/github-workflows/.github/workflows/init-svc-executable-permissions.yml@v1 diff --git a/Dockerfile b/Dockerfile index 61ba4df..81a6149 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ # syntax=docker/dockerfile:1 -FROM ghcr.io/linuxserver/baseimage-selkies:ubuntunoble +FROM ghcr.io/linuxserver/baseimage-kasmvnc:ubuntujammy # set version label ARG BUILD_DATE @@ -13,10 +13,6 @@ LABEL maintainer="aptalca" ENV TITLE=Audacity RUN \ - echo "**** add icon ****" && \ - curl -o \ - /usr/share/selkies/www/icon.png \ - https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/audacity-logo.png && \ echo "**** install packages ****" && \ apt-get update && \ apt-get install -y \ @@ -30,17 +26,15 @@ RUN \ AUDACITY_VERSION=$(curl -sX GET "https://api.github.com/repos/audacity/audacity/releases/latest" \ | awk '/tag_name/{print $4;exit}' FS='[""]' | sed 's|^Audacity-||'); \ fi && \ - cd /tmp && \ + mkdir -p /app/audacity/ && \ curl -o \ - /tmp/audacity.app -L \ - "https://github.com/audacity/audacity/releases/download/Audacity-${AUDACITY_VERSION}/audacity-linux-${AUDACITY_VERSION}-x64-22.04.AppImage" && \ - chmod +x /tmp/audacity.app && \ - ./audacity.app --appimage-extract && \ - mv squashfs-root /opt/audacity && \ + /app/audacity/audacity -L \ + "https://github.com/audacity/audacity/releases/download/Audacity-${AUDACITY_VERSION}/audacity-linux-${AUDACITY_VERSION}-x64.AppImage" && \ + chmod +x /app/audacity/audacity && \ ln -s \ /usr/lib/x86_64-linux-gnu/libportaudio.so.2 \ /usr/lib/x86_64-linux-gnu/libportaudio.so && \ - printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \ + sed -i 's|| \n yes\n \n|' /etc/xdg/openbox/rc.xml && \ echo "**** cleanup ****" && \ rm -rf \ /tmp/* \ @@ -51,6 +45,6 @@ RUN \ COPY /root / # ports and volumes -EXPOSE 3001 +EXPOSE 3000 VOLUME /config diff --git a/Jenkinsfile b/Jenkinsfile index 1c06524..f86e4a9 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -8,7 +8,7 @@ pipeline { } // Input to determine if this is a package check parameters { - string(defaultValue: 'false', description: 'package check run', name: 'PACKAGE_CHECK') + string(defaultValue: 'false', description: 'package check run', name: 'PACKAGE_CHECK') } // Configuration for the variables used for this specific repo environment { @@ -16,9 +16,6 @@ pipeline { GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab') GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0') GITLAB_NAMESPACE=credentials('gitlab-namespace-id') - DOCKERHUB_TOKEN=credentials('docker-hub-ci-pat') - QUAYIO_API_TOKEN=credentials('quayio-repo-api-token') - GIT_SIGNING_KEY=credentials('484fbca6-9a4f-455e-b9e3-97ac98785f5f') BUILD_VERSION_ARG = 'AUDACITY_VERSION' LS_USER = 'linuxserver' LS_REPO = 'docker-audacity' @@ -30,49 +27,23 @@ pipeline { MULTIARCH = 'false' CI = 'true' CI_WEB = 'true' - CI_PORT = '3001' - CI_SSL = 'true' + CI_PORT = '3000' + CI_SSL = 'false' CI_DELAY = '120' - CI_DOCKERENV = '' - CI_AUTH = '' + CI_DOCKERENV = 'TZ=US/Pacific' + CI_AUTH = 'user:password' CI_WEBPATH = '' } stages { - stage("Set git config"){ - steps{ - sh '''#!/bin/bash - cat ${GIT_SIGNING_KEY} > /config/.ssh/id_sign - chmod 600 /config/.ssh/id_sign - ssh-keygen -y -f /config/.ssh/id_sign > /config/.ssh/id_sign.pub - echo "Using $(ssh-keygen -lf /config/.ssh/id_sign) to sign commits" - git config --global gpg.format ssh - git config --global user.signingkey /config/.ssh/id_sign - git config --global commit.gpgsign true - ''' - } - } // Setup all the basic environment variables needed for the build stage("Set ENV Variables base"){ steps{ - echo "Running on node: ${NODE_NAME}" sh '''#! /bin/bash - echo "Pruning builder" - docker builder prune -f --builder container || : - containers=$(docker ps -q) + containers=$(docker ps -aq) if [[ -n "${containers}" ]]; then - 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 + docker stop ${containers} fi - docker system prune -f --volumes || : - docker image prune -af || : - ''' + docker system prune -af --volumes || : ''' script{ env.EXIT_STATUS = '' env.LS_RELEASE = sh( @@ -87,20 +58,11 @@ pipeline { env.COMMIT_SHA = sh( script: '''git rev-parse HEAD''', returnStdout: true).trim() - env.GH_DEFAULT_BRANCH = sh( - script: '''git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||' ''', - returnStdout: true).trim() env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/commit/' + env.GIT_COMMIT env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/' 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' - if ( env.SYFT_IMAGE_TAG == null ) { - env.SYFT_IMAGE_TAG = 'latest' - } + 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 ./.github/workflows/package_trigger.yml' } - echo "Using syft image tag ${SYFT_IMAGE_TAG}" - sh '''#! /bin/bash - echo "The default github branch detected as ${GH_DEFAULT_BRANCH}" ''' script{ env.LS_RELEASE_NUMBER = sh( script: '''echo ${LS_RELEASE} |sed 's/^.*-ls//g' ''', @@ -158,7 +120,7 @@ pipeline { steps{ script{ env.EXT_RELEASE_CLEAN = sh( - script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/ ]//g' ''', + script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g' ''', returnStdout: true).trim() def semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)\.(\d+)/ @@ -176,7 +138,7 @@ pipeline { } if (env.SEMVER != null) { - if (BRANCH_NAME != "${env.GH_DEFAULT_BRANCH}") { + if (BRANCH_NAME != "master" && BRANCH_NAME != "main") { env.SEMVER = "${env.SEMVER}-${BRANCH_NAME}" } println("SEMVER: ${env.SEMVER}") @@ -207,8 +169,6 @@ pipeline { env.VERSION_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.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' } } } @@ -233,8 +193,6 @@ pipeline { env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN 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.CITEST_IMAGETAG = 'develop' } } } @@ -259,8 +217,6 @@ pipeline { env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN 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.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' } } } @@ -283,11 +239,9 @@ pipeline { -v ${WORKSPACE}:/mnt \ -e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \ -e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \ - ghcr.io/linuxserver/baseimage-alpine:3 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\ - apk add --no-cache python3 && \ - python3 -m venv /lsiopy && \ - pip install --no-cache-dir -U pip && \ - pip install --no-cache-dir s3cmd && \ + ghcr.io/linuxserver/baseimage-alpine:3.17 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\ + apk add --no-cache py3-pip && \ + pip install s3cmd && \ s3cmd put --no-preserve --acl-public -m text/xml /mnt/shellcheck-result.xml s3://ci-tests.linuxserver.io/${IMAGE}/${META_TAG}/shellcheck-result.xml" || :''' } } @@ -306,15 +260,8 @@ pipeline { set -e TEMPDIR=$(mktemp -d) docker pull ghcr.io/linuxserver/jenkins-builder:latest - # Cloned repo paths for templating: - # ${TEMPDIR}/docker-${CONTAINER_NAME}: Cloned branch main of ${LS_USER}/${LS_REPO} for running the jenkins builder on - # ${TEMPDIR}/repo/${LS_REPO}: Cloned branch main of ${LS_USER}/${LS_REPO} for commiting various templated file changes and pushing back to Github - # ${TEMPDIR}/docs/docker-documentation: Cloned docs repo for pushing docs updates to Github - # ${TEMPDIR}/unraid/docker-templates: Cloned docker-templates repo to check for logos - # ${TEMPDIR}/unraid/templates: Cloned templates repo for commiting unraid template changes and pushing back to Github - git clone --branch main --depth 1 https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/docker-${CONTAINER_NAME} - docker run --rm -v ${TEMPDIR}/docker-${CONTAINER_NAME}:/tmp -e LOCAL=true -e PUID=$(id -u) -e PGID=$(id -g) ghcr.io/linuxserver/jenkins-builder:latest - echo "Starting Stage 1 - Jenkinsfile update" + docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=main -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest + # Stage 1 - Jenkinsfile update if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then mkdir -p ${TEMPDIR}/repo git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO} @@ -323,17 +270,16 @@ pipeline { cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/ git add Jenkinsfile git commit -m 'Bot Updating Templated Files' - git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git main - git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git main + git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} - echo "Updating Jenkinsfile and exiting build, new one will trigger based on commit" + echo "Updating Jenkinsfile" rm -Rf ${TEMPDIR} exit 0 else echo "Jenkinsfile is up to date." fi - echo "Starting Stage 2 - Delete old templates" - OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md .github/ISSUE_TEMPLATE/issue.bug.md .github/ISSUE_TEMPLATE/issue.feature.md .github/workflows/call_invalid_helper.yml .github/workflows/stale.yml .github/workflows/package_trigger.yml" + # Stage 2 - Delete old templates + OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md .github/ISSUE_TEMPLATE/issue.bug.md .github/ISSUE_TEMPLATE/issue.feature.md .github/workflows/call_invalid_helper.yml .github/workflows/stale.yml Dockerfile.armhf" for i in ${OLD_TEMPLATES}; do if [[ -f "${i}" ]]; then TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}" @@ -348,45 +294,15 @@ pipeline { git rm "${i}" done git commit -m 'Bot Updating Templated Files' - git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git main - git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git main + git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} - echo "Deleting old/deprecated templates and exiting build, new one will trigger based on commit" + echo "Deleting old and deprecated templates" rm -Rf ${TEMPDIR} exit 0 else echo "No templates to delete" fi - echo "Starting Stage 2.5 - Update init diagram" - if ! grep -q 'init_diagram:' readme-vars.yml; then - echo "Adding the key 'init_diagram' to readme-vars.yml" - sed -i '\\|^#.*changelog.*$|d' readme-vars.yml - sed -i 's|^changelogs:|# init diagram\\ninit_diagram:\\n\\n# changelog\\nchangelogs:|' readme-vars.yml - fi - mkdir -p ${TEMPDIR}/d2 - docker run --rm -v ${TEMPDIR}/d2:/output -e PUID=$(id -u) -e PGID=$(id -g) -e RAW="true" ghcr.io/linuxserver/d2-builder:latest ${CONTAINER_NAME}:latest - ls -al ${TEMPDIR}/d2 - yq -ei ".init_diagram |= load_str(\\"${TEMPDIR}/d2/${CONTAINER_NAME}-latest.d2\\")" readme-vars.yml - if [[ $(md5sum readme-vars.yml | cut -c1-8) != $(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/readme-vars.yml | cut -c1-8) ]]; then - echo "'init_diagram' has been updated. Updating repo and exiting build, new one will trigger based on commit." - mkdir -p ${TEMPDIR}/repo - git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO} - cd ${TEMPDIR}/repo/${LS_REPO} - git checkout -f main - cp ${WORKSPACE}/readme-vars.yml ${TEMPDIR}/repo/${LS_REPO}/readme-vars.yml - git add readme-vars.yml - git commit -m 'Bot Updating Templated Files' - git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git main - git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git main - echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} - echo "Updating templates and exiting build, new one will trigger based on commit" - rm -Rf ${TEMPDIR} - exit 0 - else - echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} - echo "Init diagram is unchanged" - fi - echo "Starting Stage 3 - Update templates" + # Stage 3 - Update templates CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8) cd ${TEMPDIR}/docker-${CONTAINER_NAME} NEWHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8) @@ -407,50 +323,31 @@ pipeline { fi git add readme-vars.yml ${TEMPLATED_FILES} git commit -m 'Bot Updating Templated Files' - git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git main - git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git main + git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} - echo "Updating templates and exiting build, new one will trigger based on commit" - rm -Rf ${TEMPDIR} - exit 0 else echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} - echo "No templates to update" fi - echo "Starting Stage 4 - External repo updates: Docs, Unraid Template and Readme Sync to Docker Hub" mkdir -p ${TEMPDIR}/docs - git clone --depth=1 https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/docs/docker-documentation - if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]] && [[ (! -f ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then + git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/docs/docker-documentation + if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md ${TEMPDIR}/docs/docker-documentation/docs/images/ cd ${TEMPDIR}/docs/docker-documentation - GH_DOCS_DEFAULT_BRANCH=$(git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||') git add docs/images/docker-${CONTAINER_NAME}.md - echo "Updating docs repo" git commit -m 'Bot Updating Documentation' - git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH} --rebase - git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH} || \ - (MAXWAIT="10" && echo "Push to docs failed, trying again in ${MAXWAIT} seconds" && \ - sleep $((RANDOM % MAXWAIT)) && \ - git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH} --rebase && \ - git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH}) - else - echo "Docs update not needed, skipping" + git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git --all fi mkdir -p ${TEMPDIR}/unraid - git clone --depth=1 https://github.com/linuxserver/docker-templates.git ${TEMPDIR}/unraid/docker-templates - git clone --depth=1 https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/templates + git clone https://github.com/linuxserver/docker-templates.git ${TEMPDIR}/unraid/docker-templates + git clone https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/templates if [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-logo.png ]]; then sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-logo.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml elif [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-icon.png ]]; then sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-icon.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml fi - if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]] && [[ (! -f ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml) || ("$(md5sum ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml | awk '{ print $1 }')") ]]; then - echo "Updating Unraid template" + if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml) || ("$(md5sum ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml | awk '{ print $1 }')") ]]; then cd ${TEMPDIR}/unraid/templates/ - GH_TEMPLATES_DEFAULT_BRANCH=$(git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||') - if grep -wq "^${CONTAINER_NAME}$" ${TEMPDIR}/unraid/templates/unraid/ignore.list && [[ -f ${TEMPDIR}/unraid/templates/unraid/deprecated/${CONTAINER_NAME}.xml ]]; then - echo "Image is on the ignore list, and already in the deprecation folder." - elif grep -wq "^${CONTAINER_NAME}$" ${TEMPDIR}/unraid/templates/unraid/ignore.list; then + if grep -wq "${CONTAINER_NAME}" ${TEMPDIR}/unraid/templates/unraid/ignore.list; then echo "Image is on the ignore list, marking Unraid template as deprecated" cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/ git add -u unraid/${CONTAINER_NAME}.xml @@ -461,42 +358,7 @@ pipeline { git add unraid/${CONTAINER_NAME}.xml git commit -m 'Bot Updating Unraid Template' fi - git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH} --rebase - git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH} || \ - (MAXWAIT="10" && echo "Push to unraid templates failed, trying again in ${MAXWAIT} seconds" && \ - sleep $((RANDOM % MAXWAIT)) && \ - git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH} --rebase && \ - git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH}) - else - echo "No updates to Unraid template needed, skipping" - fi - if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]]; then - if [[ $(cat ${TEMPDIR}/docker-${CONTAINER_NAME}/README.md | wc -m) -gt 25000 ]]; then - echo "Readme is longer than 25,000 characters. Syncing the lite version to Docker Hub" - DH_README_SYNC_PATH="${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/README.lite" - else - echo "Syncing readme to Docker Hub" - DH_README_SYNC_PATH="${TEMPDIR}/docker-${CONTAINER_NAME}/README.md" - fi - if curl -s https://hub.docker.com/v2/namespaces/${DOCKERHUB_IMAGE%%/*}/repositories/${DOCKERHUB_IMAGE##*/}/tags | jq -r '.message' | grep -q 404; then - echo "Docker Hub endpoint doesn't exist. Creating endpoint first." - DH_TOKEN=$(curl -d '{"username":"linuxserverci", "password":"'${DOCKERHUB_TOKEN}'"}' -H "Content-Type: application/json" -X POST https://hub.docker.com/v2/users/login | jq -r '.token') - curl -s \ - -H "Authorization: JWT ${DH_TOKEN}" \ - -H "Content-Type: application/json" \ - -X POST \ - -d '{"name":"'${DOCKERHUB_IMAGE##*/}'", "namespace":"'${DOCKERHUB_IMAGE%%/*}'"}' \ - https://hub.docker.com/v2/repositories/ || : - fi - DH_TOKEN=$(curl -d '{"username":"linuxserverci", "password":"'${DOCKERHUB_TOKEN}'"}' -H "Content-Type: application/json" -X POST https://hub.docker.com/v2/users/login | jq -r '.token') - curl -s \ - -H "Authorization: JWT ${DH_TOKEN}" \ - -H "Content-Type: application/json" \ - -X PATCH \ - -d "{\\"full_description\\":$(jq -Rsa . ${DH_README_SYNC_PATH})}" \ - https://hub.docker.com/v2/repositories/${DOCKERHUB_IMAGE} || : - else - echo "Not the default Github branch. Skipping readme sync to Docker Hub." + git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git --all fi rm -Rf ${TEMPDIR}''' script{ @@ -543,27 +405,23 @@ pipeline { } } /* ####################### - GitLab Mirroring and Quay.io Repo Visibility + GitLab Mirroring ####################### */ - // Ping into Gitlab to mirror this repo and have a registry endpoint & mark this repo on Quay.io as public - stage("GitLab Mirror and Quay.io Visibility"){ + // Ping into Gitlab to mirror this repo and have a registry endpoint + stage("GitLab Mirror"){ when { environment name: 'EXIT_STATUS', value: '' } steps{ sh '''curl -H "Content-Type: application/json" -H "Private-Token: ${GITLAB_TOKEN}" -X POST https://gitlab.com/api/v4/projects \ - -d '{"namespace_id":'${GITLAB_NAMESPACE}',\ - "name":"'${LS_REPO}'", - "mirror":true,\ - "import_url":"https://github.com/linuxserver/'${LS_REPO}'.git",\ - "issues_access_level":"disabled",\ - "merge_requests_access_level":"disabled",\ - "repository_access_level":"enabled",\ - "visibility":"public"}' ''' - sh '''curl -H "Private-Token: ${GITLAB_TOKEN}" -X PUT "https://gitlab.com/api/v4/projects/Linuxserver.io%2F${LS_REPO}" \ - -d "mirror=true&import_url=https://github.com/linuxserver/${LS_REPO}.git" ''' - sh '''curl -H "Content-Type: application/json" -H "Authorization: Bearer ${QUAYIO_API_TOKEN}" -X POST "https://quay.io/api/v1/repository${QUAYIMAGE/quay.io/}/changevisibility" \ - -d '{"visibility":"public"}' ||: ''' + -d '{"namespace_id":'${GITLAB_NAMESPACE}',\ + "name":"'${LS_REPO}'", + "mirror":true,\ + "import_url":"https://github.com/linuxserver/'${LS_REPO}'.git",\ + "issues_access_level":"disabled",\ + "merge_requests_access_level":"disabled",\ + "repository_access_level":"enabled",\ + "visibility":"public"}' ''' } } /* ############### @@ -594,45 +452,7 @@ pipeline { --label \"org.opencontainers.image.title=Audacity\" \ --label \"org.opencontainers.image.description=[Audacity](https://www.audacityteam.org/) is an easy-to-use, multi-track audio editor and recorder. Developed by a group of volunteers as open source.\" \ --no-cache --pull -t ${IMAGE}:${META_TAG} --platform=linux/amd64 \ - --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} ." - sh '''#! /bin/bash - set -e - IFS=',' read -ra CACHE <<< "$BUILDCACHE" - for i in "${CACHE[@]}"; do - docker tag ${IMAGE}:${META_TAG} ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} - done - ''' - withCredentials([ - [ - $class: 'UsernamePasswordMultiBinding', - credentialsId: 'Quay.io-Robot', - usernameVariable: 'QUAYUSER', - passwordVariable: 'QUAYPASS' - ] - ]) { - retry_backoff(5,5) { - sh '''#! /bin/bash - set -e - echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --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 $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin - - if [[ "${PACKAGE_CHECK}" != "true" ]]; then - declare -A pids - IFS=',' read -ra CACHE <<< "$BUILDCACHE" - for i in "${CACHE[@]}"; do - 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 - fi - ''' - } - } } } // Build MultiArch Docker containers for push to LS Repo @@ -663,45 +483,7 @@ pipeline { --label \"org.opencontainers.image.title=Audacity\" \ --label \"org.opencontainers.image.description=[Audacity](https://www.audacityteam.org/) is an easy-to-use, multi-track audio editor and recorder. Developed by a group of volunteers as open source.\" \ --no-cache --pull -t ${IMAGE}:amd64-${META_TAG} --platform=linux/amd64 \ - --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} ." - sh '''#! /bin/bash - set -e - IFS=',' read -ra CACHE <<< "$BUILDCACHE" - for i in "${CACHE[@]}"; do - docker tag ${IMAGE}:amd64-${META_TAG} ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} - done - ''' - withCredentials([ - [ - $class: 'UsernamePasswordMultiBinding', - credentialsId: 'Quay.io-Robot', - usernameVariable: 'QUAYUSER', - passwordVariable: 'QUAYPASS' - ] - ]) { - retry_backoff(5,5) { - sh '''#! /bin/bash - set -e - echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --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 $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin - - if [[ "${PACKAGE_CHECK}" != "true" ]]; then - declare -A pids - IFS=',' read -ra CACHE <<< "$BUILDCACHE" - for i in "${CACHE[@]}"; do - 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 - fi - ''' - } - } } } stage('Build ARM64') { @@ -710,6 +492,10 @@ pipeline { } steps { echo "Running on node: ${NODE_NAME}" + echo 'Logging into Github' + sh '''#! /bin/bash + echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin + ''' sh "sed -r -i 's|(^FROM .*)|\\1\\n\\nENV LSIO_FIRST_PARTY=true|g' Dockerfile.aarch64" sh "docker buildx build \ --label \"org.opencontainers.image.created=${GITHUB_DATE}\" \ @@ -725,52 +511,17 @@ pipeline { --label \"org.opencontainers.image.title=Audacity\" \ --label \"org.opencontainers.image.description=[Audacity](https://www.audacityteam.org/) is an easy-to-use, multi-track audio editor and recorder. Developed by a group of volunteers as open source.\" \ --no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} --platform=linux/arm64 \ - --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} ." - sh '''#! /bin/bash - set -e - IFS=',' read -ra CACHE <<< "$BUILDCACHE" - for i in "${CACHE[@]}"; do - docker tag ${IMAGE}:arm64v8-${META_TAG} ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} - done - ''' - withCredentials([ - [ - $class: 'UsernamePasswordMultiBinding', - credentialsId: 'Quay.io-Robot', - usernameVariable: 'QUAYUSER', - passwordVariable: 'QUAYPASS' - ] - ]) { - retry_backoff(5,5) { - sh '''#! /bin/bash - set -e - echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --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 $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin - if [[ "${PACKAGE_CHECK}" != "true" ]]; then - declare -A pids - IFS=',' read -ra CACHE <<< "$BUILDCACHE" - for i in "${CACHE[@]}"; do - 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 - fi - ''' - } + sh "docker tag ${IMAGE}:arm64v8-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}" + retry(5) { + sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}" } sh '''#! /bin/bash containers=$(docker ps -aq) if [[ -n "${containers}" ]]; then docker stop ${containers} fi - docker system prune -f --volumes || : - docker image prune -af || : - ''' + docker system prune -af --volumes || : ''' } } } @@ -786,7 +537,7 @@ pipeline { sh '''#! /bin/bash set -e TEMPDIR=$(mktemp -d) - if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" != "true" ]; then + if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then LOCAL_CONTAINER=${IMAGE}:amd64-${META_TAG} else LOCAL_CONTAINER=${IMAGE}:${META_TAG} @@ -795,7 +546,7 @@ pipeline { docker run --rm \ -v /var/run/docker.sock:/var/run/docker.sock:ro \ -v ${TEMPDIR}:/tmp \ - ghcr.io/anchore/syft:${SYFT_IMAGE_TAG} \ + ghcr.io/anchore/syft:latest \ ${LOCAL_CONTAINER} -o table=/tmp/package_versions.txt 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" @@ -807,8 +558,7 @@ pipeline { wait git add package_versions.txt git commit -m 'Bot Updating Package Versions' - git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git main - git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git main + git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all echo "true" > /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER} echo "Package tag updated, stopping build process" else @@ -874,27 +624,18 @@ pipeline { } sh '''#! /bin/bash set -e - if grep -q 'docker-baseimage' <<< "${LS_REPO}"; then - echo "Detected baseimage, setting LSIO_FIRST_PARTY=true" - if [ -n "${CI_DOCKERENV}" ]; then - CI_DOCKERENV="LSIO_FIRST_PARTY=true|${CI_DOCKERENV}" - else - CI_DOCKERENV="LSIO_FIRST_PARTY=true" - fi - fi - docker pull ghcr.io/linuxserver/ci:${CITEST_IMAGETAG} + docker pull ghcr.io/linuxserver/ci:latest 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} docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG} fi docker run --rm \ --shm-size=1gb \ -v /var/run/docker.sock:/var/run/docker.sock \ -e IMAGE=\"${IMAGE}\" \ - -e DOCKER_LOGS_TIMEOUT=\"${CI_DELAY}\" \ + -e DELAY_START=\"${CI_DELAY}\" \ -e TAGS=\"${CI_TAGS}\" \ -e META_TAG=\"${META_TAG}\" \ - -e RELEASE_TAG=\"latest\" \ -e PORT=\"${CI_PORT}\" \ -e SSL=\"${CI_SSL}\" \ -e BASE=\"${DIST_IMAGE}\" \ @@ -904,11 +645,7 @@ pipeline { -e WEB_SCREENSHOT=\"${CI_WEB}\" \ -e WEB_AUTH=\"${CI_AUTH}\" \ -e WEB_PATH=\"${CI_WEBPATH}\" \ - -e NODE_NAME=\"${NODE_NAME}\" \ - -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} \ + -t ghcr.io/linuxserver/ci:latest \ python3 test_build.py''' } } @@ -923,25 +660,43 @@ pipeline { environment name: 'EXIT_STATUS', value: '' } steps { - retry_backoff(5,5) { - sh '''#! /bin/bash - set -e - for PUSHIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do - [[ ${PUSHIMAGE%%/*} =~ \\. ]] && PUSHIMAGEPLUS="${PUSHIMAGE}" || PUSHIMAGEPLUS="docker.io/${PUSHIMAGE}" - IFS=',' read -ra CACHE <<< "$BUILDCACHE" - for i in "${CACHE[@]}"; do - if [[ "${PUSHIMAGEPLUS}" == "$(cut -d "/" -f1 <<< ${i})"* ]]; then - CACHEIMAGE=${i} - fi + withCredentials([ + [ + $class: 'UsernamePasswordMultiBinding', + credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207', + usernameVariable: 'DOCKERUSER', + passwordVariable: 'DOCKERPASS' + ], + [ + $class: 'UsernamePasswordMultiBinding', + credentialsId: 'Quay.io-Robot', + usernameVariable: 'QUAYUSER', + passwordVariable: 'QUAYPASS' + ] + ]) { + retry(5) { + sh '''#! /bin/bash + set -e + echo $DOCKERPASS | docker login -u $DOCKERUSER --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 $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin + for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do + docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG} + docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:latest + docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG} + if [ -n "${SEMVER}" ]; then + docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${SEMVER} + fi + docker push ${PUSHIMAGE}:latest + docker push ${PUSHIMAGE}:${META_TAG} + docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG} + if [ -n "${SEMVER}" ]; then + docker push ${PUSHIMAGE}:${SEMVER} + fi 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} || \ - { if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; } - if [ -n "${SEMVER}" ]; then - docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \ - { if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; } - fi - done - ''' + ''' + } } } } @@ -952,41 +707,85 @@ pipeline { environment name: 'EXIT_STATUS', value: '' } steps { - retry_backoff(5,5) { - sh '''#! /bin/bash - set -e - for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do - [[ ${MANIFESTIMAGE%%/*} =~ \\. ]] && MANIFESTIMAGEPLUS="${MANIFESTIMAGE}" || MANIFESTIMAGEPLUS="docker.io/${MANIFESTIMAGE}" - IFS=',' read -ra CACHE <<< "$BUILDCACHE" - for i in "${CACHE[@]}"; do - if [[ "${MANIFESTIMAGEPLUS}" == "$(cut -d "/" -f1 <<< ${i})"* ]]; then - CACHEIMAGE=${i} - fi + withCredentials([ + [ + $class: 'UsernamePasswordMultiBinding', + credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207', + usernameVariable: 'DOCKERUSER', + passwordVariable: 'DOCKERPASS' + ], + [ + $class: 'UsernamePasswordMultiBinding', + credentialsId: 'Quay.io-Robot', + usernameVariable: 'QUAYUSER', + passwordVariable: 'QUAYPASS' + ] + ]) { + retry(5) { + sh '''#! /bin/bash + set -e + echo $DOCKERPASS | docker login -u $DOCKERUSER --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 $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin + if [ "${CI}" == "false" ]; then + docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} + docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG} + fi + for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do + docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} + docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-latest + docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} + docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} + docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-latest + docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} + if [ -n "${SEMVER}" ]; then + docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER} + docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER} + fi + docker push ${MANIFESTIMAGE}:amd64-${META_TAG} + docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} + docker push ${MANIFESTIMAGE}:amd64-latest + docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG} + docker push ${MANIFESTIMAGE}:arm64v8-latest + docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} + if [ -n "${SEMVER}" ]; then + docker push ${MANIFESTIMAGE}:amd64-${SEMVER} + docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER} + fi + docker manifest push --purge ${MANIFESTIMAGE}:latest || : + docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest + docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm64v8-latest --os linux --arch arm64 --variant v8 + docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || : + docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} + docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8 + docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} || : + docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} + docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8 + if [ -n "${SEMVER}" ]; then + docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || : + docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} + docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8 + fi + token=$(curl -sX GET "https://ghcr.io/token?scope=repository%3Alinuxserver%2F${CONTAINER_NAME}%3Apull" | jq -r '.token') + digest=$(curl -s \ + --header "Accept: application/vnd.docker.distribution.manifest.v2+json" \ + --header "Authorization: Bearer ${token}" \ + "https://ghcr.io/v2/linuxserver/${CONTAINER_NAME}/manifests/arm32v7-latest") + if [[ $(echo "$digest" | jq -r '.layers') != "null" ]]; then + docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest || : + docker manifest create ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:amd64-latest + docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest + fi + docker manifest push --purge ${MANIFESTIMAGE}:latest + docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} + docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} + if [ -n "${SEMVER}" ]; then + docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} + fi 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} || \ - { 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 - docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${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 - done - for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do - docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest || \ - { if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; } - 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}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} || \ - { if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; } - if [ -n "${SEMVER}" ]; then - docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} || \ - { if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; } - fi - done - ''' + ''' + } } } } @@ -1001,41 +800,23 @@ pipeline { environment name: 'EXIT_STATUS', value: '' } 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 main",\ + "type": "commit",\ + "tagger": {"name": "LinuxServer Jenkins","email": "jenkins@linuxserver.io","date": "'${GITHUB_DATE}'"}}' ''' + echo "Pushing New release for Tag" 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": "main"}' \ - | 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 main",\ - "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 - jq -n \ - --arg tag_name "$META_TAG" \ - --arg target_commitish "main" \ - --arg ci_url "${CI_URL:-N/A}" \ - --arg ls_notes "$AUTO_RELEASE_NOTES" \ - --arg remote_notes "$(cat releasebody.json)" \ - '{ - "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 - ''' + echo '{"tag_name":"'${META_TAG}'",\ + "target_commitish": "main",\ + "name": "'${META_TAG}'",\ + "body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**Remote Changes:**\\n\\n' > start + printf '","draft": false,"prerelease": false}' >> releasebody.json + paste -d'\\0' start releasebody.json > 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 @@ -1073,6 +854,39 @@ EOF ) ''' } } + // Use helper container to sync the current README on master to the dockerhub endpoint + stage('Sync-README') { + when { + environment name: 'CHANGE_ID', value: '' + environment name: 'EXIT_STATUS', value: '' + } + steps { + withCredentials([ + [ + $class: 'UsernamePasswordMultiBinding', + credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207', + usernameVariable: 'DOCKERUSER', + passwordVariable: 'DOCKERPASS' + ] + ]) { + sh '''#! /bin/bash + set -e + TEMPDIR=$(mktemp -d) + docker pull ghcr.io/linuxserver/jenkins-builder:latest + docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH="${BRANCH_NAME}" -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest + docker pull ghcr.io/linuxserver/readme-sync + docker run --rm=true \ + -e DOCKERHUB_USERNAME=$DOCKERUSER \ + -e DOCKERHUB_PASSWORD=$DOCKERPASS \ + -e GIT_REPOSITORY=${LS_USER}/${LS_REPO} \ + -e DOCKER_REPOSITORY=${IMAGE} \ + -e GIT_BRANCH=master \ + -v ${TEMPDIR}/docker-${CONTAINER_NAME}:/mnt \ + ghcr.io/linuxserver/readme-sync bash -c 'node sync' + rm -Rf ${TEMPDIR} ''' + } + } + } // If this is a Pull request send the CI link as a comment on it stage('Pull Request Comment') { when { @@ -1157,94 +971,32 @@ EOF ###################### */ post { always { - sh '''#!/bin/bash - rm -rf /config/.ssh/id_sign - rm -rf /config/.ssh/id_sign.pub - git config --global --unset gpg.format - git config --global --unset user.signingkey - git config --global --unset commit.gpgsign - ''' script{ - env.JOB_DATE = sh( - script: '''date '+%Y-%m-%dT%H:%M:%S%:z' ''', - returnStdout: true).trim() if (env.EXIT_STATUS == "ABORTED"){ sh 'echo "build aborted"' - }else{ - if (currentBuild.currentResult == "SUCCESS"){ - if (env.GITHUBIMAGE =~ /lspipepr/){ - env.JOB_WEBHOOK_STATUS='Success' - env.JOB_WEBHOOK_COLOUR=3957028 - env.JOB_WEBHOOK_FOOTER='PR Build' - }else if (env.GITHUBIMAGE =~ /lsiodev/){ - env.JOB_WEBHOOK_STATUS='Success' - env.JOB_WEBHOOK_COLOUR=3957028 - env.JOB_WEBHOOK_FOOTER='Dev Build' - }else{ - env.JOB_WEBHOOK_STATUS='Success' - env.JOB_WEBHOOK_COLOUR=1681177 - env.JOB_WEBHOOK_FOOTER='Live Build' - } - }else{ - if (env.GITHUBIMAGE =~ /lspipepr/){ - env.JOB_WEBHOOK_STATUS='Failure' - env.JOB_WEBHOOK_COLOUR=12669523 - env.JOB_WEBHOOK_FOOTER='PR Build' - }else if (env.GITHUBIMAGE =~ /lsiodev/){ - env.JOB_WEBHOOK_STATUS='Failure' - env.JOB_WEBHOOK_COLOUR=12669523 - env.JOB_WEBHOOK_FOOTER='Dev Build' - }else{ - env.JOB_WEBHOOK_STATUS='Failure' - env.JOB_WEBHOOK_COLOUR=16711680 - env.JOB_WEBHOOK_FOOTER='Live Build' - } - } - sh ''' curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/jenkins-avatar.png","embeds": [{"'color'": '${JOB_WEBHOOK_COLOUR}',\ - "footer": {"text" : "'"${JOB_WEBHOOK_FOOTER}"'"},\ - "timestamp": "'${JOB_DATE}'",\ - "description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**ShellCheck Results:** '${SHELLCHECK_URL}'\\n**Status:** '${JOB_WEBHOOK_STATUS}'\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\ + } + else if (currentBuild.currentResult == "SUCCESS"){ + sh ''' curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/jenkins-avatar.png","embeds": [{"color": 1681177,\ + "description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**ShellCheck Results:** '${SHELLCHECK_URL}'\\n**Status:** Success\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\ + "username": "Jenkins"}' ${BUILDS_DISCORD} ''' + } + else { + sh ''' curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/jenkins-avatar.png","embeds": [{"color": 16711680,\ + "description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**ShellCheck Results:** '${SHELLCHECK_URL}'\\n**Status:** failure\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\ "username": "Jenkins"}' ${BUILDS_DISCORD} ''' } } } cleanup { sh '''#! /bin/bash - echo "Pruning builder!!" - docker builder prune -f --builder container || : - containers=$(docker ps -q) + echo "Performing docker system prune!!" + containers=$(docker ps -aq) if [[ -n "${containers}" ]]; then - 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 + docker stop ${containers} fi - docker system prune -f --volumes || : - docker image prune -af || : + docker system prune -af --volumes || : ''' cleanWs() } } } - -def retry_backoff(int max_attempts, int power_base, Closure c) { - int n = 0 - while (n < max_attempts) { - try { - c() - return - } catch (err) { - if ((n + 1) >= max_attempts) { - throw err - } - sleep(power_base ** n) - n++ - } - } - return -} diff --git a/README.md b/README.md index 943884c..362c5d1 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,9 @@ [![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)](https://linuxserver.io) [![Blog](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Blog)](https://blog.linuxserver.io "all the things you can do with our containers including How-To guides, opinions and much more!") -[![Discord](https://img.shields.io/discord/354974912613449730.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Discord&logo=discord)](https://linuxserver.io/discord "realtime support / chat with the community and the team.") +[![Discord](https://img.shields.io/discord/354974912613449730.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Discord&logo=discord)](https://discord.gg/YWrKVTn "realtime support / chat with the community and the team.") [![Discourse](https://img.shields.io/discourse/https/discourse.linuxserver.io/topics.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=discourse)](https://discourse.linuxserver.io "post on our community forum.") +[![Fleet](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Fleet)](https://fleet.linuxserver.io "an online web interface which displays all of our maintained images.") [![GitHub](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub&logo=github)](https://github.com/linuxserver "view the source for all of our repositories.") [![Open Collective](https://img.shields.io/opencollective/all/linuxserver.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Supporters&logo=open%20collective)](https://opencollective.com/linuxserver "please consider helping us by either donating or contributing to our budget") @@ -19,14 +20,15 @@ The [LinuxServer.io](https://linuxserver.io) team brings you another container r Find us at: * [Blog](https://blog.linuxserver.io) - all the things you can do with our containers including How-To guides, opinions and much more! -* [Discord](https://linuxserver.io/discord) - realtime support / chat with the community and the team. +* [Discord](https://discord.gg/YWrKVTn) - realtime support / chat with the community and the team. * [Discourse](https://discourse.linuxserver.io) - post on our community forum. +* [Fleet](https://fleet.linuxserver.io) - an online web interface which displays all of our maintained images. * [GitHub](https://github.com/linuxserver) - view the source for all of our repositories. * [Open Collective](https://opencollective.com/linuxserver) - please consider helping us by either donating or contributing to our budget # [linuxserver/audacity](https://github.com/linuxserver/docker-audacity) -[![Scarf.io pulls](https://scarf.sh/installs-badge/linuxserver-ci/linuxserver%2Faudacity?color=94398d&label-color=555555&logo-color=ffffff&style=for-the-badge&package-type=docker)](https://scarf.sh) +[![Scarf.io pulls](https://scarf.sh/installs-badge/linuxserver-ci/linuxserver%2Faudacity?color=94398d&label-color=555555&logo-color=ffffff&style=for-the-badge&package-type=docker)](https://scarf.sh/gateway/linuxserver-ci/docker/linuxserver%2Faudacity) [![GitHub Stars](https://img.shields.io/github/stars/linuxserver/docker-audacity.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-audacity) [![GitHub Release](https://img.shields.io/github/release/linuxserver/docker-audacity.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-audacity/releases) [![GitHub Package Repository](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub%20Package&logo=github)](https://github.com/linuxserver/docker-audacity/packages) @@ -43,7 +45,7 @@ Find us at: ## 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://github.com/docker/distribution/blob/master/docs/spec/manifest-v2-2.md#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/). Simply pulling `lscr.io/linuxserver/audacity:latest` should retrieve the correct image for your arch, but you can also pull specific arch images via tags. @@ -53,310 +55,54 @@ The architectures supported by this image are: | :----: | :----: | ---- | | x86-64 | ✅ | amd64-\ | | arm64 | ❌ | | +| armhf | ❌ | | ## Application Setup The application can be accessed at: +* http://yourhost:3000/ * https://yourhost:3001/ -### Strict reverse proxies +### Options in all KasmVNC based GUI containers -This image uses a self-signed certificate by default. This naturally means the scheme is `https`. -If you are using a reverse proxy which validates certificates, you need to [disable this check for the container](https://docs.linuxserver.io/faq#strict-proxy). +This container is based on [Docker Baseimage KasmVNC](https://github.com/linuxserver/docker-baseimage-kasmvnc) which means there are additional environment variables and run configurations to enable or disable specific functionality. -**Modern GUI desktop apps may have compatibility issues with the latest Docker syscall restrictions. You can use Docker with the `--security-opt seccomp=unconfined` setting to allow these syscalls on hosts with older Kernels or libseccomp versions.** - -### Security - ->[!WARNING] ->This container provides privileged access to the host system. Do not expose it to the Internet unless you have secured it properly. - -**HTTPS is required for full functionality.** Modern browser features such as WebCodecs, used for video and audio, will not function over an insecure HTTP connection. - -By default, this container has no authentication. The optional `CUSTOM_USER` and `PASSWORD` environment variables enable basic HTTP auth, which is suitable only for securing the container on a trusted local network. For internet exposure, we strongly recommend placing the container behind a reverse proxy, such as [SWAG](https://github.com/linuxserver/docker-swag), with a robust authentication mechanism. - -The web interface includes a terminal with passwordless `sudo` access. Any user with access to the GUI can gain root control within the container, install arbitrary software, and probe your local network. - -While not generally recommended, certain legacy environments specifically those with older hardware or outdated Linux distributions may require the deactivation of the standard seccomp profile to get containerized desktop software to run. This can be achieved by utilizing the `--security-opt seccomp=unconfined` parameter. It is critical to use this option only when absolutely necessary as it disables a key security layer of Docker, elevating the potential for container escape vulnerabilities. - -### Options in all Selkies-based GUI containers - -This container is based on [Docker Baseimage Selkies](https://github.com/linuxserver/docker-baseimage-selkies), which provides the following environment variables and run configurations to customize its functionality. - -#### Optional Environment Variables +#### Optional environment variables | Variable | Description | | :----: | --- | -| CUSTOM_PORT | Internal port the container listens on for http if it needs to be swapped from the default `3000` | -| CUSTOM_HTTPS_PORT | Internal port the container listens on for https if it needs to be swapped from the default `3001` | -| CUSTOM_WS_PORT | Internal port the container listens on for websockets if it needs to be swapped from the default 8082 | +| CUSTOM_PORT | Internal port the container listens on for http if it needs to be swapped from the default 3000. | +| CUSTOM_HTTPS_PORT | Internal port the container listens on for https if it needs to be swapped from the default 3001. | | CUSTOM_USER | HTTP Basic auth username, abc is default. | -| DRI_NODE | Enable VAAPI stream encoding and use the specified device IE `/dev/dri/renderD128` | -| DRINODE | Specify which GPU to use for DRI3 acceleration IE `/dev/dri/renderD129` | | PASSWORD | HTTP Basic auth password, abc is default. If unset there will be no auth | | SUBFOLDER | Subfolder for the application if running a subfolder reverse proxy, need both slashes IE `/subfolder/` | -| TITLE | The page title displayed on the web browser, default "Selkies" | -| DASHBOARD | Allows the user to set their dashboard. Options: `selkies-dashboard`, `selkies-dashboard-zinc`, `selkies-dashboard-wish` | -| FILE_MANAGER_PATH | Modifies the default upload/download file path, path must have proper permissions for abc user | -| START_DOCKER | If set to false a container with privilege will not automatically start the DinD Docker setup | -| DISABLE_IPV6 | If set to true or any value this will disable IPv6 | -| LC_ALL | Set the Language for the container to run as IE `fr_FR.UTF-8` `ar_AE.UTF-8` | -| NO_DECOR | If set the application will run without window borders for use as a PWA. (Decor can be enabled and disabled with Ctrl+Shift+d) | -| NO_FULL | Do not autmatically fullscreen applications when using openbox. | -| NO_GAMEPAD | Disable userspace gamepad interposer injection. | -| DISABLE_ZINK | Do not set the Zink environment variables if a video card is detected (userspace applications will use CPU rendering) | -| DISABLE_DRI3 | Do not use DRI3 acceleration if a video card is detected (userspace applications will use CPU rendering) | -| MAX_RES | Pass a larger maximum resolution for the container default is 16k `15360x8640` | -| WATERMARK_PNG | Full path inside the container to a watermark png IE `/usr/share/selkies/www/icon.png` | -| WATERMARK_LOCATION | Where to paint the image over the stream integer options below | +| TITLE | The page title displayed on the web browser, default "KasmVNC Client". | +| FM_HOME | This is the home directory (landing) for the file manager, default "/config". | +| START_DOCKER | If set to false a container with privilege will not automatically start the DinD Docker setup. | +| DRINODE | If mounting in /dev/dri for [DRI3 GPU Acceleration](https://www.kasmweb.com/kasmvnc/docs/master/gpu_acceleration.html) allows you to specify the device to use IE `/dev/dri/renderD128` | -**`WATERMARK_LOCATION` Options:** -- **1**: Top Left -- **2**: Top Right -- **3**: Bottom Left -- **4**: Bottom Right -- **5**: Centered -- **6**: Animated - -#### Optional Run Configurations - -| Argument | Description | -| :----: | --- | -| `--privileged` | Starts a Docker-in-Docker (DinD) environment. For better performance, mount the Docker data directory from the host, e.g., `-v /path/to/docker-data:/var/lib/docker`. | -| `-v /var/run/docker.sock:/var/run/docker.sock` | Mounts the host's Docker socket to manage host containers from within this container. | -| `--device /dev/dri:/dev/dri` | Mount a GPU into the container, this can be used in conjunction with the `DRINODE` environment variable to leverage a host video card for GPU accelerated applications. Only **Open Source** drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau) | - -### Language Support - Internationalization - -To launch the desktop session in a different language, set the `LC_ALL` environment variable. For example: - -* `-e LC_ALL=zh_CN.UTF-8` - Chinese -* `-e LC_ALL=ja_JP.UTF-8` - Japanese -* `-e LC_ALL=ko_KR.UTF-8` - Korean -* `-e LC_ALL=ar_AE.UTF-8` - Arabic -* `-e LC_ALL=ru_RU.UTF-8` - Russian -* `-e LC_ALL=es_MX.UTF-8` - Spanish (Latin America) -* `-e LC_ALL=de_DE.UTF-8` - German -* `-e LC_ALL=fr_FR.UTF-8` - French -* `-e LC_ALL=nl_NL.UTF-8` - Netherlands -* `-e LC_ALL=it_IT.UTF-8` - Italian - -### DRI3 GPU Acceleration - -For accelerated apps or games, render devices can be mounted into the container and leveraged by applications using: - -`--device /dev/dri:/dev/dri` - -This feature only supports **Open Source** GPU drivers: - -| Driver | Description | -| :----: | --- | -| Intel | i965 and i915 drivers for Intel iGPU chipsets | -| AMD | AMDGPU, Radeon, and ATI drivers for AMD dedicated or APU chipsets | -| NVIDIA | nouveau2 drivers only, closed source NVIDIA drivers lack DRI3 support | - -The `DRINODE` environment variable can be used to point to a specific GPU. - -DRI3 will work on aarch64 given the correct drivers are installed inside the container for your chipset. - -### Nvidia GPU Support - -**Note: Nvidia support is not available for Alpine-based images.** - -Nvidia GPU support is available by leveraging Zink for OpenGL. When a compatible Nvidia GPU is passed through, it will also be **automatically utilized for hardware-accelerated video stream encoding** (using the `x264enc` full-frame profile), significantly reducing CPU load. - -Enable Nvidia support with the following runtime flags: - -| Flag | Description | -| :----: | --- | -| `--gpus all` | Passes all available host GPUs to the container. This can be filtered to specific GPUs. | -| `--runtime nvidia` | Specifies the Nvidia runtime, which provides the necessary drivers and tools from the host. | - -For Docker Compose, you must first configure the Nvidia runtime as the default on the host: - -``` -sudo nvidia-ctk runtime configure --runtime=docker --set-as-default -sudo systemctl restart docker -``` - -Then, assign the GPU to the service in your `compose.yaml`: - -``` -services: - audacity: - image: lscr.io/linuxserver/audacity:latest - deploy: - resources: - reservations: - devices: - - driver: nvidia - count: 1 - capabilities: [compute,video,graphics,utility] -``` - -### Application Management - -There are two methods for installing applications inside the container: PRoot Apps (recommended for persistence) and Native Apps. - -#### PRoot Apps (Persistent) - -Natively installed packages (e.g., via `apt-get install`) will not persist if the container is recreated. To retain applications and their settings across container updates, we recommend using [proot-apps](https://github.com/linuxserver/proot-apps). These are portable applications installed to the user's persistent `$HOME` directory. - -To install an application, use the command line inside the container: - -``` -proot-apps install filezilla -``` - -A list of supported applications is available [here](https://github.com/linuxserver/proot-apps?tab=readme-ov-file#supported-apps). - -#### Native Apps (Non-Persistent) - -You can install packages from the system's native repository using the [universal-package-install](https://github.com/linuxserver/docker-mods/tree/universal-package-install) mod. This method will increase the container's start time and is not persistent. Add the following to your `compose.yaml`: - -```yaml - environment: - - DOCKER_MODS=linuxserver/mods:universal-package-install - - INSTALL_PACKAGES=libfuse2|git|gdb -``` - -#### Hardening - -These variables can be used to lock down the desktop environment for single-application use cases or to restrict user capabilities. - -##### Meta Variables - -These variables act as presets, enabling multiple hardening options at once. Individual options can still be set to override the preset. +#### Optional run configurations | Variable | Description | | :----: | --- | -| **`HARDEN_DESKTOP`** | Enables `DISABLE_OPEN_TOOLS`, `DISABLE_SUDO`, and `DISABLE_TERMINALS`. Also sets related Selkies UI settings (`SELKIES_FILE_TRANSFERS`, `SELKIES_COMMAND_ENABLED`, `SELKIES_UI_SIDEBAR_SHOW_FILES`, `SELKIES_UI_SIDEBAR_SHOW_APPS`) if they are not explicitly set by the user. | -| **`HARDEN_OPENBOX`** | Enables `DISABLE_CLOSE_BUTTON`, `DISABLE_MOUSE_BUTTONS`, and `HARDEN_KEYBINDS`. It also flags `RESTART_APP` if not set by the user, ensuring the primary application is automatically restarted if closed. | +| `--privileged` | Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE `-v /home/user/docker-data:/var/lib/docker`. | +| `-v /var/run/docker.sock:/var/run/docker.sock` | Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. | +| `--device /dev/dri:/dev/dri` | Mount a GPU into the container, this can be used in conjunction with the `DRINODE` environment variable to leverage a host video card for GPU accelerated appplications. Only **Open Source** drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau) | -##### Individual Hardening Variables +### Lossless mode -| Variable | Description | -| :--- | --- | -| **`DISABLE_OPEN_TOOLS`** | If true, disables `xdg-open` and `exo-open` binaries by removing their execute permissions. | -| **`DISABLE_SUDO`** | If true, disables the `sudo` command by removing its execute permissions and invalidating the passwordless sudo configuration. | -| **`DISABLE_TERMINALS`** | If true, disables common terminal emulators by removing their execute permissions and hiding them from the Openbox right-click menu. | -| **`DISABLE_CLOSE_BUTTON`** | If true, removes the close button from window title bars in the Openbox window manager. | -| **`DISABLE_MOUSE_BUTTONS`** | If true, disables the right-click and middle-click context menus and actions within the Openbox window manager. | -| **`HARDEN_KEYBINDS`** | If true, disables default Openbox keybinds that can bypass other hardening options (e.g., `Alt+F4` to close windows, `Alt+Escape` to show the root menu). | -| **`RESTART_APP`** | If true, enables a watchdog service that automatically restarts the main application if it is closed. The user's autostart script is made read-only and root owned to prevent tampering. | - -#### Selkies application settings - -Using environment variables every facet of the application can be configured. - -##### Booleans and Locking -Boolean settings accept `true` or `false`. You can also prevent the user from changing a boolean setting in the UI by appending `|locked`. The UI toggle for this setting will be hidden. - -* **Example**: To force CPU encoding on and prevent the user from disabling it: - ```bash - -e SELKIES_USE_CPU="true|locked" - ``` - -##### Enums and Lists -These settings accept a comma-separated list of values. Their behavior depends on the number of items provided: - -* **Multiple Values**: The first item in the list becomes the default selection, and all items in the list become the available options in the UI dropdown. -* **Single Value**: The provided value becomes the default, and the UI dropdown is hidden because the choice is locked. - -* **Example**: Force the encoder to be `jpeg` with no other options available to the user: - ```bash - -e SELKIES_ENCODER="jpeg" - ``` - -##### Ranges -Range settings define a minimum and maximum for a value (e.g., framerate). - -* **To set a range**: Use a hyphen-separated `min-max` format. The UI will show a slider. -* **To set a fixed value**: Provide a single number. This will lock the value and hide the UI slider. - -* **Example**: Lock the framerate to exactly 60 FPS. - ```bash - -e SELKIES_FRAMERATE="60" - ``` - -##### Manual Resolution Mode -The server can be forced to use a single, fixed resolution for all connecting clients. This mode is automatically activated if `SELKIES_MANUAL_WIDTH`, `SELKIES_MANUAL_HEIGHT`, or `SELKIES_IS_MANUAL_RESOLUTION_MODE` is set. - -* If `SELKIES_MANUAL_WIDTH` and/or `SELKIES_MANUAL_HEIGHT` are set, the resolution is locked to those values. -* If `SELKIES_IS_MANUAL_RESOLUTION_MODE` is set to `true` without specifying width or height, the resolution defaults to **1024x768**. -* When this mode is active, the client UI for changing resolution is disabled. - -| Environment Variable | Default Value | Description | -| --- | --- | --- | -| `SELKIES_UI_TITLE` | `'Selkies'` | Title in top left corner of sidebar. | -| `SELKIES_UI_SHOW_LOGO` | `True` | Show the Selkies logo in the sidebar. | -| `SELKIES_UI_SHOW_SIDEBAR` | `True` | Show the main sidebar UI. | -| `SELKIES_UI_SHOW_CORE_BUTTONS` | `True` | Show the core components buttons display, audio, microphone, and gamepad. | -| `SELKIES_UI_SIDEBAR_SHOW_VIDEO_SETTINGS` | `True` | Show the video settings section in the sidebar. | -| `SELKIES_UI_SIDEBAR_SHOW_SCREEN_SETTINGS` | `True` | Show the screen settings section in the sidebar. | -| `SELKIES_UI_SIDEBAR_SHOW_AUDIO_SETTINGS` | `True` | Show the audio settings section in the sidebar. | -| `SELKIES_UI_SIDEBAR_SHOW_STATS` | `True` | Show the stats section in the sidebar. | -| `SELKIES_UI_SIDEBAR_SHOW_CLIPBOARD` | `True` | Show the clipboard section in the sidebar. | -| `SELKIES_UI_SIDEBAR_SHOW_FILES` | `True` | Show the file transfer section in the sidebar. | -| `SELKIES_UI_SIDEBAR_SHOW_APPS` | `True` | Show the applications section in the sidebar. | -| `SELKIES_UI_SIDEBAR_SHOW_SHARING` | `True` | Show the sharing section in the sidebar. | -| `SELKIES_UI_SIDEBAR_SHOW_GAMEPADS` | `True` | Show the gamepads section in the sidebar. | -| `SELKIES_UI_SIDEBAR_SHOW_FULLSCREEN` | `True` | Show the fullscreen button in the sidebar. | -| `SELKIES_UI_SIDEBAR_SHOW_GAMING_MODE` | `True` | Show the gaming mode button in the sidebar. | -| `SELKIES_UI_SIDEBAR_SHOW_TRACKPAD` | `True` | Show the virtual trackpad button in the sidebar. | -| `SELKIES_UI_SIDEBAR_SHOW_KEYBOARD_BUTTON` | `True` | Show the on-screen keyboard button in the display area. | -| `SELKIES_UI_SIDEBAR_SHOW_SOFT_BUTTONS` | `True` | Show the soft buttons section in the sidebar. | -| `SELKIES_AUDIO_ENABLED` | `True` | Enable server-to-client audio streaming. | -| `SELKIES_MICROPHONE_ENABLED` | `True` | Enable client-to-server microphone forwarding. | -| `SELKIES_GAMEPAD_ENABLED` | `True` | Enable gamepad support. | -| `SELKIES_CLIPBOARD_ENABLED` | `True` | Enable clipboard synchronization. | -| `SELKIES_COMMAND_ENABLED` | `True` | Enable parsing of command websocket messages. | -| `SELKIES_FILE_TRANSFERS` | `'upload,download'` | Allowed file transfer directions (comma-separated: "upload,download"). Set to "" or "none" to disable. | -| `SELKIES_ENCODER` | `'x264enc,x264enc-striped,jpeg'` | The default video encoders. | -| `SELKIES_FRAMERATE` | `'8-120'` | Allowed framerate range or a fixed value. | -| `SELKIES_H264_CRF` | `'5-50'` | Allowed H.264 CRF range or a fixed value. | -| `SELKIES_JPEG_QUALITY` | `'1-100'` | Allowed JPEG quality range or a fixed value. | -| `SELKIES_H264_FULLCOLOR` | `False` | Enable H.264 full color range for pixelflux encoders. | -| `SELKIES_H264_STREAMING_MODE` | `False` | Enable H.264 streaming mode for pixelflux encoders. | -| `SELKIES_USE_CPU` | `False` | Force CPU-based encoding for pixelflux. | -| `SELKIES_USE_PAINT_OVER_QUALITY` | `True` | Enable high-quality paint-over for static scenes. | -| `SELKIES_PAINT_OVER_JPEG_QUALITY` | `'1-100'` | Allowed JPEG paint-over quality range or a fixed value. | -| `SELKIES_H264_PAINTOVER_CRF` | `'5-50'` | Allowed H.264 paint-over CRF range or a fixed value. | -| `SELKIES_H264_PAINTOVER_BURST_FRAMES` | `'1-30'` | Allowed H.264 paint-over burst frames range or a fixed value. | -| `SELKIES_SECOND_SCREEN` | `True` | Enable support for a second monitor/display. | -| `SELKIES_AUDIO_BITRATE` | `'320000'` | The default audio bitrate. | -| `SELKIES_IS_MANUAL_RESOLUTION_MODE` | `False` | Lock the resolution to the manual width/height values. | -| `SELKIES_MANUAL_WIDTH` | `0` | Lock width to a fixed value. Setting this forces manual resolution mode. | -| `SELKIES_MANUAL_HEIGHT` | `0` | Lock height to a fixed value. Setting this forces manual resolution mode. | -| `SELKIES_SCALING_DPI` | `'96'` | The default DPI for UI scaling. | -| `SELKIES_ENABLE_BINARY_CLIPBOARD` | `False` | Allow binary data on the clipboard. | -| `SELKIES_USE_BROWSER_CURSORS` | `False` | Use browser CSS cursors instead of rendering to canvas. | -| `SELKIES_USE_CSS_SCALING` | `False` | HiDPI when false, if true a lower resolution is sent from the client and the canvas is stretched. | -| `SELKIES_PORT` (or `CUSTOM_WS_PORT`) | `8082` | Port for the data websocket server. | -| `SELKIES_DRI_NODE` (or `DRI_NODE`) | `''` | Path to the DRI render node for VA-API. | -| `SELKIES_AUDIO_DEVICE_NAME` | `'output.monitor'` | Audio device name for pcmflux capture. | -| `SELKIES_WATERMARK_PATH` (or `WATERMARK_PNG`) | `''` | Absolute path to the watermark PNG file. | -| `SELKIES_WATERMARK_LOCATION` (or `WATERMARK_LOCATION`) | `-1` | Watermark location enum (0-6). | -| `SELKIES_DEBUG` | `False` | Enable debug logging. | -| `SELKIES_ENABLE_SHARING` | `True` | Master toggle for all sharing features. | -| `SELKIES_ENABLE_COLLAB` | `True` | Enable collaborative (read-write) sharing link. | -| `SELKIES_ENABLE_SHARED` | `True` | Enable view-only sharing links. | -| `SELKIES_ENABLE_PLAYER2` | `True` | Enable sharing link for gamepad player 2. | -| `SELKIES_ENABLE_PLAYER3` | `True` | Enable sharing link for gamepad player 3. | -| `SELKIES_ENABLE_PLAYER4` | `True` | Enable sharing link for gamepad player 4. | +This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to "Lossless", more information [here](https://www.kasmweb.com/docs/latest/how_to/lossless.html#technical-background). In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined [here](https://github.com/linuxserver/docker-baseimage-kasmvnc#lossless). ## Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. ->[!NOTE] ->Unless a parameter is flaged as 'optional', it is *mandatory* and a value must be provided. - ### docker-compose (recommended, [click here for more info](https://docs.linuxserver.io/general/docker-compose)) ```yaml --- +version: "2.1" services: audacity: image: lscr.io/linuxserver/audacity:latest @@ -366,11 +112,10 @@ services: - PGID=1000 - TZ=Etc/UTC volumes: - - /path/to/audacity/config:/config + - /path/to/config:/config ports: - 3000:3000 - 3001:3001 - shm_size: "1gb" restart: unless-stopped ``` @@ -384,8 +129,7 @@ docker run -d \ -e TZ=Etc/UTC \ -p 3000:3000 \ -p 3001:3001 \ - -v /path/to/audacity/config:/config \ - --shm-size="1gb" \ + -v /path/to/config:/config \ --restart unless-stopped \ lscr.io/linuxserver/audacity:latest ``` @@ -396,13 +140,12 @@ Containers are configured using parameters passed at runtime (such as those abov | Parameter | Function | | :----: | --- | -| `-p 3000:3000` | Audacity desktop gui HTTP, must be proxied. | -| `-p 3001:3001` | Audacity desktop gui HTTPS. | +| `-p 3000` | Audacity desktop gui. | +| `-p 3001` | Audacity desktop gui HTTPS. | | `-e PUID=1000` | for UserID - see below for explanation | | `-e PGID=1000` | for GroupID - see below for explanation | | `-e TZ=Etc/UTC` | specify a timezone to use, see this [list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List). | | `-v /config` | Users home directory in the container, stores program settings and images | -| `--shm-size=` | Recommended for all desktop images. | ## Environment variables from files (Docker secrets) @@ -473,7 +216,7 @@ We publish various [Docker Mods](https://github.com/linuxserver/docker-mods) to ## Updating Info -Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the [Application Setup](#application-setup) section above to see if it is recommended for the image. +Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the [Application Setup](#application-setup) section above to see if it is recommended for the image. Below are the instructions for updating containers: @@ -538,10 +281,24 @@ Below are the instructions for updating containers: docker image prune ``` +### Via Watchtower auto-updater (only use if you don't remember the original parameters) + +* Pull the latest image at its tag and replace it with the same env variables in one run: + + ```bash + docker run --rm \ + -v /var/run/docker.sock:/var/run/docker.sock \ + containrrr/watchtower \ + --run-once audacity + ``` + +* You can also remove the old dangling images: `docker image prune` + +**warning**: We do not endorse the use of Watchtower as a solution to automated updates of existing Docker containers. In fact we generally discourage automated updates. However, this is a useful tool for one-time manual updates of containers where you have forgotten the original parameters. In the long term, we highly recommend using [Docker Compose](https://docs.linuxserver.io/general/docker-compose). + ### Image Update Notifications - Diun (Docker Image Update Notifier) ->[!TIP] ->We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported. +**tip**: We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported. ## Building locally @@ -556,20 +313,16 @@ docker build \ -t lscr.io/linuxserver/audacity:latest . ``` -The ARM variants can be built on x86_64 hardware and vice versa using `lscr.io/linuxserver/qemu-static` +The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static` ```bash -docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset +docker run --rm --privileged multiarch/qemu-user-static:register --reset ``` Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`. ## Versions -* **12.07.25:** - Rebase to Selkies, HTTPS IS NOW REQUIRED. -* **31.10.24:** - Fix artifact name. -* **19.08.24:** - Rebase to noble. -* **10.02.24:** - Update Readme with new env vars, ingest proper PWA icon, and pre-extract appimage. * **05.05.23:** - Start Audacity in full screen. * **18.03.23:** - Rebase to KasmVNC base image. * **13.12.22:** - Rebase to Jammy. diff --git a/jenkins-vars.yml b/jenkins-vars.yml index 774d281..c7a6fb3 100644 --- a/jenkins-vars.yml +++ b/jenkins-vars.yml @@ -19,9 +19,9 @@ repo_vars: - MULTIARCH = 'false' - CI = 'true' - CI_WEB = 'true' - - CI_PORT = '3001' - - CI_SSL = 'true' + - CI_PORT = '3000' + - CI_SSL = 'false' - CI_DELAY = '120' - - CI_DOCKERENV = '' - - CI_AUTH = '' + - CI_DOCKERENV = 'TZ=US/Pacific' + - CI_AUTH = 'user:password' - CI_WEBPATH = '' diff --git a/package_versions.txt b/package_versions.txt index 3610701..5acb255 100755 --- a/package_versions.txt +++ b/package_versions.txt @@ -1,1134 +1,1396 @@ -NAME VERSION TYPE -adduser 3.137ubuntu1 deb -adwaita-icon-theme 46.0-1 deb -aiohappyeyeballs 2.6.1 python -aiohttp 3.13.2 python -aioice 0.10.2 python -aiosignal 1.4.0 python -apt 2.8.3 deb -apt-transport-https 2.8.3 deb -apt-utils 2.8.3 deb -at-spi2-common 2.52.0-1build1 deb -attrs 25.4.0 python -autocommand 2.2.2 python -av 14.4.0 python -backports-tarfile 1.2.0 python -base-files 13ubuntu10.3 deb -base-passwd 3.6.3build1 deb -bash 5.2.21-2ubuntu4 deb -binutils 2.42-4ubuntu2.7 deb -binutils-common 2.42-4ubuntu2.7 deb -binutils-x86-64-linux-gnu 2.42-4ubuntu2.7 deb -blinker 1.7.0 python -breeze-cursor-theme 4:5.27.12-0ubuntu0.1 deb -bsdextrautils 2.39.3-9ubuntu6.3 deb -bsdutils 1:2.39.3-9ubuntu6.3 deb -ca-certificates 20240203 deb -catatonit 0.1.7-1 deb -cffi 2.0.0 python -cli UNKNOWN binary -cli-32 UNKNOWN binary -cli-64 UNKNOWN binary -cli-arm64 UNKNOWN binary -cloud.google.com/go/auth v0.16.5 go-module -cloud.google.com/go/auth/oauth2adapt v0.2.8 go-module -cloud.google.com/go/compute/metadata v0.8.0 go-module -cloud.google.com/go/logging v1.13.0 go-module -cloud.google.com/go/longrunning v0.6.7 go-module -cmake 3.28.3-1build7 deb -cmake-data 3.28.3-1build7 deb -code.cloudfoundry.org/clock v1.37.0 go-module -console-data 2:1.12-9 deb -console-setup 1.226ubuntu1 deb -console-setup-linux 1.226ubuntu1 deb -containerd.io 2.2.0-2~ubuntu.24.04~noble deb -coreutils 9.4-3ubuntu6.1 deb -cpp 4:13.2.0-7ubuntu1 deb -cpp-13 13.3.0-6ubuntu2~24.04 deb -cpp-13-x86-64-linux-gnu 13.3.0-6ubuntu2~24.04 deb -cpp-x86-64-linux-gnu 4:13.2.0-7ubuntu1 deb -cron 3.0pl1-184ubuntu2 deb -cron-daemon-common 3.0pl1-184ubuntu2 deb -cryptography 41.0.7 python (+1 duplicate) -cryptography 46.0.3 python -curl 8.5.0-2ubuntu10.6 deb -dario.cat/mergo v1.0.2 go-module (+1 duplicate) -dash 0.5.12-6ubuntu5 deb -dbus 1.14.10-4ubuntu4.1 deb -dbus-bin 1.14.10-4ubuntu4.1 deb -dbus-daemon 1.14.10-4ubuntu4.1 deb -dbus-python 1.3.2 python -dbus-session-bus-common 1.14.10-4ubuntu4.1 deb -dbus-system-bus-common 1.14.10-4ubuntu4.1 deb -dbus-x11 1.14.10-4ubuntu4.1 deb -dconf-gsettings-backend 0.40.0-4ubuntu0.1 deb -dconf-service 0.40.0-4ubuntu0.1 deb -debconf 1.5.86ubuntu1 deb -debianutils 5.17build1 deb -diffutils 1:3.10-1build1 deb -dirmngr 2.4.4-2ubuntu17.3 deb -distro 1.9.0 python -distro-info-data 0.60ubuntu0.5 deb -dnspython 2.8.0 python -docker-buildx-plugin 0.30.1-1~ubuntu.24.04~noble deb -docker-ce 5:29.1.2-1~ubuntu.24.04~noble deb -docker-ce-cli 5:29.1.2-1~ubuntu.24.04~noble deb -docker-compose-plugin 5.0.0-1~ubuntu.24.04~noble deb -dpkg 1.22.6ubuntu6.5 deb -dunst 1.9.2-1build2 deb -e2fsprogs 1.47.0-2.4~exp1ubuntu4.1 deb -evdev 1.9.2 python -file 1:5.45-3build1 deb -findutils 4.9.0-5build1 deb -fontconfig 2.15.0-1.1ubuntu2 deb -fontconfig-config 2.15.0-1.1ubuntu2 deb -fonts-noto-cjk 1:20230817+repack1-3 deb -fonts-noto-color-emoji 2.047-0ubuntu0.24.04.1 deb -fonts-noto-core 20201225-2 deb -fonts-noto-mono 20201225-2 deb -fonts-urw-base35 20200910-8 deb -frozenlist 1.8.0 python -fuse-overlayfs 1.13-1 deb -fuse3 3.14.0-5build1 deb -g++ 4:13.2.0-7ubuntu1 deb -g++-13 13.3.0-6ubuntu2~24.04 deb -g++-13-x86-64-linux-gnu 13.3.0-6ubuntu2~24.04 deb -g++-x86-64-linux-gnu 4:13.2.0-7ubuntu1 deb -gcc 4:13.2.0-7ubuntu1 deb -gcc-13 13.3.0-6ubuntu2~24.04 deb -gcc-13-base 13.3.0-6ubuntu2~24.04 deb -gcc-13-x86-64-linux-gnu 13.3.0-6ubuntu2~24.04 deb -gcc-14-base 14.2.0-4ubuntu2~24.04 deb -gcc-x86-64-linux-gnu 4:13.2.0-7ubuntu1 deb -gir1.2-atk-1.0 2.52.0-1build1 deb -gir1.2-atspi-2.0 2.52.0-1build1 deb -gir1.2-freedesktop 1.80.1-1 deb -gir1.2-freedesktop-dev 1.80.1-1 deb -gir1.2-girepository-2.0 1.80.1-1 deb -gir1.2-glib-2.0 2.80.0-6ubuntu3.5 deb -gir1.2-glib-2.0-dev 2.80.0-6ubuntu3.5 deb -gir1.2-packagekitglib-1.0 1.2.8-2ubuntu1.4 deb -git 1:2.43.0-1ubuntu7.3 deb -git-man 1:2.43.0-1ubuntu7.3 deb -github.com/AlecAivazis/survey/v2 v2.3.7 go-module -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.2 go-module -github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 go-module -github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.5.0 go-module -github.com/DefangLabs/secret-detector v0.0.0-20250403165618-22662109213e go-module -github.com/Graylog2/go-gelf v0.0.0-20191017102106-1550ee647df0 go-module -github.com/Masterminds/semver/v3 v3.4.0 go-module -github.com/Microsoft/hcsshim v0.14.0-rc.1 go-module (+2 duplicates) -github.com/ProtonMail/go-crypto v1.3.0 go-module -github.com/RackSec/srslog v0.0.0-20180709174129-a4725f04ec91 go-module -github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d go-module -github.com/agext/levenshtein v1.2.3 go-module (+1 duplicate) -github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092 go-module -github.com/apparentlymart/go-cidr v1.0.1 go-module -github.com/apparentlymart/go-textseg/v15 v15.0.0 go-module -github.com/armon/circbuf v0.0.0-20190214190532-5111143e8da2 go-module -github.com/armon/go-metrics v0.4.1 go-module -github.com/aws/aws-sdk-go-v2 v1.38.1 go-module -github.com/aws/aws-sdk-go-v2 v1.39.4 go-module -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.2 go-module -github.com/aws/aws-sdk-go-v2/config v1.31.15 go-module -github.com/aws/aws-sdk-go-v2/config v1.31.3 go-module -github.com/aws/aws-sdk-go-v2/credentials v1.18.19 go-module -github.com/aws/aws-sdk-go-v2/credentials v1.18.7 go-module -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.11 go-module -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.4 go-module -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.11 go-module -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.4 go-module -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.11 go-module -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.4 go-module -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 go-module -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 go-module -github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.58.5 go-module -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0 go-module -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.2 go-module -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.11 go-module -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.4 go-module -github.com/aws/aws-sdk-go-v2/service/sso v1.28.2 go-module -github.com/aws/aws-sdk-go-v2/service/sso v1.29.8 go-module -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.0 go-module -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.3 go-module -github.com/aws/aws-sdk-go-v2/service/sts v1.38.0 go-module -github.com/aws/aws-sdk-go-v2/service/sts v1.38.9 go-module -github.com/aws/smithy-go v1.22.5 go-module -github.com/aws/smithy-go v1.23.1 go-module -github.com/beorn7/perks v1.0.1 go-module (+2 duplicates) -github.com/bits-and-blooms/bitset v1.13.0 go-module -github.com/buger/goterm v1.0.4 go-module -github.com/cenkalti/backoff/v4 v4.3.0 go-module -github.com/cenkalti/backoff/v5 v5.0.3 go-module (+2 duplicates) -github.com/cespare/xxhash/v2 v2.3.0 go-module (+2 duplicates) -github.com/checkpoint-restore/checkpointctl v1.4.0 go-module -github.com/checkpoint-restore/go-criu/v6 v6.3.0 go-module -github.com/checkpoint-restore/go-criu/v7 v7.2.0 go-module -github.com/cilium/ebpf v0.16.0 go-module (+2 duplicates) -github.com/cilium/ebpf v0.17.3 go-module (+1 duplicate) -github.com/cloudflare/cfssl v1.6.4 go-module -github.com/cloudflare/circl v1.6.1 go-module -github.com/compose-spec/compose-go/v2 v2.10.0 go-module -github.com/compose-spec/compose-go/v2 v2.9.1 go-module -github.com/container-storage-interface/spec v1.5.0 go-module -github.com/containerd/accelerated-container-image v1.3.0 go-module -github.com/containerd/btrfs/v2 v2.0.0 go-module -github.com/containerd/cgroups/v3 v3.1.0 go-module (+3 duplicates) -github.com/containerd/console v1.0.5 go-module (+6 duplicates) -github.com/containerd/containerd/api v1.10.0 go-module (+5 duplicates) -github.com/containerd/containerd/v2 v2.2.0 go-module (+3 duplicates) -github.com/containerd/containerd/v2 v2.2.1-0.20251115011841-efd86f2b0bc2 go-module (+1 duplicate) -github.com/containerd/continuity v0.4.5 go-module (+5 duplicates) -github.com/containerd/errdefs v1.0.0 go-module (+5 duplicates) -github.com/containerd/errdefs/pkg v0.3.0 go-module (+5 duplicates) -github.com/containerd/fifo v1.1.0 go-module (+3 duplicates) -github.com/containerd/go-cni v1.1.13 go-module (+2 duplicates) -github.com/containerd/go-runc v1.1.0 go-module (+3 duplicates) -github.com/containerd/imgcrypt/v2 v2.0.1 go-module -github.com/containerd/log v0.1.0 go-module (+6 duplicates) -github.com/containerd/nri v0.10.0 go-module -github.com/containerd/otelttrpc v0.1.0 go-module -github.com/containerd/platforms v1.0.0-rc.2 go-module (+4 duplicates) -github.com/containerd/plugin v1.0.0 go-module (+3 duplicates) -github.com/containerd/stargz-snapshotter/estargz v0.17.0 go-module -github.com/containerd/ttrpc v1.2.7 go-module (+5 duplicates) -github.com/containerd/typeurl/v2 v2.2.3 go-module (+5 duplicates) -github.com/containerd/zfs/v2 v2.0.0-rc.0 go-module -github.com/containernetworking/cni v1.3.0 go-module (+2 duplicates) -github.com/containernetworking/plugins v1.8.0 go-module (+1 duplicate) -github.com/containers/ocicrypt v1.2.1 go-module -github.com/coreos/go-semver v0.3.1 go-module -github.com/coreos/go-systemd/v22 v22.5.0 go-module -github.com/coreos/go-systemd/v22 v22.6.0 go-module (+3 duplicates) -github.com/cyphar/filepath-securejoin v0.5.2 go-module -github.com/cyphar/filepath-securejoin v0.6.0 go-module -github.com/davecgh/go-spew v1.1.1 go-module (+2 duplicates) -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc go-module -github.com/deckarep/golang-set/v2 v2.8.0 go-module -github.com/dimchansky/utfbom v1.1.1 go-module -github.com/distribution/reference v0.6.0 go-module (+4 duplicates) -github.com/docker/buildx v0.30.1 go-module (+1 duplicate) -github.com/docker/cli v28.5.1+incompatible go-module -github.com/docker/cli v28.5.2+incompatible go-module -github.com/docker/cli-docs-tool v0.10.0 go-module (+1 duplicate) -github.com/docker/cli/cmd/docker UNKNOWN go-module -github.com/docker/compose/v5 v0.0.0-20251202074149-13d70b1c1134 go-module -github.com/docker/distribution v2.8.3+incompatible go-module (+1 duplicate) -github.com/docker/docker v28.5.1+incompatible go-module -github.com/docker/docker v28.5.2+incompatible go-module -github.com/docker/docker-credential-helpers v0.9.3 go-module (+1 duplicate) -github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c go-module -github.com/docker/go-connections v0.5.0 go-module -github.com/docker/go-connections v0.6.0 go-module (+1 duplicate) -github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c go-module -github.com/docker/go-events v0.0.0-20250808211157-605354379745 go-module -github.com/docker/go-metrics v0.0.1 go-module (+2 duplicates) -github.com/docker/go-units v0.5.0 go-module (+6 duplicates) -github.com/dustin/go-humanize v1.0.1 go-module -github.com/eiannone/keyboard v0.0.0-20220611211555-0d226195f203 go-module -github.com/emicklei/go-restful/v3 v3.13.0 go-module (+1 duplicate) -github.com/felixge/httpsnoop v1.0.4 go-module (+4 duplicates) -github.com/fernet/fernet-go v0.0.0-20240119011108-303da6aec611 go-module -github.com/fluent/fluent-logger-golang v1.10.1 go-module -github.com/fsnotify/fsnotify v1.9.0 go-module (+2 duplicates) -github.com/fvbommel/sortorder v1.0.1 go-module -github.com/fvbommel/sortorder v1.1.0 go-module -github.com/fxamacker/cbor/v2 v2.9.0 go-module (+2 duplicates) -github.com/go-jose/go-jose/v4 v4.1.2 go-module -github.com/go-logr/logr v1.4.3 go-module (+4 duplicates) -github.com/go-logr/stdr v1.2.2 go-module (+4 duplicates) -github.com/go-openapi/jsonpointer v0.21.0 go-module -github.com/go-openapi/jsonreference v0.20.2 go-module -github.com/go-openapi/swag v0.23.0 go-module -github.com/go-viper/mapstructure/v2 v2.4.0 go-module (+1 duplicate) -github.com/godbus/dbus/v5 v5.1.0 go-module (+4 duplicates) -github.com/gofrs/flock v0.13.0 go-module (+2 duplicates) -github.com/gogo/protobuf v1.3.2 go-module (+5 duplicates) -github.com/golang-jwt/jwt/v5 v5.3.0 go-module (+1 duplicate) -github.com/golang/gddo v0.0.0-20210115222349-20d68f94ee1f go-module -github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 go-module -github.com/golang/protobuf v1.5.4 go-module (+3 duplicates) -github.com/google/btree v1.1.3 go-module -github.com/google/certificate-transparency-go v1.3.2 go-module -github.com/google/gnostic-models v0.7.0 go-module -github.com/google/go-cmp v0.7.0 go-module (+5 duplicates) -github.com/google/go-dap v0.12.0 go-module -github.com/google/s2a-go v0.1.9 go-module -github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 go-module (+2 duplicates) -github.com/google/uuid v1.6.0 go-module (+3 duplicates) -github.com/googleapis/enterprise-certificate-proxy v0.3.6 go-module -github.com/googleapis/gax-go/v2 v2.15.0 go-module -github.com/gorilla/mux v1.8.1 go-module (+1 duplicate) -github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 go-module (+1 duplicate) -github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 go-module -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 go-module -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 go-module -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 go-module -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 go-module (+2 duplicates) -github.com/hashicorp/errwrap v1.1.0 go-module (+2 duplicates) -github.com/hashicorp/go-cleanhttp v0.5.2 go-module -github.com/hashicorp/go-cty-funcs v0.0.0-20250818135842-6aab67130928 go-module -github.com/hashicorp/go-immutable-radix v1.3.1 go-module -github.com/hashicorp/go-immutable-radix/v2 v2.1.0 go-module -github.com/hashicorp/go-memdb v1.3.5 go-module -github.com/hashicorp/go-msgpack v0.5.5 go-module -github.com/hashicorp/go-multierror v1.1.1 go-module (+2 duplicates) -github.com/hashicorp/go-sockaddr v1.0.2 go-module -github.com/hashicorp/go-version v1.8.0 go-module -github.com/hashicorp/golang-lru v0.5.4 go-module -github.com/hashicorp/golang-lru/v2 v2.0.7 go-module -github.com/hashicorp/hcl/v2 v2.24.0 go-module -github.com/hashicorp/memberlist v0.4.0 go-module -github.com/hashicorp/serf v0.8.5 go-module -github.com/hiddeco/sshsig v0.2.0 go-module -github.com/in-toto/in-toto-golang v0.9.0 go-module (+2 duplicates) -github.com/inhies/go-bytesize v0.0.0-20220417184213-4913239db9cf go-module -github.com/intel/goresctrl v0.10.0 go-module (+1 duplicate) -github.com/ishidawataru/sctp v0.0.0-20251114114122-19ddcbc6aae2 go-module (+1 duplicate) -github.com/jmoiron/sqlx v1.3.3 go-module -github.com/jonboulle/clockwork v0.5.0 go-module -github.com/josharian/intern v1.0.0 go-module -github.com/json-iterator/go v1.1.12 go-module (+1 duplicate) -github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 go-module -github.com/klauspost/compress v1.18.1 go-module (+3 duplicates) -github.com/klauspost/compress v1.18.2 go-module -github.com/knqyf263/go-plugin v0.9.0 go-module -github.com/mailru/easyjson v0.7.7 go-module -github.com/mattn/go-colorable v0.1.14 go-module -github.com/mattn/go-isatty v0.0.20 go-module -github.com/mattn/go-runewidth v0.0.16 go-module (+1 duplicate) -github.com/mattn/go-shellwords v1.0.12 go-module (+1 duplicate) -github.com/mdlayher/socket v0.5.1 go-module (+2 duplicates) -github.com/mdlayher/vsock v1.2.1 go-module (+2 duplicates) -github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b go-module -github.com/miekg/dns v1.1.66 go-module -github.com/miekg/pkcs11 v1.1.1 go-module -github.com/mistifyio/go-zfs/v3 v3.0.1 go-module -github.com/mistifyio/go-zfs/v3 v3.1.0 go-module -github.com/mitchellh/copystructure v1.2.0 go-module -github.com/mitchellh/go-wordwrap v1.0.1 go-module -github.com/mitchellh/hashstructure/v2 v2.0.2 go-module (+2 duplicates) -github.com/mitchellh/reflectwalk v1.0.2 go-module -github.com/moby/buildkit v0.26.1 go-module -github.com/moby/buildkit v0.26.2 go-module (+1 duplicate) -github.com/moby/docker-image-spec v1.3.1 go-module (+2 duplicates) -github.com/moby/go-archive v0.1.0 go-module (+2 duplicates) -github.com/moby/ipvs v1.1.0 go-module -github.com/moby/locker v1.0.1 go-module (+4 duplicates) -github.com/moby/moby/api v1.52.0 go-module -github.com/moby/moby/v2 v29.1.2 go-module (+1 duplicate) -github.com/moby/patternmatcher v0.6.0 go-module (+2 duplicates) -github.com/moby/policy-helpers v0.0.0-20251105011237-bcaa71c99f14 go-module -github.com/moby/profiles/apparmor v0.1.0 go-module -github.com/moby/profiles/seccomp v0.1.0 go-module -github.com/moby/pubsub v1.0.0 go-module -github.com/moby/spdystream v0.5.0 go-module (+1 duplicate) -github.com/moby/swarmkit/v2 v2.1.2-0.20251110192100-17b8d222e7dd go-module -github.com/moby/sys/atomicwriter v0.1.0 go-module (+2 duplicates) -github.com/moby/sys/capability v0.4.0 go-module (+4 duplicates) -github.com/moby/sys/mount v0.3.4 go-module -github.com/moby/sys/mountinfo v0.7.2 go-module (+5 duplicates) -github.com/moby/sys/reexec v0.1.0 go-module -github.com/moby/sys/sequential v0.6.0 go-module (+2 duplicates) -github.com/moby/sys/signal v0.7.1 go-module (+4 duplicates) -github.com/moby/sys/symlink v0.3.0 go-module (+2 duplicates) -github.com/moby/sys/user v0.3.0 go-module -github.com/moby/sys/user v0.4.0 go-module (+4 duplicates) -github.com/moby/sys/userns v0.1.0 go-module (+6 duplicates) -github.com/moby/term v0.5.2 go-module (+2 duplicates) -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd go-module (+1 duplicate) -github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee go-module (+1 duplicate) -github.com/morikuni/aec v1.0.0 go-module (+1 duplicate) -github.com/mrunalp/fileutils v0.5.1 go-module -github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 go-module (+3 duplicates) -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f go-module (+1 duplicate) -github.com/opencontainers/cgroups v0.0.4 go-module -github.com/opencontainers/cgroups v0.0.6 go-module -github.com/opencontainers/go-digest v1.0.0 go-module (+5 duplicates) -github.com/opencontainers/image-spec v1.1.1 go-module (+5 duplicates) -github.com/opencontainers/runc v1.3.4 go-module -github.com/opencontainers/runtime-spec v1.2.1 go-module (+4 duplicates) -github.com/opencontainers/runtime-tools v0.9.1-0.20250523060157-0ea5ed0382a2 go-module (+2 duplicates) -github.com/opencontainers/selinux v1.12.0 go-module (+1 duplicate) -github.com/opencontainers/selinux v1.13.1 go-module (+1 duplicate) -github.com/package-url/packageurl-go v0.1.1 go-module -github.com/pelletier/go-toml v1.9.5 go-module (+2 duplicates) -github.com/pelletier/go-toml/v2 v2.2.4 go-module (+2 duplicates) -github.com/philhofer/fwd v1.2.0 go-module -github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c go-module -github.com/pkg/errors v0.9.1 go-module (+2 duplicates) -github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 go-module (+2 duplicates) -github.com/pmezard/go-difflib v1.0.0 go-module -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 go-module -github.com/prometheus/client_golang v1.23.2 go-module (+2 duplicates) -github.com/prometheus/client_model v0.6.2 go-module (+2 duplicates) -github.com/prometheus/common v0.66.1 go-module (+2 duplicates) -github.com/prometheus/procfs v0.16.1 go-module (+2 duplicates) -github.com/rivo/uniseg v0.2.0 go-module (+1 duplicate) -github.com/rootless-containers/rootlesskit/v2 v2.3.5 go-module -github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 go-module (+1 duplicate) -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 go-module -github.com/seccomp/libseccomp-golang v0.10.0 go-module -github.com/secure-systems-lab/go-securesystemslib v0.9.1 go-module (+2 duplicates) -github.com/serialx/hashring v0.0.0-20200727003509-22c0c7ab6b1b go-module -github.com/shibumi/go-pathspec v1.3.0 go-module (+2 duplicates) -github.com/sirupsen/logrus v1.9.3 go-module (+7 duplicates) -github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 go-module -github.com/smallstep/pkcs7 v0.1.1 go-module -github.com/spdx/tools-golang v0.5.5 go-module -github.com/spf13/cobra v1.10.1 go-module (+2 duplicates) -github.com/spf13/pflag v1.0.10 go-module (+2 duplicates) -github.com/stefanberger/go-pkcs11uri v0.0.0-20230803200340-78284954bff6 go-module -github.com/stretchr/testify v1.11.1 go-module (+1 duplicate) -github.com/tchap/go-patricia/v2 v2.3.3 go-module -github.com/tetratelabs/wazero v1.9.0 go-module -github.com/theupdateframework/notary v0.7.0 go-module -github.com/tilt-dev/fsnotify v1.4.8-0.20220602155310-fff9c274a375 go-module -github.com/tinylib/msgp v1.3.0 go-module -github.com/tonistiigi/dchapes-mode v0.0.0-20250318174251-73d941a28323 go-module (+2 duplicates) -github.com/tonistiigi/fsutil v0.0.0-20250605211040-586307ad452f go-module (+2 duplicates) -github.com/tonistiigi/go-actions-cache v0.0.0-20250626083717-378c5ed1ddd9 go-module -github.com/tonistiigi/go-archvariant v1.0.0 go-module -github.com/tonistiigi/go-csvvalue v0.0.0-20240814133006-030d3b2625d0 go-module (+2 duplicates) -github.com/tonistiigi/jaeger-ui-rest v0.0.0-20250408171107-3dd17559e117 go-module -github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea go-module (+2 duplicates) -github.com/tonistiigi/vt100 v0.0.0-20240514184818-90bafcd6abab go-module (+1 duplicate) -github.com/urfave/cli v1.22.16 go-module -github.com/urfave/cli/v2 v2.27.7 go-module (+1 duplicate) -github.com/vbatts/tar-split v0.12.2 go-module -github.com/vishvananda/netlink v1.3.0 go-module -github.com/vishvananda/netlink v1.3.1 go-module (+1 duplicate) -github.com/vishvananda/netns v0.0.4 go-module -github.com/vishvananda/netns v0.0.5 go-module (+1 duplicate) -github.com/weppos/publicsuffix-go v0.15.1-0.20210511084619-b1f36a2d6c0b go-module -github.com/x448/float16 v0.8.4 go-module (+2 duplicates) -github.com/xhit/go-str2duration/v2 v2.1.0 go-module (+1 duplicate) -github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 go-module (+1 duplicate) -github.com/zclconf/go-cty v1.17.0 go-module -github.com/zmap/zcrypto v0.0.0-20210511125630-18f1e0152cfc go-module -github.com/zmap/zlint/v3 v3.1.0 go-module -glib-networking 2.80.0-1build1 deb -glib-networking-common 2.80.0-1build1 deb -glib-networking-services 2.80.0-1build1 deb -gnupg 2.4.4-2ubuntu17.3 deb -gnupg-l10n 2.4.4-2ubuntu17.3 deb -gnupg-utils 2.4.4-2ubuntu17.3 deb -go.etcd.io/bbolt v1.4.3 go-module (+1 duplicate) -go.etcd.io/etcd/api/v3 v3.6.5 go-module -go.etcd.io/etcd/client/pkg/v3 v3.6.5 go-module -go.etcd.io/etcd/pkg/v3 v3.6.5 go-module -go.etcd.io/etcd/server/v3 v3.6.5 go-module -go.etcd.io/raft/v3 v3.6.0 go-module -go.opencensus.io v0.24.0 go-module -go.opentelemetry.io/auto/sdk v1.1.0 go-module (+1 duplicate) -go.opentelemetry.io/auto/sdk v1.2.1 go-module (+2 duplicates) -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 go-module -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 go-module (+1 duplicate) -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 go-module -go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.61.0 go-module (+1 duplicate) -go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.63.0 go-module -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 go-module (+1 duplicate) -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 go-module (+1 duplicate) -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 go-module -go.opentelemetry.io/contrib/processors/baggagecopy v0.4.0 go-module -go.opentelemetry.io/otel v1.37.0 go-module (+1 duplicate) -go.opentelemetry.io/otel v1.38.0 go-module (+2 duplicates) -go.opentelemetry.io/otel/bridge/opencensus v1.38.0 go-module -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0 go-module (+2 duplicates) -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0 go-module (+2 duplicates) -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 go-module -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 go-module (+2 duplicates) -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 go-module -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 go-module (+2 duplicates) -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0 go-module -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0 go-module (+2 duplicates) -go.opentelemetry.io/otel/metric v1.37.0 go-module (+1 duplicate) -go.opentelemetry.io/otel/metric v1.38.0 go-module (+2 duplicates) -go.opentelemetry.io/otel/sdk v1.37.0 go-module -go.opentelemetry.io/otel/sdk v1.38.0 go-module (+2 duplicates) -go.opentelemetry.io/otel/sdk/metric v1.38.0 go-module (+2 duplicates) -go.opentelemetry.io/otel/trace v1.37.0 go-module (+1 duplicate) -go.opentelemetry.io/otel/trace v1.38.0 go-module (+2 duplicates) -go.opentelemetry.io/proto/otlp v1.5.0 go-module -go.opentelemetry.io/proto/otlp v1.7.1 go-module (+2 duplicates) -go.uber.org/mock v0.6.0 go-module -go.uber.org/multierr v1.11.0 go-module -go.uber.org/zap v1.27.0 go-module -go.yaml.in/yaml/v2 v2.4.2 go-module (+3 duplicates) -go.yaml.in/yaml/v2 v2.4.3 go-module -go.yaml.in/yaml/v3 v3.0.4 go-module -go.yaml.in/yaml/v4 v4.0.0-rc.3 go-module -golang.org/x/crypto v0.41.0 go-module -golang.org/x/crypto v0.42.0 go-module -golang.org/x/crypto v0.45.0 go-module (+1 duplicate) -golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f go-module (+2 duplicates) -golang.org/x/mod v0.29.0 go-module (+1 duplicate) -golang.org/x/mod v0.30.0 go-module -golang.org/x/net v0.35.0 go-module -golang.org/x/net v0.43.0 go-module (+2 duplicates) -golang.org/x/net v0.44.0 go-module -golang.org/x/net v0.47.0 go-module (+2 duplicates) -golang.org/x/oauth2 v0.30.0 go-module (+2 duplicates) -golang.org/x/sync v0.17.0 go-module (+3 duplicates) -golang.org/x/sync v0.18.0 go-module (+1 duplicate) -golang.org/x/sys v0.30.0 go-module -golang.org/x/sys v0.37.0 go-module (+3 duplicates) -golang.org/x/sys v0.38.0 go-module (+2 duplicates) -golang.org/x/term v0.34.0 go-module -golang.org/x/term v0.35.0 go-module -golang.org/x/term v0.37.0 go-module -golang.org/x/text v0.28.0 go-module (+1 duplicate) -golang.org/x/text v0.29.0 go-module -golang.org/x/text v0.31.0 go-module (+1 duplicate) -golang.org/x/time v0.14.0 go-module (+3 duplicates) -google-crc32c 1.7.1 python -google.golang.org/api v0.248.0 go-module -google.golang.org/genproto v0.0.0-20250603155806-513f23925822 go-module -google.golang.org/genproto/googleapis/api v0.0.0-20250804133106-a7a43d27e69b go-module -google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 go-module (+1 duplicate) -google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 go-module -google.golang.org/genproto/googleapis/rpc v0.0.0-20250804133106-a7a43d27e69b go-module (+2 duplicates) -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 go-module (+1 duplicate) -google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 go-module -google.golang.org/grpc v1.76.0 go-module (+4 duplicates) -google.golang.org/grpc v1.77.0 go-module -google.golang.org/protobuf v1.36.10 go-module (+5 duplicates) -google.golang.org/protobuf v1.36.5 go-module -gopkg.in/evanphx/json-patch.v4 v4.12.0 go-module -gopkg.in/inf.v0 v0.9.1 go-module (+2 duplicates) -gopkg.in/ini.v1 v1.67.0 go-module -gopkg.in/yaml.v3 v3.0.1 go-module (+4 duplicates) -gpg 2.4.4-2ubuntu17.3 deb -gpg-agent 2.4.4-2ubuntu17.3 deb -gpg-wks-client 2.4.4-2ubuntu17.3 deb -gpgconf 2.4.4-2ubuntu17.3 deb -gpgsm 2.4.4-2ubuntu17.3 deb -gpgv 2.4.4-2ubuntu17.3 deb -gputil 1.4.0 python -grep 3.11-4build1 deb -groff-base 1.23.0-3build2 deb -gsettings-desktop-schemas 46.1-0ubuntu1 deb -gtk-update-icon-cache 3.24.41-4ubuntu1.3 deb -gui UNKNOWN binary -gui-32 UNKNOWN binary -gui-64 UNKNOWN binary -gui-arm64 UNKNOWN binary -gzip 1.12-1ubuntu3.1 deb -hicolor-icon-theme 0.17-2 deb -hostname 3.23+nmu2ubuntu2 deb -httplib2 0.20.4 python -humanity-icon-theme 0.6.16 deb -idna 3.11 python -ifaddr 0.2.0 python -importlib-metadata 8.0.0 python -inflect 7.3.1 python -init-system-helpers 1.66ubuntu1 deb -intel-media-va-driver 24.1.0+dfsg1-1ubuntu0.1 deb -iproute2 6.1.0-1ubuntu6.2 deb -iptables 1.8.10-3ubuntu2 deb -iso-codes 4.16.0-1 deb -jaraco-collections 5.1.0 python -jaraco-context 5.3.0 python -jaraco-functools 4.0.1 python -jaraco-text 3.12.1 python -jq 1.7.1 binary -jq 1.7.1-3ubuntu0.24.04.1 deb -k8s.io/api v0.34.1 go-module (+1 duplicate) -k8s.io/apimachinery v0.34.1 go-module (+2 duplicates) -k8s.io/client-go v0.34.1 go-module (+1 duplicate) -k8s.io/cri-api v0.34.1 go-module -k8s.io/klog/v2 v2.130.1 go-module (+1 duplicate) -k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b go-module -k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 go-module (+1 duplicate) -kbd 2.6.4-2ubuntu2 deb -keyboard-configuration 1.226ubuntu1 deb -keyboxd 2.4.4-2ubuntu17.3 deb -krb5-locales 1.20.1-6ubuntu2.6 deb -launchpadlib 1.11.0 python -lazr-restfulclient 0.14.6 python -lazr-uri 1.0.6 python -libacl1 2.3.2-1build1.1 deb -libaom3 3.8.2-2ubuntu0.1 deb -libapparmor1 4.0.1really4.0.1-0ubuntu0.24.04.4 deb -libappstream5 1.0.2-1build6 deb -libapt-pkg6.0t64 2.8.3 deb -libarchive13t64 3.7.2-2ubuntu0.5 deb -libargon2-1 0~20190702+dfsg-4build1 deb -libasan8 14.2.0-4ubuntu2~24.04 deb -libasound2-data 1.2.11-1ubuntu0.1 deb -libasound2-plugins 1.2.7.1-1ubuntu5 deb -libasound2t64 1.2.11-1ubuntu0.1 deb -libassuan0 2.5.6-1build1 deb -libasyncns0 0.8-6build4 deb -libatk-bridge2.0-0t64 2.52.0-1build1 deb -libatk-bridge2.0-dev 2.52.0-1build1 deb -libatk1.0-0t64 2.52.0-1build1 deb -libatk1.0-dev 2.52.0-1build1 deb -libatk1.0-doc 2.52.0-1build1 deb -libatomic1 14.2.0-4ubuntu2~24.04 deb -libatspi2.0-0t64 2.52.0-1build1 deb -libatspi2.0-dev 2.52.0-1build1 deb -libattr1 1:2.5.2-1build1.1 deb -libaudit-common 1:3.1.2-2.1build1.1 deb -libaudit1 1:3.1.2-2.1build1.1 deb -libavahi-client3 0.8-13ubuntu6 deb -libavahi-common-data 0.8-13ubuntu6 deb -libavahi-common3 0.8-13ubuntu6 deb -libavcodec60 7:6.1.1-3ubuntu5 deb -libavutil58 7:6.1.1-3ubuntu5 deb -libbinutils 2.42-4ubuntu2.7 deb -libblkid-dev 2.39.3-9ubuntu6.3 deb -libblkid1 2.39.3-9ubuntu6.3 deb -libbpf1 1:1.3.0-2build2 deb -libbrotli1 1.1.0-2build2 deb -libbsd0 0.12.1-1build1.1 deb -libbz2-1.0 1.0.8-5.1build0.1 deb -libc-bin 2.39-0ubuntu8.6 deb -libc-dev-bin 2.39-0ubuntu8.6 deb -libc6 2.39-0ubuntu8.6 deb -libc6-dev 2.39-0ubuntu8.6 deb -libcairo-gobject2 1.18.0-3build1 deb -libcairo2 1.18.0-3build1 deb -libcap-ng0 0.8.4-2build2 deb -libcap2 1:2.66-5ubuntu2.2 deb -libcap2-bin 1:2.66-5ubuntu2.2 deb -libcbor0.10 0.10.2-1.2ubuntu2 deb -libcc1-0 14.2.0-4ubuntu2~24.04 deb -libcodec2-1.2 1.2.0-2build1 deb -libcolord2 1.4.7-1build2 deb -libcom-err2 1.47.0-2.4~exp1ubuntu4.1 deb -libcrypt-dev 1:4.4.36-4build1 deb -libcrypt1 1:4.4.36-4build1 deb -libcryptsetup12 2:2.7.0-1ubuntu4.2 deb -libctf-nobfd0 2.42-4ubuntu2.7 deb -libctf0 2.42-4ubuntu2.7 deb -libcups2t64 2.4.7-1.2ubuntu7.9 deb -libcurl3t64-gnutls 8.5.0-2ubuntu10.6 deb -libcurl4t64 8.5.0-2ubuntu10.6 deb -libdatrie1 0.2.13-3build1 deb -libdav1d7 1.4.1-1build1 deb -libdb5.3t64 5.3.28+dfsg2-7 deb -libdbus-1-3 1.14.10-4ubuntu4.1 deb -libdbus-1-dev 1.14.10-4ubuntu4.1 deb -libdconf1 0.40.0-4ubuntu0.1 deb -libde265-0 1.0.15-1build3 deb -libdebconfclient0 0.271ubuntu3 deb -libdeflate0 1.19-1build1.1 deb -libdevmapper1.02.1 2:1.02.185-3ubuntu3.2 deb -libdrm-amdgpu1 2.4.122-1~ubuntu0.24.04.2 deb -libdrm-common 2.4.122-1~ubuntu0.24.04.2 deb -libdrm-intel1 2.4.122-1~ubuntu0.24.04.2 deb -libdrm-nouveau2 2.4.122-1~ubuntu0.24.04.2 deb -libdrm-radeon1 2.4.122-1~ubuntu0.24.04.2 deb -libdrm2 2.4.122-1~ubuntu0.24.04.2 deb -libduktape207 2.7.0+tests-0ubuntu3 deb -libdw1t64 0.190-1.1ubuntu0.1 deb -libedit2 3.1-20230828-1build1 deb -libegl-mesa0 25.0.7-0ubuntu0.24.04.2 deb -libegl1 1.7.0-1build1 deb -libelf1t64 0.190-1.1ubuntu0.1 deb -libepoxy0 1.5.10-1build1 deb -liberror-perl 0.17029-2 deb -libev4t64 1:4.33-2.1build1 deb -libexpat1 2.6.1-2ubuntu0.3 deb -libext2fs2t64 1.47.0-2.4~exp1ubuntu4.1 deb -libfdisk1 2.39.3-9ubuntu6.3 deb -libffi-dev 3.4.6-1build1 deb -libffi8 3.4.6-1build1 deb -libfftw3-single3 3.3.10-1ubuntu3 deb -libfido2-1 1.14.0-1build3 deb -libflac12t64 1.4.3+ds-2.1ubuntu2 deb -libfontconfig1 2.15.0-1.1ubuntu2 deb -libfontenc1 1:1.1.8-1build1 deb -libfreetype6 2.13.2+dfsg-1build3 deb -libfribidi0 1.0.13-3build1 deb -libfuse3-3 3.14.0-5build1 deb -libgbm1 25.0.7-0ubuntu0.24.04.2 deb -libgcc-13-dev 13.3.0-6ubuntu2~24.04 deb -libgcc-s1 14.2.0-4ubuntu2~24.04 deb -libgcrypt20 1.10.3-2build1 deb -libgdbm-compat4t64 1.23-5.1build1 deb -libgdbm6t64 1.23-5.1build1 deb -libgdk-pixbuf-2.0-0 2.42.10+dfsg-3ubuntu3.2 deb -libgdk-pixbuf2.0-common 2.42.10+dfsg-3ubuntu3.2 deb -libgif7 5.2.2-1ubuntu1 deb -libgirepository-1.0-1 1.80.1-1 deb -libgirepository-2.0-0 2.80.0-6ubuntu3.5 deb -libgl1 1.7.0-1build1 deb -libgl1-mesa-dri 25.0.7-0ubuntu0.24.04.2 deb -libglib2.0-0t64 2.80.0-6ubuntu3.5 deb -libglib2.0-bin 2.80.0-6ubuntu3.5 deb -libglib2.0-data 2.80.0-6ubuntu3.5 deb -libglib2.0-dev 2.80.0-6ubuntu3.5 deb -libglib2.0-dev-bin 2.80.0-6ubuntu3.5 deb -libglu1-mesa 9.0.2-1.1build1 deb -libglvnd0 1.7.0-1build1 deb -libglx-mesa0 25.0.7-0ubuntu0.24.04.2 deb -libglx0 1.7.0-1build1 deb -libgmp10 2:6.3.0+dfsg-2ubuntu6.1 deb -libgnutls30t64 3.8.3-1.1ubuntu3.4 deb -libgomp1 14.2.0-4ubuntu2~24.04 deb -libgpg-error0 1.47-3build2.1 deb -libgprofng0 2.42-4ubuntu2.7 deb -libgraphite2-3 1.3.14-2build1 deb -libgs-common 10.02.1~dfsg1-0ubuntu7.8 deb -libgs10 10.02.1~dfsg1-0ubuntu7.8 deb -libgs10-common 10.02.1~dfsg1-0ubuntu7.8 deb -libgsm1 1.0.22-1build1 deb -libgssapi-krb5-2 1.20.1-6ubuntu2.6 deb -libgstreamer-plugins-base1.0-0 1.24.2-1ubuntu0.3 deb -libgstreamer1.0-0 1.24.2-1ubuntu0.1 deb -libgtk-3-0t64 3.24.41-4ubuntu1.3 deb -libgtk-3-common 3.24.41-4ubuntu1.3 deb -libharfbuzz0b 8.3.0-2build2 deb -libheif-plugin-aomdec 1.17.6-1ubuntu4.1 deb -libheif-plugin-libde265 1.17.6-1ubuntu4.1 deb -libheif1 1.17.6-1ubuntu4.1 deb -libhogweed6t64 3.9.1-2.2build1.1 deb -libhwasan0 14.2.0-4ubuntu2~24.04 deb -libhwy1t64 1.0.7-8.1build1 deb -libice6 2:1.0.10-1build3 deb -libicu74 74.2-1ubuntu3.1 deb -libid3tag0 0.15.1b-14build1 deb -libidn12 1.42-1build1 deb -libidn2-0 2.3.7-2build1.1 deb -libigdgmm12 22.3.17+ds1-1 deb -libijs-0.35 0.35-15.1build1 deb -libimlib2t64 1.12.1-1.1build2 deb -libip4tc2 1.8.10-3ubuntu2 deb -libip6tc2 1.8.10-3ubuntu2 deb -libisl23 0.26-3build1.1 deb -libitm1 14.2.0-4ubuntu2~24.04 deb -libjack-jackd2-0 1.9.21~dfsg-3ubuntu3 deb -libjansson4 2.14-2build2 deb -libjbig0 2.1-6.1ubuntu2 deb -libjbig2dec0 0.20-1build3 deb -libjpeg-turbo8 2.1.5-2ubuntu2 deb -libjpeg8 8c-2ubuntu11 deb -libjq1 1.7.1-3ubuntu0.24.04.1 deb -libjson-c5 0.17-1build1 deb -libjson-glib-1.0-0 1.8.0-2build2 deb -libjson-glib-1.0-common 1.8.0-2build2 deb -libjsoncpp25 1.9.5-6build1 deb -libjxl0.7 0.7.0-10.2ubuntu6.1 deb -libk5crypto3 1.20.1-6ubuntu2.6 deb -libkeyutils1 1.6.3-3build1 deb -libkmod2 31+20240202-2ubuntu7.1 deb -libkrb5-3 1.20.1-6ubuntu2.6 deb -libkrb5support0 1.20.1-6ubuntu2.6 deb -libksba8 1.6.6-1build1 deb -liblcms2-2 2.14-2build1 deb -libldap-common 2.6.7+dfsg-1~exp1ubuntu8.2 deb -libldap2 2.6.7+dfsg-1~exp1ubuntu8.2 deb -liblerc4 4.0.0+ds-4ubuntu2 deb -libllvm20 1:20.1.2-0ubuntu1~24.04.2 deb -liblocale-gettext-perl 1.07-6ubuntu5 deb -liblsan0 14.2.0-4ubuntu2~24.04 deb -libltdl7 2.4.7-7build1 deb -liblz4-1 1.9.4-1build1.1 deb -liblzma5 5.6.1+really5.4.5-1ubuntu0.2 deb -libmagic-mgc 1:5.45-3build1 deb -libmagic1t64 1:5.45-3build1 deb -libmd0 1.1.0-2build1.1 deb -libmnl0 1.0.5-2build1 deb -libmount-dev 2.39.3-9ubuntu6.3 deb -libmount1 2.39.3-9ubuntu6.3 deb -libmp3lame0 3.100-6build1 deb -libmpc3 1.3.1-1build1.1 deb -libmpfr6 4.2.1-1build1.1 deb -libmpg123-0t64 1.32.5-1ubuntu1.1 deb -libncursesw6 6.4+20240113-1ubuntu2 deb -libnetfilter-conntrack3 1.0.9-6build1 deb -libnettle8t64 3.9.1-2.2build1.1 deb -libnfnetlink0 1.0.2-2build1 deb -libnftables1 1.0.9-1build1 deb -libnftnl11 1.2.6-2build1 deb -libnghttp2-14 1.59.0-1ubuntu0.2 deb -libnginx-mod-http-fancyindex 1:0.5.2-5build1 deb -libnotify-bin 0.8.3-1build2 deb -libnotify4 0.8.3-1build2 deb -libnpth0t64 1.6-3.1build1 deb -libnspr4 2:4.35-1.1build1 deb -libnss3 2:3.98-1build1 deb -libnuma1 2.0.18-1build1 deb -libobrender32v5 3.6.1-12build5 deb -libobt2v5 3.6.1-12build5 deb -libogg0 1.3.5-3build1 deb -libonig5 6.9.9-1build1 deb -libopengl0 1.7.0-1build1 deb -libopenjp2-7 2.5.0-2ubuntu0.4 deb -libopus0 1.4-1build1 deb -liborc-0.4-0t64 1:0.4.38-1ubuntu0.1 deb -libp11-kit0 0.25.3-4ubuntu2.1 deb -libpackagekit-glib2-18 1.2.8-2ubuntu1.4 deb -libpam-modules 1.5.3-5ubuntu5.5 deb -libpam-modules-bin 1.5.3-5ubuntu5.5 deb -libpam-runtime 1.5.3-5ubuntu5.5 deb -libpam-systemd 255.4-1ubuntu8.11 deb -libpam0g 1.5.3-5ubuntu5.5 deb -libpango-1.0-0 1.52.1+ds-1build1 deb -libpangocairo-1.0-0 1.52.1+ds-1build1 deb -libpangoft2-1.0-0 1.52.1+ds-1build1 deb -libpangoxft-1.0-0 1.52.1+ds-1build1 deb -libpaper1 1.1.29build1 deb -libpci3 1:3.10.0-2build1 deb -libpciaccess0 0.17-3ubuntu0.24.04.2 deb -libpcre2-16-0 10.42-4ubuntu2.1 deb -libpcre2-32-0 10.42-4ubuntu2.1 deb -libpcre2-8-0 10.42-4ubuntu2.1 deb -libpcre2-dev 10.42-4ubuntu2.1 deb -libpcre2-posix3 10.42-4ubuntu2.1 deb -libperl5.38t64 5.38.2-3.2ubuntu0.2 deb -libpipeline1 1.5.7-2 deb -libpixman-1-0 0.42.2-1build1 deb -libpkgconf3 1.8.1-2build1 deb -libpng16-16t64 1.6.43-5build1 deb -libpolkit-agent-1-0 124-2ubuntu1.24.04.2 deb -libpolkit-gobject-1-0 124-2ubuntu1.24.04.2 deb -libportaudio2 19.6.0-1.2build3 deb -libproc2-0 2:4.0.4-4ubuntu3.2 deb -libproxy1v5 0.5.4-4build1 deb -libpsl5t64 0.21.2-1.1build1 deb -libpthread-stubs0-dev 0.4-1build3 deb -libpulse0 1:16.1+dfsg1-2ubuntu10.1 deb -libpython3-stdlib 3.12.3-0ubuntu2.1 deb -libpython3.12-minimal 3.12.3-1ubuntu0.9 deb -libpython3.12-stdlib 3.12.3-1ubuntu0.9 deb -libquadmath0 14.2.0-4ubuntu2~24.04 deb -librav1e0 0.7.1-2 deb -libreadline8t64 8.2-4build1 deb -librhash0 1.4.3-3build1 deb -librsvg2-2 2.58.0+dfsg-1build1 deb -librtmp1 2.4+20151223.gitfa8646d.1-2build7 deb -libsamplerate0 0.2.2-4build1 deb -libsasl2-2 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 -libseccomp2 2.5.5-1ubuntu3.1 deb -libselinux1 3.5-2ubuntu2.1 deb -libselinux1-dev 3.5-2ubuntu2.1 deb -libsemanage-common 3.5-1build5 deb -libsemanage2 3.5-1build5 deb -libsensors-config 1:3.6.0-9build1 deb -libsensors5 1:3.6.0-9build1 deb -libsepol-dev 3.5-2build1 deb -libsepol2 3.5-2build1 deb -libsframe1 2.42-4ubuntu2.7 deb -libsharpyuv0 1.3.2-0.4build3 deb -libshine3 3.1.1-2build1 deb -libsm6 2:1.2.3-1build3 deb -libsmartcols1 2.39.3-9ubuntu6.3 deb -libsnapd-glib-2-1 1.64-0ubuntu5 deb -libsnappy1v5 1.1.10-1build1 deb -libsndfile1 1.2.2-1ubuntu5.24.04.1 deb -libsoup-3.0-0 3.4.4-5ubuntu0.5 deb -libsoup-3.0-common 3.4.4-5ubuntu0.5 deb -libsoxr0 0.1.3-4build3 deb -libspectre1 0.2.12-1build2 deb -libspeex1 1.2.1-2ubuntu2.24.04.1 deb -libspeexdsp1 1.2.1-1ubuntu3 deb -libsqlite3-0 3.45.1-1ubuntu2.5 deb -libss2 1.47.0-2.4~exp1ubuntu4.1 deb -libssh-4 0.10.6-2ubuntu0.2 deb -libssl3t64 3.0.13-0ubuntu3.6 deb -libstartup-notification0 0.12-6build3 deb -libstdc++-13-dev 13.3.0-6ubuntu2~24.04 deb -libstdc++6 14.2.0-4ubuntu2~24.04 deb -libstemmer0d 2.2.0-4build1 deb -libsvtav1enc1d1 1.7.0+dfsg-2build1 deb -libswresample4 7:6.1.1-3ubuntu5 deb -libsystemd-shared 255.4-1ubuntu8.11 deb -libsystemd0 255.4-1ubuntu8.11 deb -libtasn1-6 4.19.0-3ubuntu0.24.04.1 deb -libtdb1 1.4.10-1build1 deb -libthai-data 0.1.29-2build1 deb -libthai0 0.1.29-2build1 deb -libtheora0 1.1.1+dfsg.1-16.1build3 deb -libtiff6 4.5.1+git230720-4ubuntu2.4 deb -libtinfo6 6.4+20240113-1ubuntu2 deb -libtsan2 14.2.0-4ubuntu2~24.04 deb -libtwolame0 0.4.0-2build3 deb -libubsan1 14.2.0-4ubuntu2~24.04 deb -libuchardet0 0.0.8-1build1 deb -libudev1 255.4-1ubuntu8.11 deb -libunistring5 1.1-2build1.1 deb -libunwind8 1.6.2-3build1.1 deb -libutempter0 1.2.1-3build1 deb -libuuid1 2.39.3-9ubuntu6.3 deb -libuv1t64 1.48.0-1.1build1 deb -libva-drm2 2.20.0-2build1 deb -libva-x11-2 2.20.0-2build1 deb -libva2 2.20.0-2build1 deb -libvdpau1 1.5-2build1 deb -libvorbis0a 1.3.7-1build3 deb -libvorbisenc2 1.3.7-1build3 deb -libvpl2 2023.3.0-1build1 deb -libvpx9 1.14.0-1ubuntu2.2 deb -libvulkan1 1.3.275.0-1build1 deb -libwayland-client0 1.22.0-2.1build1 deb -libwayland-cursor0 1.22.0-2.1build1 deb -libwayland-egl1 1.22.0-2.1build1 deb -libwayland-server0 1.22.0-2.1build1 deb -libwebp7 1.3.2-0.4build3 deb -libwebpdemux2 1.3.2-0.4build3 deb -libwebpmux3 1.3.2-0.4build3 deb -libwebrtc-audio-processing1 0.3.1-0ubuntu6 deb -libwrap0 7.6.q-33 deb -libx11-6 2:1.8.7-1build1 deb -libx11-data 2:1.8.7-1build1 deb -libx11-dev 2:1.8.7-1build1 deb -libx11-xcb1 2:1.8.7-1build1 deb -libx264-164 2:0.164.3108+git31e19f9-1 deb -libx265-199 3.5-2build1 deb -libxau-dev 1:1.0.9-1build6 deb -libxau6 1:1.0.9-1build6 deb -libxaw7 2:1.0.14-1build2 deb -libxcb-damage0 1.15-1ubuntu2 deb -libxcb-dri2-0 1.15-1ubuntu2 deb -libxcb-dri3-0 1.15-1ubuntu2 deb -libxcb-glx0 1.15-1ubuntu2 deb -libxcb-icccm4 0.4.1-1.1build3 deb -libxcb-image0 0.4.0-2build1 deb -libxcb-keysyms1 0.4.0-1build4 deb -libxcb-present0 1.15-1ubuntu2 deb -libxcb-randr0 1.15-1ubuntu2 deb -libxcb-render-util0 0.3.9-1build4 deb -libxcb-render0 1.15-1ubuntu2 deb -libxcb-shape0 1.15-1ubuntu2 deb -libxcb-shm0 1.15-1ubuntu2 deb -libxcb-sync1 1.15-1ubuntu2 deb -libxcb-util1 0.4.0-1build3 deb -libxcb-xfixes0 1.15-1ubuntu2 deb -libxcb-xkb1 1.15-1ubuntu2 deb -libxcb1 1.15-1ubuntu2 deb -libxcb1-dev 1.15-1ubuntu2 deb -libxcomposite1 1:0.4.5-1build3 deb -libxcursor1 1:1.2.1-1build1 deb -libxcvt0 0.1.2-1build1 deb -libxdamage1 1:1.1.6-1build1 deb -libxdmcp-dev 1:1.1.3-0ubuntu6 deb -libxdmcp6 1:1.1.3-0ubuntu6 deb -libxdo3 1:3.20160805.1-5build1 deb -libxext-dev 2:1.3.4-1build2 deb -libxext6 2:1.3.4-1build2 deb -libxfce4util-common 4.18.1-2build3 deb -libxfce4util7 4.18.1-2build3 deb -libxfconf-0-3 4.18.1-1build3 deb -libxfixes-dev 1:6.0.0-2build1 deb -libxfixes3 1:6.0.0-2build1 deb -libxfont2 1:2.0.6-1build1 deb -libxft2 2.3.6-1build1 deb -libxi-dev 2:1.8.1-1build1 deb -libxi6 2:1.8.1-1build1 deb -libxinerama1 2:1.1.4-3build1 deb -libxkbcommon-x11-0 1.6.0-1build1 deb -libxkbcommon0 1.6.0-1build1 deb -libxkbfile1 1:1.1.0-1build4 deb -libxml2 2.9.14+dfsg-1.3ubuntu3.6 deb -libxmlb2 0.3.18-1 deb -libxmu6 2:1.1.3-3build2 deb -libxmuu1 2:1.1.3-3build2 deb -libxpm4 1:3.5.17-1build2 deb -libxrandr2 2:1.5.2-2build1 deb -libxrender1 1:0.9.10-1.1build1 deb -libxshmfence1 1.3-1build5 deb -libxss1 1:1.2.3-1build3 deb -libxt6t64 1:1.2.1-1.2build1 deb -libxtables12 1.8.10-3ubuntu2 deb -libxtst-dev 2:1.2.3-1.1build1 deb -libxtst6 2:1.2.3-1.1build1 deb -libxv1 2:1.0.11-1.1build1 deb -libxvidcore4 2:1.3.7-1build1 deb -libxvmc1 2:1.0.12-2build3 deb -libxxf86dga1 2:1.1.5-1build1 deb -libxxf86vm1 1:1.1.4-1build4 deb -libxxhash0 0.8.2-2build1 deb -libyaml-0-2 0.2.5-1build1 deb -libzstd1 1.5.5+dfsg2-2build1.1 deb -libzvbi-common 0.2.42-2 deb -libzvbi0t64 0.2.42-2 deb -linux-libc-dev 6.8.0-88.89 deb -locales 2.39-0ubuntu8.6 deb -locales-all 2.39-0ubuntu8.6 deb -login 1:4.13+dfsg1-4ubuntu3.2 deb -logsave 1.47.0-2.4~exp1ubuntu4.1 deb -lsb-release 12.0-2 deb -make 4.3-4.1build2 deb -man-db 2.12.0-4build2 deb -mawk 1.3.4.20240123-1build1 deb -media-types 10.1.0 deb -mesa-libgallium 25.0.7-0ubuntu0.24.04.2 deb -mesa-va-drivers 25.0.7-0ubuntu0.24.04.2 deb -mesa-vulkan-drivers 25.0.7-0ubuntu0.24.04.2 deb -more-itertools 10.3.0 python -mount 2.39.3-9ubuntu6.3 deb -msgpack 1.1.2 python -multidict 6.7.0 python -my-test-package 1.0 python -ncurses-base 6.4+20240113-1ubuntu2 deb -ncurses-bin 6.4+20240113-1ubuntu2 deb -ncurses-term 6.4+20240113-1ubuntu2 deb -netbase 6.4 deb -netcat-openbsd 1.226-1ubuntu2 deb -nftables 1.0.9-1build1 deb -nginx 1.24.0-2ubuntu7.5 deb -nginx-common 1.24.0-2ubuntu7.5 deb -oauthlib 3.2.2 python -ocl-icd-libopencl1 2.3.2-1build1 deb -openbox 3.6.1-12build5 deb -openssh-client 1:9.6p1-3ubuntu13.14 deb -openssl 3.0.13-0ubuntu3.6 deb -packagekit 1.2.8-2ubuntu1.4 deb -packaging 24.0 python -packaging 24.2 python -pasimple 0.0.3 python -passwd 1:4.13+dfsg1-4ubuntu3.2 deb -pci.ids 0.0~2024.03.31-1ubuntu0.1 deb -pciutils 1:3.10.0-2build1 deb -pcmflux 1.0.6 python -perl 5.38.2-3.2ubuntu0.2 deb -perl-base 5.38.2-3.2ubuntu0.2 deb -perl-modules-5.38 5.38.2-3.2ubuntu0.2 deb -pillow 12.0.0 python -pinentry-curses 1.2.1-3ubuntu5 deb -pip 24.0 python -pixelflux 1.4.7 python -pkgconf 1.8.1-2build1 deb -pkgconf-bin 1.8.1-2build1 deb -platformdirs 4.2.2 python -polkitd 124-2ubuntu1.24.04.2 deb -poppler-data 0.4.12-1 deb -procps 2:4.0.4-4ubuntu3.2 deb -prometheus-client 0.23.1 python -propcache 0.4.1 python -psmisc 23.7-1build1 deb -psutil 7.1.3 python -publicsuffix 20231001.0357-0.1 deb -pulseaudio 1:16.1+dfsg1-2ubuntu10.1 deb -pulseaudio-utils 1:16.1+dfsg1-2ubuntu10.1 deb -pulsectl 24.12.0 python -pycparser 2.23 python -pyee 13.0.0 python -pygobject 3.48.2 python -pyjwt 2.7.0 python -pylibsrtp 1.0.0 python -pynput 1.8.1 python -pyopenssl 25.3.0 python -pyparsing 3.1.1 python -python-apt 2.7.7+ubuntu5 python -python-apt-common 2.7.7ubuntu5 deb -python-xlib 0.33 python -python3 3.12.3-0ubuntu2.1 deb -python3-apt 2.7.7ubuntu5 deb -python3-blinker 1.7.0-1 deb -python3-cffi-backend 1.16.0-2build1 deb -python3-cryptography 41.0.7-4ubuntu0.1 deb -python3-dbus 1.3.2-5build3 deb -python3-distro 1.9.0-1 deb -python3-gi 3.48.2-1 deb -python3-httplib2 0.20.4-3 deb -python3-jwt 2.7.0-1 deb -python3-launchpadlib 1.11.0-6 deb -python3-lazr.restfulclient 0.14.6-1 deb -python3-lazr.uri 1.0.6-3 deb -python3-minimal 3.12.3-0ubuntu2.1 deb -python3-oauthlib 3.2.2-1 deb -python3-packaging 24.0-1 deb -python3-pip-whl 24.0+dfsg-1ubuntu1.3 deb -python3-pkg-resources 68.1.2-2ubuntu1.2 deb -python3-pyparsing 3.1.1-1 deb -python3-setuptools-whl 68.1.2-2ubuntu1.2 deb -python3-six 1.16.0-4 deb -python3-software-properties 0.99.49.3 deb -python3-venv 3.12.3-0ubuntu2.1 deb -python3-wadllib 1.3.6-5 deb -python3-xdg 0.28-2 deb -python3.12 3.12.3-1ubuntu0.9 deb -python3.12-minimal 3.12.3-1ubuntu0.9 deb -python3.12-venv 3.12.3-1ubuntu0.9 deb -pyxdg 0.28 python -readline-common 8.2-4build1 deb -resenje.org/singleflight v0.4.3 go-module -rpcsvc-proto 1.4.2-0ubuntu7 deb -sed 4.9-2build1 deb -selkies 0.0.0 python -sensible-utils 0.0.22 deb -session-migration 0.3.9build1 deb -setuptools 80.9.0 python -sgml-base 1.31 deb -shared-mime-info 2.4-4 deb -sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 go-module (+2 duplicates) -sigs.k8s.io/randfill v1.0.0 go-module (+1 duplicate) -sigs.k8s.io/structured-merge-diff/v6 v6.3.0 go-module (+1 duplicate) -sigs.k8s.io/yaml v1.6.0 go-module (+3 duplicates) -six 1.16.0 python -software-properties-common 0.99.49.3 deb -ssl-cert 1.1.2ubuntu1 deb -stdlib go1.24.9 go-module (+4 duplicates) -stdlib go1.25.3 go-module -stdlib go1.25.5 go-module (+2 duplicates) -stterm 0.9-1 deb -sudo 1.9.15p5-3ubuntu5.24.04.1 deb -systemd 255.4-1ubuntu8.11 deb -systemd-dev 255.4-1ubuntu8.11 deb -systemd-sysv 255.4-1ubuntu8.11 deb -sysvinit-utils 3.08-6ubuntu3 deb -tags.cncf.io/container-device-interface v1.0.1 go-module (+3 duplicates) -tags.cncf.io/container-device-interface/specs-go v1.0.0 go-module (+2 duplicates) -tar 1.35+dfsg-3build1 deb -tomli 2.0.1 python -typeguard 4.3.0 python -typing-extensions 4.12.2 python -typing-extensions 4.15.0 python -tzdata 2025b-0ubuntu0.24.04.1 deb -ubuntu-keyring 2023.11.28.1 deb -ubuntu-mono 24.04-0ubuntu1 deb -ucf 3.0043+nmu1 deb -udev 255.4-1ubuntu8.11 deb -unminimize 0.2.1 deb -util-linux 2.39.3-9ubuntu6.3 deb -uuid-dev 2.39.3-9ubuntu6.3 deb -vulkan-tools 1.3.275.0+dfsg1-1 deb -wadllib 1.3.6 python -watchdog 6.0.0 python -websockets 15.0.1 python -wheel 0.45.1 python -x11-apps 7.7+11build3 deb -x11-common 1:7.7+23ubuntu3 deb -x11-session-utils 7.7+6build2 deb -x11-utils 7.7+6build2 deb -x11-xkb-utils 7.7+8build2 deb -x11-xserver-utils 7.7+10build2 deb -x11proto-dev 2023.2-1 deb -xauth 1:1.1.2-1build1 deb -xbitmaps 1.1.1-2.2 deb -xclip 0.13-3 deb -xcvt 0.1.2-1build1 deb -xdg 5 python -xdg-utils 1.1.3-4.1ubuntu3 deb -xdotool 1:3.20160805.1-5build1 deb -xfconf 4.18.1-1build3 deb -xfonts-base 1:1.0.5+nmu1 deb -xfonts-encodings 1:1.0.5-0ubuntu2 deb -xfonts-utils 1:7.7+6build3 deb -xkb-data 2.41-2ubuntu1.1 deb -xml-core 0.19 deb -xorg-sgml-doctools 1:1.11-1.1 deb -xsel 1.2.1-1 deb -xserver-common 2:21.1.12-1ubuntu1.5 deb -xserver-xorg-core 2:21.1.12-1ubuntu1.5 deb -xserver-xorg-video-amdgpu 23.0.0-1ubuntu0.24.04.1 deb -xserver-xorg-video-ati 1:22.0.0-1build1 deb -xserver-xorg-video-intel 2:2.99.917+git20210115-1build1 deb -xserver-xorg-video-nouveau 1:1.0.17-2ubuntu0.1 deb -xserver-xorg-video-qxl 0.1.6-1build1 deb -xserver-xorg-video-radeon 1:22.0.0-1build1 deb -xsettingsd 1.0.2-1build1 deb -xterm 390-1ubuntu3 deb -xtrans-dev 1.4.0-1 deb -xutils 1:7.7+23ubuntu3 deb -xvfb 2:21.1.12-1ubuntu1.5 deb -yarl 1.22.0 python -zipp 3.19.2 python -zlib1g 1:1.3.dfsg-3.1ubuntu2.1 deb -zlib1g-dev 1:1.3.dfsg-3.1ubuntu2.1 deb +NAME VERSION TYPE +1to2 1.0.0 npm +@colors/colors 1.5.0 npm +@gar/promisify 1.1.3 npm +@isaacs/cliui 8.0.2 npm +@isaacs/string-locale-compare 1.1.0 npm +@kasmtech/novnc 1.3.0 npm +@npmcli/arborist 6.2.9 npm +@npmcli/config 6.1.7 npm +@npmcli/disparity-colors 3.0.0 npm +@npmcli/fs 2.1.2 npm +@npmcli/fs 3.1.0 npm +@npmcli/git 4.0.4 npm +@npmcli/installed-package-contents 2.0.2 npm +@npmcli/map-workspaces 3.0.4 npm +@npmcli/metavuln-calculator 5.0.1 npm +@npmcli/move-file 2.0.1 npm +@npmcli/name-from-folder 2.0.0 npm +@npmcli/node-gyp 3.0.0 npm +@npmcli/package-json 3.1.0 npm +@npmcli/promise-spawn 6.0.2 npm +@npmcli/query 3.0.0 npm +@npmcli/run-script 6.0.2 npm +@pkgjs/parseargs 0.11.0 npm +@sigstore/protobuf-specs 0.1.0 npm +@socket.io/component-emitter 3.1.0 npm +@tootallnate/once 2.0.0 npm +@tufjs/canonical-json 1.0.0 npm +@tufjs/models 1.0.4 npm +@types/cookie 0.4.1 npm +@types/cors 2.8.14 npm +@types/node 20.8.3 npm +PyGObject 3.42.1 python +PyJWT 2.3.0 python +SecretStorage 3.3.1 python +abbrev 1.1.1 npm +abbrev 2.0.0 npm +abort-controller 3.0.0 npm +accepts 1.3.8 npm +adduser 3.118ubuntu5 deb +agent-base 6.0.2 npm +agentkeepalive 4.3.0 npm +aggregate-error 3.1.0 npm +ansi-regex 5.0.1 npm +ansi-regex 6.0.1 npm +ansi-styles 4.3.0 npm +ansi-styles 6.2.1 npm +aproba 2.0.0 npm +apt 2.4.10 deb +apt-utils 2.4.10 deb +archy 1.0.0 npm +are-we-there-yet 3.0.1 npm +are-we-there-yet 4.0.0 npm +array-flatten 1.1.1 npm +async 3.2.4 npm +at-spi2-core 2.44.0-3 deb +balanced-match 1.0.2 npm +base-files 12ubuntu4.3 deb +base-passwd 3.5.52build1 deb +base64-js 1.5.1 npm +base64id 2.0.0 npm +bash 5.1-6ubuntu1 deb +bash 5.1.16 binary +bc 1.07.1-3build1 deb +bin-links 4.0.1 npm +binary-extensions 2.2.0 npm +bindings 1.5.0 npm +blinker 1.4 python +body-parser 1.20.1 npm +brace-expansion 1.1.11 npm +brace-expansion 2.0.1 npm +bsdextrautils 2.37.2-4ubuntu3 deb +bsdutils 1:2.37.2-4ubuntu3 deb +buffer 6.0.3 npm +builtins 5.0.1 npm +bytes 3.1.2 npm +bzip2 1.0.8-5build1 deb +ca-certificates 20230311ubuntu0.22.04.1 deb +cacache 16.1.3 npm +cacache 17.1.2 npm +call-bind 1.0.2 npm +chalk 4.1.2 npm +chownr 2.0.0 npm +ci-info 3.8.0 npm +cidr-regex 3.1.1 npm +clean-stack 2.2.0 npm +cli-columns 4.0.0 npm +cli-table3 0.6.3 npm +clone 1.0.4 npm +cloud.google.com/go v0.102.1 go-module +cloud.google.com/go/compute v1.7.0 go-module +cloud.google.com/go/logging v1.4.2 go-module +cmd-shim 6.0.1 npm +code.cloudfoundry.org/clock v1.0.0 go-module +color-convert 2.0.1 npm +color-name 1.1.4 npm +color-support 1.1.3 npm +columnify 1.6.0 npm +common-ancestor-path 1.0.1 npm +concat-map 0.0.1 npm +console-control-strings 1.1.0 npm +containerd.io 1.6.24-1 deb +content-disposition 0.5.4 npm +content-type 1.0.5 npm +cookie 0.4.2 npm +cookie 0.5.0 npm +cookie-signature 1.0.6 npm +corepack 0.18.0 npm +coreutils 8.32-4.1ubuntu1 deb +cors 2.8.5 npm +cpp 4:11.2.0-1ubuntu1 deb +cpp-11 11.4.0-1ubuntu1~22.04 deb +cross-spawn 7.0.3 npm +cryptography 3.4.8 python +cssesc 3.0.0 npm +cups 2.4.1op1-1ubuntu4.7 deb +cups-client 2.4.1op1-1ubuntu4.7 deb +cups-common 2.4.1op1-1ubuntu4.7 deb +cups-core-drivers 2.4.1op1-1ubuntu4.7 deb +cups-daemon 2.4.1op1-1ubuntu4.7 deb +cups-filters 1.28.15-0ubuntu1.2 deb +cups-filters-core-drivers 1.28.15-0ubuntu1.2 deb +cups-ipp-utils 2.4.1op1-1ubuntu4.7 deb +cups-ppdc 2.4.1op1-1ubuntu4.7 deb +cups-server-common 2.4.1op1-1ubuntu4.7 deb +curl 7.81.0-1ubuntu1.13 deb +dash 0.5.11+git20210903+057cd650a4ed-3build1 deb +dbus 1.12.20-2ubuntu4.1 deb +dbus-python 1.2.18 python +dbus-x11 1.12.20-2ubuntu4.1 deb +dconf-gsettings-backend 0.40.0-3 deb +dconf-service 0.40.0-3 deb +debconf 1.5.79ubuntu1 deb +debianutils 5.5-1ubuntu2 deb +debug 2.6.9 npm +debug 4.3.4 npm +defaults 1.0.4 npm +delegates 1.0.0 npm +depd 2.0.0 npm +destroy 1.2.0 npm +diff 5.1.0 npm +diffutils 1:3.8-0ubuntu2 deb +dirmngr 2.2.27-3ubuntu2.1 deb +distro 1.7.0 python +distro-info-data 0.52ubuntu0.4 deb +docker-ce 5:24.0.6-1~ubuntu.22.04~jammy deb +docker-ce-cli 5:24.0.6-1~ubuntu.22.04~jammy deb +docker-compose-plugin 2.21.0-1~ubuntu.22.04~jammy deb +dpkg 1.21.1ubuntu2.2 deb +e2fsprogs 1.46.5-2ubuntu1.1 deb +eastasianwidth 0.2.0 npm +ee-first 1.1.1 npm +ejs 3.1.9 npm +emoji-regex 8.0.0 npm +emoji-regex 9.2.2 npm +encodeurl 1.0.2 npm +encoding 0.1.13 npm +engine.io 6.5.3 npm +engine.io-parser 5.2.1 npm +env-paths 2.2.1 npm +err-code 2.0.3 npm +escape-html 1.0.3 npm +etag 1.8.1 npm +event-target-shim 5.0.1 npm +events 3.3.0 npm +express 4.18.2 npm +fastest-levenshtein 1.0.16 npm +ffmpeg 7:4.4.2-0ubuntu0.22.04.1 deb +file 1:5.41-3ubuntu0.1 deb +file-uri-to-path 1.0.0 npm +filelist 1.0.4 npm +finalhandler 1.2.0 npm +findutils 4.8.0-1ubuntu3 deb +fontconfig 2.13.1-4.2ubuntu5 deb +fontconfig-config 2.13.1-4.2ubuntu5 deb +fonts-dejavu-core 2.37-2build1 deb +fonts-urw-base35 20200910-1 deb +foreground-child 3.1.1 npm +forwarded 0.2.0 npm +fresh 0.5.2 npm +fs-minipass 2.1.0 npm +fs-minipass 3.0.2 npm +fs.realpath 1.0.0 npm +function-bind 1.1.1 npm +fuse-overlayfs 1.7.1-1 deb +fuse3 3.10.5-1build1 deb +gauge 4.0.4 npm +gauge 5.0.1 npm +gcc-11-base 11.4.0-1ubuntu1~22.04 deb +gcc-12-base 12.3.0-1ubuntu1~22.04 deb +get-intrinsic 1.2.1 npm +ghostscript 9.55.0~dfsg1-0ubuntu5.4 deb +gir1.2-atk-1.0 2.36.0-3build1 deb +gir1.2-atspi-2.0 2.44.0-3 deb +gir1.2-freedesktop 1.72.0-1 deb +gir1.2-glib-2.0 1.72.0-1 deb +gir1.2-packagekitglib-1.0 1.2.5-2ubuntu2 deb +github.com/AlecAivazis/survey/v2 v2.3.7 go-module +github.com/Graylog2/go-gelf v0.0.0-20191017102106-1550ee647df0 go-module +github.com/Masterminds/semver/v3 v3.2.1 go-module +github.com/Microsoft/hcsshim v0.9.10 go-module +github.com/Microsoft/hcsshim v0.9.8 go-module +github.com/RackSec/srslog v0.0.0-20180709174129-a4725f04ec91 go-module +github.com/adrg/xdg v0.4.0 go-module +github.com/agext/levenshtein v1.2.3 go-module +github.com/armon/circbuf v0.0.0-20190214190532-5111143e8da2 go-module +github.com/armon/go-metrics v0.4.1 go-module +github.com/aws/aws-sdk-go-v2 v1.16.13 go-module +github.com/aws/aws-sdk-go-v2 v1.17.6 go-module +github.com/aws/aws-sdk-go-v2/config v1.17.4 go-module +github.com/aws/aws-sdk-go-v2/config v1.18.16 go-module +github.com/aws/aws-sdk-go-v2/credentials v1.12.17 go-module +github.com/aws/aws-sdk-go-v2/credentials v1.13.16 go-module +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.14 go-module +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.24 go-module +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.20 go-module +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.30 go-module +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.14 go-module +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.24 go-module +github.com/aws/aws-sdk-go-v2/internal/ini v1.3.21 go-module +github.com/aws/aws-sdk-go-v2/internal/ini v1.3.31 go-module +github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.15.17 go-module +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.14 go-module +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.24 go-module +github.com/aws/aws-sdk-go-v2/service/sso v1.11.20 go-module +github.com/aws/aws-sdk-go-v2/service/sso v1.12.5 go-module +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.2 go-module +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.5 go-module +github.com/aws/aws-sdk-go-v2/service/sts v1.16.16 go-module +github.com/aws/aws-sdk-go-v2/service/sts v1.18.6 go-module +github.com/aws/smithy-go v1.13.1 go-module +github.com/aws/smithy-go v1.13.5 go-module +github.com/beorn7/perks v1.0.1 go-module +github.com/blang/semver v3.5.1+incompatible go-module +github.com/bsphere/le_go v0.0.0-20200109081728-fc06dab2caa8 go-module +github.com/buger/goterm v1.0.4 go-module +github.com/cenkalti/backoff/v4 v4.1.2 go-module +github.com/cenkalti/backoff/v4 v4.2.0 go-module +github.com/cespare/xxhash/v2 v2.1.2 go-module +github.com/cespare/xxhash/v2 v2.2.0 go-module +github.com/checkpoint-restore/go-criu/v5 v5.3.0 go-module +github.com/cilium/ebpf v0.7.0 go-module +github.com/cilium/ebpf v0.9.1 go-module +github.com/cloudflare/cfssl v0.0.0-20180323000720-5d63dbd981b5 go-module +github.com/compose-spec/compose-go v1.18.3 go-module +github.com/container-storage-interface/spec v1.5.0 go-module +github.com/containerd/aufs v1.0.0 go-module +github.com/containerd/btrfs v1.0.0 go-module +github.com/containerd/cgroups v1.0.4 go-module +github.com/containerd/cgroups/v3 v3.0.2 go-module +github.com/containerd/console v1.0.3 go-module +github.com/containerd/containerd v1.6.22 go-module +github.com/containerd/containerd v1.6.24 go-module +github.com/containerd/containerd v1.7.3 go-module +github.com/containerd/continuity v0.3.0 go-module +github.com/containerd/continuity v0.4.1 go-module +github.com/containerd/fifo v1.0.0 go-module +github.com/containerd/fifo v1.1.0 go-module +github.com/containerd/go-cni v1.1.6 go-module +github.com/containerd/go-runc v1.0.0 go-module +github.com/containerd/go-runc v1.1.0 go-module +github.com/containerd/imgcrypt v1.1.4 go-module +github.com/containerd/nri v0.1.0 go-module +github.com/containerd/stargz-snapshotter/estargz v0.13.0 go-module +github.com/containerd/ttrpc v1.1.2 go-module +github.com/containerd/typeurl v1.0.2 go-module +github.com/containerd/typeurl/v2 v2.1.0 go-module +github.com/containerd/typeurl/v2 v2.1.1 go-module +github.com/containerd/zfs v1.1.0 go-module +github.com/containernetworking/cni v1.1.1 go-module +github.com/containernetworking/plugins v1.1.1 go-module +github.com/containers/ocicrypt v1.1.3 go-module +github.com/coreos/go-systemd/v22 v22.3.2 go-module +github.com/coreos/go-systemd/v22 v22.5.0 go-module +github.com/cpuguy83/go-md2man/v2 v2.0.0 go-module +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d go-module +github.com/cyphar/filepath-securejoin v0.2.3 go-module +github.com/davecgh/go-spew v1.1.1 go-module +github.com/deckarep/golang-set/v2 v2.3.0 go-module +github.com/dimchansky/utfbom v1.1.1 go-module +github.com/distribution/distribution/v3 v3.0.0-20230601133803-97b1d649c493 go-module +github.com/docker/buildx v0.11.2 go-module +github.com/docker/cli v24.0.5+incompatible go-module +github.com/docker/cli/cmd/docker v24.0.6 go-module +github.com/docker/compose/v2 (devel) go-module +github.com/docker/distribution v2.8.2+incompatible go-module +github.com/docker/docker v24.0.5+incompatible go-module +github.com/docker/docker v24.0.6 go-module +github.com/docker/docker-credential-helpers v0.7.0 go-module +github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c go-module +github.com/docker/go-connections v0.4.0 go-module +github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c go-module +github.com/docker/go-metrics v0.0.1 go-module +github.com/docker/go-units v0.4.0 go-module +github.com/docker/go-units v0.5.0 go-module +github.com/docker/libkv v0.2.2-0.20211217103745-e480589147e3 go-module +github.com/docker/libtrust v0.0.0-20150526203908-9cbd2a1374f4 go-module +github.com/dustin/go-humanize v1.0.0 go-module +github.com/emicklei/go-restful v2.9.5+incompatible go-module +github.com/emicklei/go-restful/v3 v3.10.1 go-module +github.com/felixge/httpsnoop v1.0.2 go-module +github.com/felixge/httpsnoop v1.0.3 go-module +github.com/fernet/fernet-go v0.0.0-20211208181803-9f70042a33ee go-module +github.com/fluent/fluent-logger-golang v1.9.0 go-module +github.com/fsnotify/fsnotify v1.4.9 go-module +github.com/fvbommel/sortorder v1.0.2 go-module +github.com/go-logr/logr v1.2.2 go-module +github.com/go-logr/logr v1.2.3 go-module +github.com/go-logr/logr v1.2.4 go-module +github.com/go-logr/stdr v1.2.2 go-module +github.com/go-openapi/jsonpointer v0.19.5 go-module +github.com/go-openapi/jsonreference v0.20.0 go-module +github.com/go-openapi/swag v0.19.14 go-module +github.com/godbus/dbus/v5 v5.0.6 go-module +github.com/godbus/dbus/v5 v5.1.0 go-module +github.com/gofrs/flock v0.8.1 go-module +github.com/gogo/googleapis v1.3.2 go-module +github.com/gogo/googleapis v1.4.1 go-module +github.com/gogo/protobuf v1.3.2 go-module +github.com/golang-jwt/jwt/v4 v4.4.2 go-module +github.com/golang/gddo v0.0.0-20190904175337-72a348e765d2 go-module +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da go-module +github.com/golang/mock v1.6.0 go-module +github.com/golang/protobuf v1.5.2 go-module +github.com/golang/protobuf v1.5.3 go-module +github.com/google/btree v1.1.2 go-module +github.com/google/certificate-transparency-go v1.1.4 go-module +github.com/google/gnostic v0.5.7-v3refs go-module +github.com/google/go-cmp v0.5.9 go-module +github.com/google/gofuzz v1.2.0 go-module +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 go-module +github.com/google/uuid v1.3.0 go-module +github.com/googleapis/enterprise-certificate-proxy v0.1.0 go-module +github.com/googleapis/gax-go/v2 v2.4.0 go-module +github.com/gorilla/mux v1.8.0 go-module +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 go-module +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 go-module +github.com/grpc-ecosystem/grpc-gateway v1.16.0 go-module +github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3 go-module +github.com/hashicorp/errwrap v1.1.0 go-module +github.com/hashicorp/go-immutable-radix v1.3.1 go-module +github.com/hashicorp/go-memdb v1.3.2 go-module +github.com/hashicorp/go-msgpack v0.5.5 go-module +github.com/hashicorp/go-multierror v1.1.1 go-module +github.com/hashicorp/go-sockaddr v1.0.2 go-module +github.com/hashicorp/go-version v1.6.0 go-module +github.com/hashicorp/golang-lru v0.5.4 go-module +github.com/hashicorp/memberlist v0.4.0 go-module +github.com/hashicorp/serf v0.8.5 go-module +github.com/imdario/mergo v0.3.12 go-module +github.com/imdario/mergo v0.3.13 go-module +github.com/imdario/mergo v0.3.16 go-module +github.com/in-toto/in-toto-golang v0.5.0 go-module +github.com/intel/goresctrl v0.2.0 go-module +github.com/ishidawataru/sctp v0.0.0-20230406120618-7ff4192f6ff2 go-module +github.com/jonboulle/clockwork v0.4.0 go-module +github.com/josharian/intern v1.0.0 go-module +github.com/json-iterator/go v1.1.12 go-module +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 go-module +github.com/klauspost/compress v1.11.13 go-module +github.com/klauspost/compress v1.16.3 go-module +github.com/klauspost/compress v1.16.5 go-module +github.com/mailru/easyjson v0.7.6 go-module +github.com/mattn/go-colorable v0.1.13 go-module +github.com/mattn/go-isatty v0.0.17 go-module +github.com/mattn/go-runewidth v0.0.14 go-module +github.com/mattn/go-shellwords v1.0.12 go-module +github.com/matttproud/golang_protobuf_extensions v1.0.4 go-module +github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b go-module +github.com/miekg/dns v1.1.43 go-module +github.com/miekg/pkcs11 v1.1.1 go-module +github.com/mistifyio/go-zfs/v3 v3.0.1 go-module +github.com/mitchellh/hashstructure/v2 v2.0.2 go-module +github.com/mitchellh/mapstructure v1.5.0 go-module +github.com/moby/buildkit v0.11.7-0.20230723230859-616c3f613b54 go-module +github.com/moby/buildkit v0.12.1 go-module +github.com/moby/ipvs v1.1.0 go-module +github.com/moby/locker v1.0.1 go-module +github.com/moby/patternmatcher v0.5.0 go-module +github.com/moby/patternmatcher v0.6.0 go-module +github.com/moby/pubsub v1.0.0 go-module +github.com/moby/spdystream v0.2.0 go-module +github.com/moby/swarmkit/v2 v2.0.0-20230531205928-01bb7a41396b go-module +github.com/moby/sys/mount v0.3.3 go-module +github.com/moby/sys/mountinfo v0.5.0 go-module +github.com/moby/sys/mountinfo v0.6.2 go-module +github.com/moby/sys/sequential v0.5.0 go-module +github.com/moby/sys/signal v0.6.0 go-module +github.com/moby/sys/signal v0.7.0 go-module +github.com/moby/sys/symlink v0.2.0 go-module +github.com/moby/term v0.5.0 go-module +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd go-module +github.com/modern-go/reflect2 v1.0.2 go-module +github.com/morikuni/aec v1.0.0 go-module +github.com/mrunalp/fileutils v0.5.0 go-module +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 go-module +github.com/opencontainers/go-digest v1.0.0 go-module +github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b go-module +github.com/opencontainers/image-spec v1.1.0-rc3 go-module +github.com/opencontainers/image-spec v1.1.0-rc4 go-module +github.com/opencontainers/runc v0.0.0-20230810173218-ccaecfcbc907 go-module +github.com/opencontainers/runc v1.1.5 go-module +github.com/opencontainers/runc v1.1.7 go-module +github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417 go-module +github.com/opencontainers/runtime-spec v1.1.0-rc.2 go-module +github.com/opencontainers/selinux v1.10.0 go-module +github.com/opencontainers/selinux v1.10.1 go-module +github.com/opencontainers/selinux v1.11.0 go-module +github.com/package-url/packageurl-go v0.1.1-0.20220428063043-89078438f170 go-module +github.com/pelletier/go-toml v1.9.5 go-module +github.com/philhofer/fwd v1.1.2 go-module +github.com/pkg/errors v0.9.1 go-module +github.com/pmezard/go-difflib v1.0.0 go-module +github.com/prometheus/client_golang v1.11.1 go-module +github.com/prometheus/client_golang v1.14.0 go-module +github.com/prometheus/client_model v0.2.0 go-module +github.com/prometheus/client_model v0.3.0 go-module +github.com/prometheus/common v0.30.0 go-module +github.com/prometheus/common v0.37.0 go-module +github.com/prometheus/common v0.42.0 go-module +github.com/prometheus/procfs v0.7.3 go-module +github.com/prometheus/procfs v0.8.0 go-module +github.com/prometheus/procfs v0.9.0 go-module +github.com/rivo/uniseg v0.2.0 go-module +github.com/rootless-containers/rootlesskit v1.1.1 go-module +github.com/russross/blackfriday/v2 v2.0.1 go-module +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 go-module +github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646 go-module +github.com/secure-systems-lab/go-securesystemslib v0.4.0 go-module +github.com/serialx/hashring v0.0.0-20190422032157-8b2912629002 go-module +github.com/shibumi/go-pathspec v1.3.0 go-module +github.com/shurcooL/sanitized_anchor_name v1.0.0 go-module +github.com/sirupsen/logrus v1.8.1 go-module +github.com/sirupsen/logrus v1.9.0 go-module +github.com/sirupsen/logrus v1.9.3 go-module +github.com/spdx/tools-golang v0.3.1-0.20230104082527-d6f58551be3f go-module +github.com/spf13/cobra v1.6.1 go-module +github.com/spf13/cobra v1.7.0 go-module +github.com/spf13/pflag v1.0.5 go-module +github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980 go-module +github.com/stretchr/testify v1.8.4 go-module +github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 go-module +github.com/tchap/go-patricia v2.2.6+incompatible go-module +github.com/theupdateframework/notary v0.7.0 go-module +github.com/tilt-dev/fsnotify v1.4.8-0.20220602155310-fff9c274a375 go-module +github.com/tinylib/msgp v1.1.6 go-module +github.com/tonistiigi/fsutil v0.0.0-20230105215944-fb433841cbfa go-module +github.com/tonistiigi/fsutil v0.0.0-20230629203738-36ef4d8c0dbb go-module +github.com/tonistiigi/go-actions-cache v0.0.0-20220404170428-0bdeb6e1eac7 go-module +github.com/tonistiigi/go-archvariant v1.0.0 go-module +github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea go-module +github.com/tonistiigi/vt100 v0.0.0-20230623042737-f9a4f7ef6531 go-module +github.com/urfave/cli v1.22.1 go-module +github.com/vbatts/tar-split v0.11.2 go-module +github.com/vishvananda/netlink v1.1.0 go-module +github.com/vishvananda/netlink v1.1.1-0.20210330154013-f5de75959ad5 go-module +github.com/vishvananda/netlink v1.2.1-beta.2 go-module +github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df go-module +github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f go-module +github.com/vishvananda/netns v0.0.2 go-module +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb go-module +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 go-module +github.com/xeipuuv/gojsonschema v1.2.0 go-module +glib-networking 2.72.0-1 deb +glib-networking-common 2.72.0-1 deb +glib-networking-services 2.72.0-1 deb +glob 10.2.4 npm +glob 7.2.3 npm +glob 8.1.0 npm +gnupg 2.2.27-3ubuntu2.1 deb +gnupg-l10n 2.2.27-3ubuntu2.1 deb +gnupg-utils 2.2.27-3ubuntu2.1 deb +go.etcd.io/bbolt v1.3.7 go-module +go.etcd.io/etcd/client/pkg/v3 v3.5.6 go-module +go.etcd.io/etcd/pkg/v3 v3.5.6 go-module +go.etcd.io/etcd/raft/v3 v3.5.6 go-module +go.etcd.io/etcd/server/v3 v3.5.6 go-module +go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1 go-module +go.opencensus.io v0.23.0 go-module +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.28.0 go-module +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.29.0 go-module +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0 go-module +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.29.0 go-module +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.40.0 go-module +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.29.0 go-module +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.40.0 go-module +go.opentelemetry.io/otel v1.14.0 go-module +go.opentelemetry.io/otel v1.3.0 go-module +go.opentelemetry.io/otel v1.4.1 go-module +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.14.0 go-module +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.3.0 go-module +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.4.1 go-module +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0 go-module +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.3.0 go-module +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.4.1 go-module +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.14.0 go-module +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.3.0 go-module +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.4.1 go-module +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.14.0 go-module +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.3.0 go-module +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.4.1 go-module +go.opentelemetry.io/otel/internal/metric v0.27.0 go-module +go.opentelemetry.io/otel/metric v0.27.0 go-module +go.opentelemetry.io/otel/metric v0.37.0 go-module +go.opentelemetry.io/otel/sdk v1.14.0 go-module +go.opentelemetry.io/otel/sdk v1.3.0 go-module +go.opentelemetry.io/otel/sdk v1.4.1 go-module +go.opentelemetry.io/otel/trace v1.14.0 go-module +go.opentelemetry.io/otel/trace v1.3.0 go-module +go.opentelemetry.io/otel/trace v1.4.1 go-module +go.opentelemetry.io/proto/otlp v0.11.0 go-module +go.opentelemetry.io/proto/otlp v0.12.0 go-module +go.opentelemetry.io/proto/otlp v0.19.0 go-module +go.uber.org/atomic v1.9.0 go-module +go.uber.org/multierr v1.8.0 go-module +go.uber.org/zap v1.21.0 go-module +golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd go-module +golang.org/x/crypto v0.2.0 go-module +golang.org/x/crypto v0.7.0 go-module +golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1 go-module +golang.org/x/net v0.10.0 go-module +golang.org/x/net v0.8.0 go-module +golang.org/x/net v0.9.0 go-module +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f go-module +golang.org/x/oauth2 v0.1.0 go-module +golang.org/x/oauth2 v0.7.0 go-module +golang.org/x/sync v0.1.0 go-module +golang.org/x/sync v0.3.0 go-module +golang.org/x/sys v0.6.0 go-module +golang.org/x/sys v0.7.0 go-module +golang.org/x/sys v0.8.0 go-module +golang.org/x/term v0.6.0 go-module +golang.org/x/term v0.7.0 go-module +golang.org/x/text v0.8.0 go-module +golang.org/x/text v0.9.0 go-module +golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac go-module +golang.org/x/time v0.3.0 go-module +google.golang.org/api v0.93.0 go-module +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63 go-module +google.golang.org/genproto v0.0.0-20220706185917-7780775163c4 go-module +google.golang.org/genproto v0.0.0-20230526161137-0005af68ea54 go-module +google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9 go-module +google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19 go-module +google.golang.org/grpc v1.50.1 go-module +google.golang.org/grpc v1.57.0 go-module +google.golang.org/protobuf v1.27.1 go-module +google.golang.org/protobuf v1.28.1 go-module +google.golang.org/protobuf v1.30.0 go-module +gopkg.in/inf.v0 v0.9.1 go-module +gopkg.in/square/go-jose.v2 v2.5.1 go-module +gopkg.in/yaml.v2 v2.4.0 go-module +gopkg.in/yaml.v3 v3.0.1 go-module +gpg 2.2.27-3ubuntu2.1 deb +gpg-agent 2.2.27-3ubuntu2.1 deb +gpg-wks-client 2.2.27-3ubuntu2.1 deb +gpg-wks-server 2.2.27-3ubuntu2.1 deb +gpgconf 2.2.27-3ubuntu2.1 deb +gpgsm 2.2.27-3ubuntu2.1 deb +gpgv 2.2.27-3ubuntu2.1 deb +graceful-fs 4.2.11 npm +grep 3.7-1build1 deb +groff-base 1.22.4-8build1 deb +gsettings-desktop-schemas 42.0-1ubuntu1 deb +gzip 1.10-4ubuntu4.1 deb +has 1.0.3 npm +has 1.0.4 npm +has-flag 4.0.0 npm +has-proto 1.0.1 npm +has-symbols 1.0.3 npm +has-unicode 2.0.1 npm +hosted-git-info 6.1.1 npm +hostname 3.23ubuntu2 deb +http-cache-semantics 4.1.1 npm +http-errors 2.0.0 npm +http-proxy-agent 5.0.0 npm +httplib2 0.20.2 python +https-proxy-agent 5.0.1 npm +humanize-ms 1.2.1 npm +iconv-lite 0.4.24 npm +iconv-lite 0.6.3 npm +ieee754 1.2.1 npm +ignore-walk 6.0.3 npm +importlib-metadata 4.6.4 python +imurmurhash 0.1.4 npm +indent-string 4.0.0 npm +infer-owner 1.0.4 npm +inflight 1.0.6 npm +inherits 2.0.4 npm +ini 4.1.0 npm +init-package-json 5.0.0 npm +init-system-helpers 1.62 deb +intel-media-va-driver 22.3.1+dfsg1-1ubuntu2 deb +ip 2.0.0 npm +ip-regex 4.3.0 npm +ipaddr.js 1.9.1 npm +iproute2 5.15.0-1ubuntu2 deb +iptables 1.8.7-1ubuntu5.1 deb +is-cidr 4.0.2 npm +is-core-module 2.12.0 npm +is-fullwidth-code-point 3.0.0 npm +is-lambda 1.0.1 npm +isexe 2.0.0 npm +iso-codes 4.9.0-1 deb +jackspeak 2.2.0 npm +jake 10.8.7 npm +jeepney 0.7.1 python +jq 1.6-2.1ubuntu3 deb +json-parse-even-better-errors 3.0.0 npm +json-stringify-nice 1.1.4 npm +jsonparse 1.3.1 npm +just-diff 6.0.2 npm +just-diff-apply 5.5.0 npm +k8s.io/api v0.22.5 go-module +k8s.io/api v0.26.2 go-module +k8s.io/apimachinery v0.22.5 go-module +k8s.io/apimachinery v0.26.2 go-module +k8s.io/apiserver v0.22.5 go-module +k8s.io/client-go v0.22.5 go-module +k8s.io/client-go v0.26.2 go-module +k8s.io/component-base v0.22.5 go-module +k8s.io/cri-api v0.25.0 go-module +k8s.io/klog/v2 v2.30.0 go-module +k8s.io/klog/v2 v2.80.1 go-module +k8s.io/klog/v2 v2.90.1 go-module +k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 go-module +k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b go-module +k8s.io/utils v0.0.0-20230220204549-a5ecb0141aa5 go-module +kclient 0.3.6 npm +keyboard-configuration 1.205ubuntu3 deb +keyring 23.5.0 python +launchpadlib 1.10.16 python +lazr.restfulclient 0.14.4 python +lazr.uri 1.0.6 python +libacl1 2.3.1-1 deb +libalgorithm-c3-perl 0.11-1 deb +libaom3 3.3.0-1 deb +libapparmor1 3.0.4-2ubuntu2.2 deb +libappstream4 0.15.2-2 deb +libapt-pkg6.0 2.4.10 deb +libargon2-1 0~20171227-0.3 deb +libasound2 1.2.6.1-1ubuntu1 deb +libasound2-data 1.2.6.1-1ubuntu1 deb +libasound2-plugins 1.2.6-1 deb +libass9 1:0.15.2-1 deb +libassuan0 2.5.5-1build1 deb +libasyncns0 0.8-6build2 deb +libatk-bridge2.0-0 2.38.0-3 deb +libatk-bridge2.0-dev 2.38.0-3 deb +libatk1.0-0 2.36.0-3build1 deb +libatk1.0-data 2.36.0-3build1 deb +libatk1.0-dev 2.36.0-3build1 deb +libatk1.0-doc 2.36.0-3build1 deb +libatspi2.0-0 2.44.0-3 deb +libatspi2.0-dev 2.44.0-3 deb +libattr1 1:2.5.1-1build1 deb +libaudit-common 1:3.0.7-1build1 deb +libaudit1 1:3.0.7-1build1 deb +libavahi-client3 0.8-5ubuntu5.1 deb +libavahi-common-data 0.8-5ubuntu5.1 deb +libavahi-common3 0.8-5ubuntu5.1 deb +libavc1394-0 0.5.4-5build2 deb +libavcodec58 7:4.4.2-0ubuntu0.22.04.1 deb +libavdevice58 7:4.4.2-0ubuntu0.22.04.1 deb +libavfilter7 7:4.4.2-0ubuntu0.22.04.1 deb +libavformat58 7:4.4.2-0ubuntu0.22.04.1 deb +libavutil56 7:4.4.2-0ubuntu0.22.04.1 deb +libb-hooks-endofscope-perl 0.25-1 deb +libb-hooks-op-check-perl 0.22-1build5 deb +libblas3 3.10.0-2ubuntu1 deb +libblkid-dev 2.37.2-4ubuntu3 deb +libblkid1 2.37.2-4ubuntu3 deb +libbluray2 1:1.3.1-1 deb +libbpf0 1:0.5.0-1ubuntu22.04.1 deb +libbrotli1 1.0.9-2build6 deb +libbs2b0 3.1.0+dfsg-2.2build1 deb +libbsd0 0.11.5-1 deb +libbz2-1.0 1.0.8-5build1 deb +libc-bin 2.35-0ubuntu3.1 deb +libc-dev-bin 2.35-0ubuntu3.4 deb +libc-devtools 2.35-0ubuntu3.4 deb +libc6 2.35-0ubuntu3.4 deb +libc6-dev 2.35-0ubuntu3.4 deb +libcaca0 0.99.beta19-2.2ubuntu4 deb +libcairo-gobject2 1.16.0-5ubuntu2 deb +libcairo2 1.16.0-5ubuntu2 deb +libcap-ng0 0.7.9-2.2build3 deb +libcap2 1:2.44-1ubuntu0.22.04.1 deb +libcap2-bin 1:2.44-1ubuntu0.22.04.1 deb +libcbor0.8 0.8.0-2ubuntu1 deb +libcdio-cdda2 10.2+2.0.0-1build3 deb +libcdio-paranoia2 10.2+2.0.0-1build3 deb +libcdio19 2.1.0-3build1 deb +libchromaprint1 1.5.1-2 deb +libclass-c3-perl 0.35-1 deb +libclass-data-inheritable-perl 0.08-3 deb +libclass-inspector-perl 1.36-1 deb +libclass-method-modifiers-perl 2.13-1 deb +libclass-singleton-perl 1.6-1 deb +libcodec2-1.0 1.0.1-3 deb +libcom-err2 1.46.5-2ubuntu1.1 deb +libcrypt-dev 1:4.4.27-1 deb +libcrypt1 1:4.4.27-1 deb +libcryptsetup12 2:2.4.3-1ubuntu1.1 deb +libcups2 2.4.1op1-1ubuntu4.7 deb +libcupsfilters1 1.28.15-0ubuntu1.2 deb +libcurl3-gnutls 7.81.0-1ubuntu1.13 deb +libcurl4 7.81.0-1ubuntu1.13 deb +libdata-optlist-perl 0.112-1 deb +libdatetime-locale-perl 1:1.33-1 deb +libdatetime-perl 2:1.55-1build1 deb +libdatetime-timezone-perl 1:2.51-1+2021e deb +libdatrie1 0.2.13-2 deb +libdav1d5 0.9.2-1 deb +libdb5.3 5.3.28+dfsg1-0.8ubuntu3 deb +libdbus-1-3 1.12.20-2ubuntu4.1 deb +libdbus-1-dev 1.12.20-2ubuntu4.1 deb +libdc1394-25 2.2.6-4 deb +libdconf1 0.40.0-3 deb +libdebconfclient0 0.261ubuntu1 deb +libdecor-0-0 0.1.0-3build1 deb +libdeflate0 1.10-2 deb +libdevel-callchecker-perl 0.008-1ubuntu4 deb +libdevel-stacktrace-perl 2.0400-1 deb +libdevmapper1.02.1 2:1.02.175-2.1ubuntu4 deb +libdpkg-perl 1.21.1ubuntu2.2 deb +libdrm-amdgpu1 2.4.113-2~ubuntu0.22.04.1 deb +libdrm-common 2.4.113-2~ubuntu0.22.04.1 deb +libdrm-intel1 2.4.113-2~ubuntu0.22.04.1 deb +libdrm-nouveau2 2.4.113-2~ubuntu0.22.04.1 deb +libdrm-radeon1 2.4.113-2~ubuntu0.22.04.1 deb +libdrm2 2.4.113-2~ubuntu0.22.04.1 deb +libdw1 0.186-1build1 deb +libdynaloader-functions-perl 0.003-1.1 deb +libedit2 3.1-20210910-1build1 deb +libegl-mesa0 23.0.4-0ubuntu1~22.04.1 deb +libegl1 1.4.0-1 deb +libelf1 0.186-1build1 deb +libepoxy0 1.5.10-1 deb +libeval-closure-perl 0.14-1 deb +libexception-class-perl 1.45-1 deb +libexpat1 2.4.7-1ubuntu0.2 deb +libexporter-tiny-perl 1.002002-1 deb +libext2fs2 1.46.5-2ubuntu1.1 deb +libffi-dev 3.4.2-4 deb +libffi8 3.4.2-4 deb +libfftw3-single3 3.3.8-2ubuntu8 deb +libfido2-1 1.10.0-1 deb +libfile-fcntllock-perl 0.22-3build7 deb +libfile-sharedir-perl 1.118-1 deb +libflac8 1.3.3-2ubuntu0.2 deb +libflite1 2.2-3 deb +libfontconfig1 2.13.1-4.2ubuntu5 deb +libfontembed1 1.28.15-0ubuntu1.2 deb +libfontenc1 1:1.1.4-1build3 deb +libfreetype6 2.11.1+dfsg-1ubuntu0.2 deb +libfribidi0 1.0.8-2ubuntu3.1 deb +libfuse3-3 3.10.5-1build1 deb +libgbm1 23.0.4-0ubuntu1~22.04.1 deb +libgcc-s1 12.3.0-1ubuntu1~22.04 deb +libgcrypt20 1.9.4-3ubuntu3 deb +libgd3 2.3.0-2ubuntu2 deb +libgdbm-compat4 1.23-1 deb +libgdbm6 1.23-1 deb +libgdk-pixbuf-2.0-0 2.42.8+dfsg-1ubuntu0.2 deb +libgdk-pixbuf2.0-common 2.42.8+dfsg-1ubuntu0.2 deb +libgfortran5 12.3.0-1ubuntu1~22.04 deb +libgif7 5.1.9-2build2 deb +libgirepository-1.0-1 1.72.0-1 deb +libgl1 1.4.0-1 deb +libgl1-mesa-dri 23.0.4-0ubuntu1~22.04.1 deb +libglapi-mesa 23.0.4-0ubuntu1~22.04.1 deb +libglib2.0-0 2.72.4-0ubuntu2.2 deb +libglib2.0-bin 2.72.4-0ubuntu2.2 deb +libglib2.0-data 2.72.4-0ubuntu2.2 deb +libglib2.0-dev 2.72.4-0ubuntu2.2 deb +libglib2.0-dev-bin 2.72.4-0ubuntu2.2 deb +libglu1-mesa 9.0.2-1 deb +libglvnd0 1.4.0-1 deb +libglx-mesa0 23.0.4-0ubuntu1~22.04.1 deb +libglx0 1.4.0-1 deb +libgme0 0.6.3-2 deb +libgmp10 2:6.2.1+dfsg-3ubuntu1 deb +libgnutls30 3.7.3-4ubuntu1.2 deb +libgomp1 12.3.0-1ubuntu1~22.04 deb +libgpg-error0 1.43-3 deb +libgraphite2-3 1.3.14-1build2 deb +libgs9 9.55.0~dfsg1-0ubuntu5.4 deb +libgs9-common 9.55.0~dfsg1-0ubuntu5.4 deb +libgsm1 1.0.19-1 deb +libgssapi-krb5-2 1.19.2-2ubuntu0.2 deb +libgstreamer-plugins-base1.0-0 1.20.1-1ubuntu0.1 deb +libgstreamer1.0-0 1.20.3-0ubuntu1 deb +libharfbuzz0b 2.7.4-1ubuntu3.1 deb +libhash-merge-simple-perl 0.051-2.1 deb +libhogweed6 3.7.3-1build2 deb +libice6 2:1.0.10-1build2 deb +libicu70 70.1-2 deb +libid3tag0 0.15.1b-14 deb +libidn12 1.38-4ubuntu1 deb +libidn2-0 2.3.2-2build1 deb +libiec61883-0 1.2.0-4build3 deb +libigdgmm12 22.1.2+ds1-1 deb +libijs-0.35 0.35-15build2 deb +libimlib2 1.7.4-1build1 deb +libip4tc2 1.8.7-1ubuntu5.1 deb +libip6tc2 1.8.7-1ubuntu5.1 deb +libisl23 0.24-2build1 deb +libjack-jackd2-0 1.9.20~dfsg-1 deb +libjbig0 2.1-3.1ubuntu0.22.04.1 deb +libjbig2dec0 0.19-3build2 deb +libjpeg-turbo8 2.1.2-0ubuntu1 deb +libjpeg8 8c-2ubuntu10 deb +libjq1 1.6-2.1ubuntu3 deb +libjson-c5 0.15-3~ubuntu1.22.04.2 deb +libjson-glib-1.0-0 1.6.6-1build1 deb +libjson-glib-1.0-common 1.6.6-1build1 deb +libk5crypto3 1.19.2-2ubuntu0.2 deb +libkeyutils1 1.6.1-2ubuntu3 deb +libkmod2 29-1ubuntu1 deb +libkrb5-3 1.19.2-2ubuntu0.2 deb +libkrb5support0 1.19.2-2ubuntu0.2 deb +libksba8 1.6.0-2ubuntu0.2 deb +liblapack3 3.10.0-2ubuntu1 deb +liblcms2-2 2.12~rc1-2build2 deb +libldap-2.5-0 2.5.16+dfsg-0ubuntu0.22.04.1 deb +libldap-common 2.5.16+dfsg-0ubuntu0.22.04.1 deb +liblilv-0-0 0.24.12-2 deb +liblist-moreutils-perl 0.430-2 deb +liblist-moreutils-xs-perl 0.430-2build2 deb +libllvm15 1:15.0.7-0ubuntu0.22.04.3 deb +liblocale-gettext-perl 1.07-4build3 deb +libltdl7 2.4.6-15build2 deb +liblz4-1 1.9.3-2build2 deb +liblzma5 5.2.5-2ubuntu1 deb +libmagic-mgc 1:5.41-3ubuntu0.1 deb +libmagic1 1:5.41-3ubuntu0.1 deb +libmaxminddb0 1.5.2-1build2 deb +libmd0 1.0.4-1build1 deb +libmfx1 22.3.0-1 deb +libmnl0 1.0.4-3build2 deb +libmodule-implementation-perl 0.09-1.1 deb +libmodule-runtime-perl 0.016-1 deb +libmount-dev 2.37.2-4ubuntu3 deb +libmount1 2.37.2-4ubuntu3 deb +libmp3lame0 3.100-3build2 deb +libmpc3 1.2.1-2build1 deb +libmpdec3 2.5.1-2build2 deb +libmpfr6 4.1.0-3build3 deb +libmpg123-0 1.29.3-1build1 deb +libmro-compat-perl 0.15-1 deb +libmysofa1 1.2.1~dfsg0-1 deb +libnamespace-autoclean-perl 0.29-1 deb +libnamespace-clean-perl 0.27-1 deb +libncurses6 6.3-2ubuntu0.1 deb +libncursesw6 6.3-2ubuntu0.1 deb +libnetfilter-conntrack3 1.0.9-1 deb +libnettle8 3.7.3-1build2 deb +libnfnetlink0 1.0.1-3build3 deb +libnftnl11 1.2.1-1build1 deb +libnghttp2-14 1.43.0-1build3 deb +libnginx-mod-http-geoip2 1.18.0-6ubuntu14.4 deb +libnginx-mod-http-image-filter 1.18.0-6ubuntu14.4 deb +libnginx-mod-http-xslt-filter 1.18.0-6ubuntu14.4 deb +libnginx-mod-mail 1.18.0-6ubuntu14.4 deb +libnginx-mod-stream 1.18.0-6ubuntu14.4 deb +libnginx-mod-stream-geoip2 1.18.0-6ubuntu14.4 deb +libnorm1 1.5.9+dfsg-2 deb +libnpmaccess 7.0.2 npm +libnpmdiff 5.0.17 npm +libnpmexec 5.0.17 npm +libnpmfund 4.0.17 npm +libnpmhook 9.0.3 npm +libnpmorg 5.0.4 npm +libnpmpack 5.0.17 npm +libnpmpublish 7.2.0 npm +libnpmsearch 6.0.2 npm +libnpmteam 5.0.3 npm +libnpmversion 4.0.2 npm +libnpth0 1.6-3build2 deb +libnsl-dev 1.3.0-2build2 deb +libnsl2 1.3.0-2build2 deb +libnspr4 2:4.32-3build1 deb +libnss3 2:3.68.2-0ubuntu1.2 deb +libnuma1 2.0.14-3ubuntu2 deb +libobrender32v5 3.6.1-10 deb +libobt2v5 3.6.1-10 deb +libogg0 1.3.5-0ubuntu3 deb +libonig5 6.9.7.1-2build1 deb +libopenal-data 1:1.19.1-2build3 deb +libopenal1 1:1.19.1-2build3 deb +libopengl0 1.4.0-1 deb +libopenjp2-7 2.4.0-6 deb +libopenmpt0 0.6.1-1 deb +libopus0 1.3.1-0.1build2 deb +liborc-0.4-0 1:0.4.32-2 deb +libp11-kit0 0.24.0-6build1 deb +libpackage-stash-perl 0.39-1 deb +libpackagekit-glib2-18 1.2.5-2ubuntu2 deb +libpam-modules 1.4.0-11ubuntu2.3 deb +libpam-modules-bin 1.4.0-11ubuntu2.3 deb +libpam-runtime 1.4.0-11ubuntu2.3 deb +libpam-systemd 249.11-0ubuntu3.10 deb +libpam0g 1.4.0-11ubuntu2.3 deb +libpango-1.0-0 1.50.6+ds-2ubuntu1 deb +libpangocairo-1.0-0 1.50.6+ds-2ubuntu1 deb +libpangoft2-1.0-0 1.50.6+ds-2ubuntu1 deb +libpangoxft-1.0-0 1.50.6+ds-2ubuntu1 deb +libpaper-utils 1.1.28build2 deb +libpaper1 1.1.28build2 deb +libparams-classify-perl 0.015-1build5 deb +libparams-util-perl 1.102-1build3 deb +libparams-validationcompiler-perl 0.30-1 deb +libpci3 1:3.7.0-6 deb +libpciaccess0 0.16-3 deb +libpcre16-3 2:8.39-13ubuntu0.22.04.1 deb +libpcre2-16-0 10.39-3ubuntu0.1 deb +libpcre2-32-0 10.39-3ubuntu0.1 deb +libpcre2-8-0 10.39-3ubuntu0.1 deb +libpcre2-dev 10.39-3ubuntu0.1 deb +libpcre2-posix3 10.39-3ubuntu0.1 deb +libpcre3 2:8.39-13ubuntu0.22.04.1 deb +libpcre3-dev 2:8.39-13ubuntu0.22.04.1 deb +libpcre32-3 2:8.39-13ubuntu0.22.04.1 deb +libpcrecpp0v5 2:8.39-13ubuntu0.22.04.1 deb +libperl5.34 5.34.0-3ubuntu1.2 deb +libpgm-5.3-0 5.3.128~dfsg-2 deb +libpipeline1 1.5.5-1 deb +libpixman-1-0 0.40.0-1ubuntu0.22.04.1 deb +libpng16-16 1.6.37-3build5 deb +libpocketsphinx3 0.8.0+real5prealpha+1-14ubuntu1 deb +libpolkit-agent-1-0 0.105-33 deb +libpolkit-gobject-1-0 0.105-33 deb +libpoppler-cpp0v5 22.02.0-2ubuntu0.2 deb +libpoppler118 22.02.0-2ubuntu0.2 deb +libportaudio2 19.6.0-1.1 deb +libpostproc55 7:4.4.2-0ubuntu0.22.04.1 deb +libprocps8 2:3.3.17-6ubuntu2 deb +libproxy1v5 0.4.17-2 deb +libpsl5 0.21.0-1.2build2 deb +libpthread-stubs0-dev 0.4-1build2 deb +libpulse0 1:15.99.1+dfsg1-1ubuntu2.1 deb +libpulsedsp 1:15.99.1+dfsg1-1ubuntu2.1 deb +libpython3-stdlib 3.10.6-1~22.04 deb +libpython3.10-minimal 3.10.12-1~22.04.2 deb +libpython3.10-stdlib 3.10.12-1~22.04.2 deb +libqpdf28 10.6.3-1 deb +libquadmath0 12.3.0-1ubuntu1~22.04 deb +librabbitmq4 0.10.0-1ubuntu2 deb +libraw1394-11 2.1.2-2build2 deb +libreadline8 8.1.2-1 deb +librole-tiny-perl 2.002004-1 deb +librsvg2-2 2.52.5+dfsg-3ubuntu0.2 deb +librtmp1 2.4+20151223.gitfa8646d.1-2build4 deb +librubberband2 2.0.0-2 deb +libsamplerate0 0.2.2-1build1 deb +libsasl2-2 2.1.27+dfsg2-3ubuntu1.2 deb +libsasl2-modules 2.1.27+dfsg2-3ubuntu1.2 deb +libsasl2-modules-db 2.1.27+dfsg2-3ubuntu1.2 deb +libscalar-list-utils-perl 1:1.61-1 deb +libsdl2-2.0-0 2.0.20+dfsg-2ubuntu1.22.04.1 deb +libseccomp2 2.5.3-2ubuntu2 deb +libselinux1 3.3-1build2 deb +libselinux1-dev 3.3-1build2 deb +libsemanage-common 3.3-1build2 deb +libsemanage2 3.3-1build2 deb +libsensors-config 1:3.6.0-7ubuntu1 deb +libsensors5 1:3.6.0-7ubuntu1 deb +libsepol-dev 3.3-1build1 deb +libsepol2 3.3-1build1 deb +libserd-0-0 0.30.10-2 deb +libshine3 3.1.1-2 deb +libslang2 2.3.2-5build4 deb +libsm6 2:1.2.3-1build2 deb +libsmartcols1 2.37.2-4ubuntu3 deb +libsnapd-glib1 1.60-0ubuntu1 deb +libsnappy1v5 1.1.8-1build3 deb +libsndfile1 1.0.31-2build1 deb +libsndio7.0 1.8.1-1.1 deb +libsodium23 1.0.18-1build2 deb +libsord-0-0 0.16.8-2 deb +libsoup2.4-1 2.74.2-3 deb +libsoup2.4-common 2.74.2-3 deb +libsoxr0 0.1.3-4build2 deb +libspecio-perl 0.47-1 deb +libspeex1 1.2~rc1.2-1.1ubuntu3 deb +libspeexdsp1 1.2~rc1.2-1.1ubuntu3 deb +libsphinxbase3 0.8+5prealpha+1-13build1 deb +libsqlite3-0 3.37.2-2ubuntu0.1 deb +libsratom-0-0 0.6.8-1 deb +libsrt1.4-gnutls 1.4.4-4 deb +libss2 1.46.5-2ubuntu1.1 deb +libssh-4 0.9.6-2ubuntu0.22.04.1 deb +libssh-gcrypt-4 0.9.6-2ubuntu0.22.04.1 deb +libssl3 3.0.2-0ubuntu1.10 deb +libstartup-notification0 0.12-6build2 deb +libstdc++6 12.3.0-1ubuntu1~22.04 deb +libstemmer0d 2.2.0-1build1 deb +libsub-exporter-perl 0.988-1 deb +libsub-exporter-progressive-perl 0.001013-1 deb +libsub-identify-perl 0.14-1build5 deb +libsub-install-perl 0.928-1.1 deb +libsub-name-perl 0.26-1build3 deb +libsub-quote-perl 2.006006-1 deb +libswitch-perl 2.17-2.1 deb +libswresample3 7:4.4.2-0ubuntu0.22.04.1 deb +libswscale5 7:4.4.2-0ubuntu0.22.04.1 deb +libsystemd0 249.11-0ubuntu3.10 deb +libtasn1-6 4.18.0-4build1 deb +libtdb1 1.4.5-2build1 deb +libthai-data 0.1.29-1build1 deb +libthai0 0.1.29-1build1 deb +libtheora0 1.1.1+dfsg.1-15ubuntu4 deb +libtiff5 4.3.0-6ubuntu0.5 deb +libtinfo6 6.3-2ubuntu0.1 deb +libtirpc-common 1.3.2-2ubuntu0.1 deb +libtirpc-dev 1.3.2-2ubuntu0.1 deb +libtirpc3 1.3.2-2ubuntu0.1 deb +libtry-tiny-perl 0.31-1 deb +libtwolame0 0.4.0-2build2 deb +libuchardet0 0.0.7-1build2 deb +libudev1 249.11-0ubuntu3.10 deb +libudfread0 1.1.2-1 deb +libunistring2 1.0-1 deb +libunwind8 1.3.2-2build2.1 deb +libusb-1.0-0 2:1.0.25-1ubuntu2 deb +libutempter0 1.2.1-2build2 deb +libuuid1 2.37.2-4ubuntu3 deb +libva-drm2 2.14.0-1 deb +libva-x11-2 2.14.0-1 deb +libva2 2.14.0-1 deb +libvariable-magic-perl 0.62-1build5 deb +libvdpau1 1.4-3build2 deb +libvidstab1.1 1.1.0-2 deb +libvorbis0a 1.3.7-1build2 deb +libvorbisenc2 1.3.7-1build2 deb +libvorbisfile3 1.3.7-1build2 deb +libvpx7 1.11.0-2ubuntu2.2 deb +libwayland-client0 1.20.0-1ubuntu0.1 deb +libwayland-cursor0 1.20.0-1ubuntu0.1 deb +libwayland-egl1 1.20.0-1ubuntu0.1 deb +libwayland-server0 1.20.0-1ubuntu0.1 deb +libwebp7 1.2.2-2ubuntu0.22.04.2 deb +libwebpmux3 1.2.2-2ubuntu0.22.04.2 deb +libwebrtc-audio-processing1 0.3.1-0ubuntu5 deb +libwrap0 7.6.q-31build2 deb +libx11-6 2:1.7.5-1ubuntu0.3 deb +libx11-data 2:1.7.5-1ubuntu0.3 deb +libx11-dev 2:1.7.5-1ubuntu0.3 deb +libx11-xcb1 2:1.7.5-1ubuntu0.3 deb +libx264-163 2:0.163.3060+git5db6aa6-2build1 deb +libx265-199 3.5-2 deb +libxau-dev 1:1.0.9-1build5 deb +libxau6 1:1.0.9-1build5 deb +libxaw7 2:1.0.14-1 deb +libxcb-dri2-0 1.14-3ubuntu3 deb +libxcb-dri3-0 1.14-3ubuntu3 deb +libxcb-glx0 1.14-3ubuntu3 deb +libxcb-present0 1.14-3ubuntu3 deb +libxcb-randr0 1.14-3ubuntu3 deb +libxcb-render0 1.14-3ubuntu3 deb +libxcb-shape0 1.14-3ubuntu3 deb +libxcb-shm0 1.14-3ubuntu3 deb +libxcb-sync1 1.14-3ubuntu3 deb +libxcb-util1 0.4.0-1build2 deb +libxcb-xfixes0 1.14-3ubuntu3 deb +libxcb1 1.14-3ubuntu3 deb +libxcb1-dev 1.14-3ubuntu3 deb +libxcomposite1 1:0.4.5-1build2 deb +libxcursor1 1:1.2.0-2build4 deb +libxcvt0 0.1.1-3 deb +libxdamage1 1:1.1.5-2build2 deb +libxdmcp-dev 1:1.1.3-0ubuntu5 deb +libxdmcp6 1:1.1.3-0ubuntu5 deb +libxext-dev 2:1.3.4-1build1 deb +libxext6 2:1.3.4-1build1 deb +libxfixes-dev 1:6.0.0-1 deb +libxfixes3 1:6.0.0-1 deb +libxfont2 1:2.0.5-1build1 deb +libxft2 2.3.4-1 deb +libxi-dev 2:1.8-1build1 deb +libxi6 2:1.8-1build1 deb +libxinerama1 2:1.1.4-3 deb +libxkbcommon0 1.4.0-1 deb +libxkbfile1 1:1.1.0-1build3 deb +libxml2 2.9.13+dfsg-1ubuntu0.3 deb +libxmlb2 0.3.6-2build1 deb +libxmu6 2:1.1.3-3 deb +libxmuu1 2:1.1.3-3 deb +libxpm4 1:3.5.12-1ubuntu0.22.04.2 deb +libxrandr2 2:1.5.2-1build1 deb +libxrender1 1:0.9.10-1build4 deb +libxshmfence1 1.3-1build4 deb +libxslt1.1 1.1.34-4ubuntu0.22.04.1 deb +libxss1 1:1.2.3-1build2 deb +libxstring-perl 0.005-1build2 deb +libxt6 1:1.2.1-1 deb +libxtables12 1.8.7-1ubuntu5.1 deb +libxtst-dev 2:1.2.3-1build4 deb +libxtst6 2:1.2.3-1build4 deb +libxv1 2:1.0.11-1build2 deb +libxvidcore4 2:1.3.7-1 deb +libxvmc1 2:1.0.12-2build2 deb +libxxf86dga1 2:1.1.5-0ubuntu3 deb +libxxf86vm1 1:1.1.4-1build3 deb +libxxhash0 0.8.1-1 deb +libyaml-0-2 0.2.2-1build2 deb +libyaml-tiny-perl 1.73-1 deb +libzimg2 3.0.3+ds1-1 deb +libzmq5 4.3.4-2 deb +libzstd1 1.4.8+dfsg-3build1 deb +libzvbi-common 0.2.35-19 deb +libzvbi0 0.2.35-19 deb +linux-libc-dev 5.15.0-86.96 deb +locales 2.35-0ubuntu3.4 deb +login 1:4.8.1-2ubuntu2.1 deb +logsave 1.46.5-2ubuntu1.1 deb +lru-cache 6.0.0 npm +lru-cache 7.18.3 npm +lru-cache 9.1.1 npm +lsb-base 11.1.0ubuntu4 deb +lsb-release 11.1.0ubuntu4 deb +make-fetch-happen 10.2.1 npm +make-fetch-happen 11.1.1 npm +man-db 2.10.2-1 deb +manpages 5.10-1ubuntu1 deb +manpages-dev 5.10-1ubuntu1 deb +mawk 1.3.4.20200120-3 deb +media-typer 0.3.0 npm +media-types 7.0.0 deb +merge-descriptors 1.0.1 npm +mesa-va-drivers 23.0.4-0ubuntu1~22.04.1 deb +methods 1.1.2 npm +mime 1.6.0 npm +mime-db 1.52.0 npm +mime-types 2.1.35 npm +minimatch 3.1.2 npm +minimatch 5.1.6 npm +minimatch 9.0.0 npm +minipass 3.3.6 npm +minipass 5.0.0 npm +minipass-collect 1.0.2 npm +minipass-fetch 2.1.2 npm +minipass-fetch 3.0.3 npm +minipass-flush 1.0.5 npm +minipass-json-stream 1.0.1 npm +minipass-pipeline 1.2.4 npm +minipass-sized 1.0.3 npm +minizlib 2.1.2 npm +mkdirp 1.0.4 npm +more-itertools 8.10.0 python +mount 2.37.2-4ubuntu3 deb +ms 2.0.0 npm +ms 2.1.2 npm +ms 2.1.3 npm +mute-stream 1.0.0 npm +nan 2.18.0 npm +ncurses-base 6.3-2ubuntu0.1 deb +ncurses-bin 6.3-2ubuntu0.1 deb +negotiator 0.6.3 npm +netbase 6.3 deb +netcat 1.218-4ubuntu1 deb +netcat-openbsd 1.218-4ubuntu1 deb +nginx 1.18.0-6ubuntu14.4 deb +nginx-common 1.18.0-6ubuntu14.4 deb +nginx-core 1.18.0-6ubuntu14.4 deb +node-gyp 9.3.1 npm +nodejs 18.17.1-deb-1nodesource1 deb +nopt 6.0.0 npm +nopt 7.1.0 npm +normalize-package-data 5.0.0 npm +npm 9.6.7 npm +npm-audit-report 4.0.0 npm +npm-bundled 3.0.0 npm +npm-install-checks 6.1.1 npm +npm-normalize-package-bin 3.0.1 npm +npm-package-arg 10.1.0 npm +npm-packlist 7.0.4 npm +npm-pick-manifest 8.0.1 npm +npm-profile 7.0.1 npm +npm-registry-fetch 14.0.5 npm +npm-user-validate 2.0.0 npm +npmlog 6.0.2 npm +npmlog 7.0.1 npm +oauthlib 3.2.0 python +object-assign 4.1.1 npm +object-inspect 1.12.3 npm +ocl-icd-libopencl1 2.2.14-3 deb +on-finished 2.4.1 npm +once 1.4.0 npm +openbox 3.6.1-10 deb +openssh-client 1:8.9p1-3ubuntu0.4 deb +openssl 3.0.2-0ubuntu1.10 deb +p-map 4.0.0 npm +packagekit 1.2.5-2ubuntu2 deb +pacote 15.1.3 npm +parse-conflict-json 3.0.1 npm +parseurl 1.3.3 npm +passwd 1:4.8.1-2ubuntu2.1 deb +path-is-absolute 1.0.1 npm +path-key 3.1.1 npm +path-scurry 1.9.1 npm +path-to-regexp 0.1.7 npm +pci.ids 0.0~2022.01.22-1 deb +pciutils 1:3.7.0-6 deb +perl 5.34.0-3ubuntu1.2 deb +perl-base 5.34.0-3ubuntu1.2 deb +perl-modules-5.34 5.34.0-3ubuntu1.2 deb +pinentry-curses 1.1.1-1build2 deb +pkexec 0.105-33 deb +pkg-config 0.29.2-1ubuntu3 deb +policykit-1 0.105-33 deb +polkitd 0.105-33 deb +poppler-data 0.4.11-1 deb +poppler-utils 22.02.0-2ubuntu0.2 deb +postcss-selector-parser 6.0.13 npm +printer-driver-cups-pdf 3.0.1-14 deb +proc-log 3.0.0 npm +process 0.11.10 npm +procps 2:3.3.17-6ubuntu2 deb +promise-all-reject-late 1.0.1 npm +promise-call-limit 1.0.2 npm +promise-inflight 1.0.1 npm +promise-retry 2.0.1 npm +promzard 1.0.0 npm +proxy-addr 2.0.7 npm +publicsuffix 20211207.1025-1 deb +pulseaudio 1:15.99.1+dfsg1-1ubuntu2.1 deb +pulseaudio-utils 1:15.99.1+dfsg1-1ubuntu2.1 deb +pulseaudio2 0.5.5 npm +pyparsing 2.4.7 python +python-apt 2.4.0+ubuntu2 python +python-apt-common 2.4.0ubuntu2 deb +python3 3.10.6-1~22.04 deb +python3-apt 2.4.0ubuntu2 deb +python3-blinker 1.4+dfsg1-0.4 deb +python3-cffi-backend 1.15.0-1build2 deb +python3-cryptography 3.4.8-1ubuntu2 deb +python3-dbus 1.2.18-3build1 deb +python3-distro 1.7.0-1 deb +python3-distutils 3.10.8-1~22.04 deb +python3-gi 3.42.1-0ubuntu1 deb +python3-httplib2 0.20.2-2 deb +python3-importlib-metadata 4.6.4-1 deb +python3-jeepney 0.7.1-3 deb +python3-jwt 2.3.0-1ubuntu0.2 deb +python3-keyring 23.5.0-1 deb +python3-launchpadlib 1.10.16-1 deb +python3-lazr.restfulclient 0.14.4-1 deb +python3-lazr.uri 1.0.6-2 deb +python3-lib2to3 3.10.8-1~22.04 deb +python3-minimal 3.10.6-1~22.04 deb +python3-more-itertools 8.10.0-2 deb +python3-oauthlib 3.2.0-1ubuntu0.1 deb +python3-pkg-resources 59.6.0-1.2ubuntu0.22.04.1 deb +python3-pyparsing 2.4.7-1 deb +python3-secretstorage 3.3.1-1 deb +python3-six 1.16.0-3ubuntu1 deb +python3-software-properties 0.99.22.7 deb +python3-wadllib 1.3.6-1 deb +python3-xdg 0.27-2 deb +python3-zipp 1.0.0-3 deb +python3.10 3.10.12-1~22.04.2 deb +python3.10-minimal 3.10.12-1~22.04.2 deb +pyxdg 0.27 python +qrcode-terminal 0.12.0 npm +qs 6.11.0 npm +range-parser 1.2.1 npm +raw-body 2.5.1 npm +read 2.1.0 npm +read-cmd-shim 4.0.0 npm +read-package-json 6.0.3 npm +read-package-json-fast 3.0.2 npm +readable-stream 3.6.2 npm +readable-stream 4.4.0 npm +readline-common 8.1.2-1 deb +resenje.org/singleflight v0.3.0 go-module +retry 0.12.0 npm +rimraf 3.0.2 npm +rpcsvc-proto 1.4.2-0ubuntu6 deb +safe-buffer 5.1.2 npm +safe-buffer 5.2.1 npm +safer-buffer 2.1.2 npm +sed 4.8-1ubuntu2 deb +semver 7.5.1 npm +send 0.18.0 npm +sensible-utils 0.0.17 deb +serve-static 1.15.0 npm +session-migration 0.3.6 deb +set-blocking 2.0.0 npm +setprototypeof 1.2.0 npm +shared-mime-info 2.1-2 deb +shebang-command 2.0.0 npm +shebang-regex 3.0.0 npm +side-channel 1.0.4 npm +signal-exit 3.0.7 npm +signal-exit 4.0.2 npm +sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 go-module +sigs.k8s.io/structured-merge-diff/v4 v4.1.2 go-module +sigs.k8s.io/structured-merge-diff/v4 v4.2.3 go-module +sigs.k8s.io/yaml v1.2.0 go-module +sigs.k8s.io/yaml v1.3.0 go-module +sigstore 1.5.2 npm +six 1.16.0 python +smart-buffer 4.2.0 npm +socket.io 4.7.2 npm +socket.io-adapter 2.5.2 npm +socket.io-parser 4.2.4 npm +socks 2.7.1 npm +socks-proxy-agent 7.0.0 npm +software-properties-common 0.99.22.7 deb +spdx-correct 3.2.0 npm +spdx-exceptions 2.3.0 npm +spdx-expression-parse 3.0.1 npm +spdx-license-ids 3.0.13 npm +ssl-cert 1.1.2 deb +ssri 10.0.4 npm +ssri 9.0.1 npm +statuses 2.0.1 npm +string-width 4.2.3 npm +string-width 5.1.2 npm +string_decoder 1.1.1 npm +strip-ansi 6.0.1 npm +strip-ansi 7.0.1 npm +sudo 1.9.9-1ubuntu2.4 deb +supports-color 7.2.0 npm +systemd 249.11-0ubuntu3.10 deb +systemd-sysv 249.11-0ubuntu3.10 deb +sysvinit-utils 3.01-1ubuntu1 deb +tar 1.34+dfsg-1ubuntu0.1.22.04.1 deb +tar 6.1.14 npm +text-table 0.2.0 npm +tiny-relative-date 1.3.0 npm +toidentifier 1.0.1 npm +treeverse 3.0.0 npm +tuf-js 1.1.6 npm +type-is 1.6.18 npm +tzdata 2023c-0ubuntu0.22.04.2 deb +ubuntu-keyring 2021.03.26 deb +ucf 3.0043 deb +udev 249.11-0ubuntu3.10 deb +unique-filename 2.0.1 npm +unique-filename 3.0.0 npm +unique-slug 3.0.0 npm +unique-slug 4.0.0 npm +unpipe 1.0.0 npm +usrmerge 25ubuntu2 deb +util-deprecate 1.0.2 npm +util-linux 2.37.2-4ubuntu3 deb +utils-merge 1.0.1 npm +uuid-dev 2.37.2-4ubuntu3 deb +validate-npm-package-license 3.0.4 npm +validate-npm-package-name 5.0.0 npm +vary 1.1.2 npm +wadllib 1.3.6 python +walk-up-path 3.0.1 npm +wcwidth 1.0.1 npm +which 2.0.2 npm +which 3.0.1 npm +wide-align 1.1.5 npm +wrap-ansi 7.0.0 npm +wrap-ansi 8.1.0 npm +wrappy 1.0.2 npm +write-file-atomic 5.0.1 npm +ws 8.11.0 npm +x11-apps 7.7+8build2 deb +x11-common 1:7.7+23ubuntu2 deb +x11-session-utils 7.7+4build2 deb +x11-utils 7.7+5build2 deb +x11-xkb-utils 7.7+5build4 deb +x11-xserver-utils 7.7+9build1 deb +x11proto-dev 2021.5-1 deb +xauth 1:1.1-1build2 deb +xbitmaps 1.1.1-2.1ubuntu1 deb +xdg 5 python +xdg-utils 1.1.3-4.1ubuntu3~22.04.1 deb +xfonts-base 1:1.0.5 deb +xfonts-encodings 1:1.0.5-0ubuntu2 deb +xfonts-utils 1:7.7+6build2 deb +xkb-data 2.33-1 deb +xorg-sgml-doctools 1:1.11-1.1 deb +xserver-common 2:21.1.4-2ubuntu1.7~22.04.1 deb +xserver-xorg-core 2:21.1.4-2ubuntu1.7~22.04.1 deb +xserver-xorg-video-amdgpu 22.0.0-1ubuntu0.2 deb +xserver-xorg-video-ati 1:19.1.0-2ubuntu1 deb +xserver-xorg-video-intel 2:2.99.917+git20210115-1 deb +xserver-xorg-video-nouveau 1:1.0.17-2build1 deb +xserver-xorg-video-qxl 0.1.5+git20200331-3 deb +xserver-xorg-video-radeon 1:19.1.0-2ubuntu1 deb +xterm 372-1ubuntu1 deb +xtrans-dev 1.4.0-1 deb +xutils 1:7.7+23ubuntu2 deb +xz-utils 5.2.5-2ubuntu1 deb +yallist 4.0.0 npm +zipp 1.0.0 python +zlib1g 1:1.2.11.dfsg-2ubuntu9.2 deb +zlib1g-dev 1:1.2.11.dfsg-2ubuntu9.2 deb diff --git a/readme-vars.yml b/readme-vars.yml index f0051d0..eaaecd1 100644 --- a/readme-vars.yml +++ b/readme-vars.yml @@ -6,112 +6,71 @@ project_url: "https://www.audacityteam.org/" project_logo: "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/audacity-logo.png" project_blurb: "[Audacity]({{ project_url }}) is an easy-to-use, multi-track audio editor and recorder. Developed by a group of volunteers as open source." project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}" -project_categories: "Audio Processing" project_blurb_optional_extras_enabled: false + # supported architectures available_architectures: - - {arch: "{{ arch_x86_64 }}", tag: "latest"} + - { arch: "{{ arch_x86_64 }}", tag: "latest"} + # development version development_versions: false + # container parameters common_param_env_vars_enabled: true param_container_name: "{{ project_name }}" +param_usage_include_env: true +param_env_vars: + - { env_var: "TZ", env_value: "Europe/London", desc: "Specify a timezone to use EG Europe/London." } param_usage_include_vols: true param_volumes: - - {vol_path: "/config", vol_host_path: "/path/to/{{ project_name }}/config", desc: "Users home directory in the container, stores program settings and images"} + - { vol_path: "/config", vol_host_path: "/path/to/config", desc: "Users home directory in the container, stores program settings and images" } param_usage_include_ports: true param_ports: - - {external_port: "3000", internal_port: "3000", port_desc: "Audacity desktop gui HTTP, must be proxied."} - - {external_port: "3001", internal_port: "3001", port_desc: "Audacity desktop gui HTTPS."} -custom_params: - - {name: "shm-size", name_compose: "shm_size", value: "1gb", desc: "Recommended for all desktop images."} -# Selkies blurb settings -selkies_blurb: true -show_nvidia: true + - { external_port: "3000", internal_port: "3000", port_desc: "Audacity desktop gui." } + - { external_port: "3001", internal_port: "3001", port_desc: "Audacity desktop gui HTTPS." } + # application setup block app_setup_block_enabled: true app_setup_block: | The application can be accessed at: + * http://yourhost:3000/ * https://yourhost:3001/ -# init diagram -init_diagram: | - "audacity:latest": { - docker-mods - base { - fix-attr +\nlegacy cont-init - } - docker-mods -> base - legacy-services - custom services - init-services -> legacy-services - init-services -> custom services - custom services -> legacy-services - legacy-services -> ci-service-check - init-migrations -> init-adduser - init-os-end -> init-config - init-selkies-end -> init-config - init-config -> init-config-end - init-crontab-config -> init-config-end - init-config -> init-crontab-config - init-mods-end -> init-custom-files - init-adduser -> init-device-perms - base -> init-envfile - base -> init-migrations - init-config-end -> init-mods - init-mods-package-install -> init-mods-end - init-mods -> init-mods-package-install - init-selkies -> init-nginx - init-adduser -> init-os-end - init-device-perms -> init-os-end - init-envfile -> init-os-end - init-os-end -> init-selkies - init-nginx -> init-selkies-config - init-video -> init-selkies-end - init-custom-files -> init-services - init-selkies-config -> init-video - init-services -> svc-cron - svc-cron -> legacy-services - init-services -> svc-dbus - svc-xorg -> svc-dbus - svc-dbus -> legacy-services - init-services -> svc-de - svc-nginx -> svc-de - svc-selkies -> svc-de - svc-xorg -> svc-de - svc-de -> legacy-services - init-services -> svc-docker - svc-docker -> legacy-services - init-services -> svc-nginx - svc-nginx -> legacy-services - init-services -> svc-pulseaudio - svc-pulseaudio -> legacy-services - init-services -> svc-selkies - svc-nginx -> svc-selkies - svc-pulseaudio -> svc-selkies - svc-xorg -> svc-selkies - svc-selkies -> legacy-services - init-services -> svc-watchdog - svc-watchdog -> legacy-services - init-services -> svc-xorg - svc-xorg -> legacy-services - init-services -> svc-xsettingsd - svc-nginx -> svc-xsettingsd - svc-xorg -> svc-xsettingsd - svc-xsettingsd -> legacy-services - } - Base Images: { - "baseimage-selkies:ubuntunoble" <- "baseimage-ubuntu:noble" - } - "audacity:latest" <- Base Images + + ### Options in all KasmVNC based GUI containers + + This container is based on [Docker Baseimage KasmVNC](https://github.com/linuxserver/docker-baseimage-kasmvnc) which means there are additional environment variables and run configurations to enable or disable specific functionality. + + #### Optional environment variables + + | Variable | Description | + | :----: | --- | + | CUSTOM_PORT | Internal port the container listens on for http if it needs to be swapped from the default 3000. | + | CUSTOM_HTTPS_PORT | Internal port the container listens on for https if it needs to be swapped from the default 3001. | + | CUSTOM_USER | HTTP Basic auth username, abc is default. | + | PASSWORD | HTTP Basic auth password, abc is default. If unset there will be no auth | + | SUBFOLDER | Subfolder for the application if running a subfolder reverse proxy, need both slashes IE `/subfolder/` | + | TITLE | The page title displayed on the web browser, default "KasmVNC Client". | + | FM_HOME | This is the home directory (landing) for the file manager, default "/config". | + | START_DOCKER | If set to false a container with privilege will not automatically start the DinD Docker setup. | + | DRINODE | If mounting in /dev/dri for [DRI3 GPU Acceleration](https://www.kasmweb.com/kasmvnc/docs/master/gpu_acceleration.html) allows you to specify the device to use IE `/dev/dri/renderD128` | + + #### Optional run configurations + + | Variable | Description | + | :----: | --- | + | `--privileged` | Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE `-v /home/user/docker-data:/var/lib/docker`. | + | `-v /var/run/docker.sock:/var/run/docker.sock` | Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. | + | `--device /dev/dri:/dev/dri` | Mount a GPU into the container, this can be used in conjunction with the `DRINODE` environment variable to leverage a host video card for GPU accelerated appplications. Only **Open Source** drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau) | + + ### Lossless mode + + This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to "Lossless", more information [here](https://www.kasmweb.com/docs/latest/how_to/lossless.html#technical-background). In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined [here](https://github.com/linuxserver/docker-baseimage-kasmvnc#lossless). + # changelog changelogs: - - {date: "12.07.25:", desc: "Rebase to Selkies, HTTPS IS NOW REQUIRED."} - - {date: "31.10.24:", desc: "Fix artifact name."} - - {date: "19.08.24:", desc: "Rebase to noble."} - - {date: "10.02.24:", desc: "Update Readme with new env vars, ingest proper PWA icon, and pre-extract appimage."} - - {date: "05.05.23:", desc: "Start Audacity in full screen."} - - {date: "18.03.23:", desc: "Rebase to KasmVNC base image."} - - {date: "13.12.22:", desc: "Rebase to Jammy."} - - {date: "14.09.21:", desc: "Use the official appimage, switch to single arch (x86_64). Armhf and aarch64 users can remain on version 3.0.2 but there won't be further updates."} - - {date: "07.04.21:", desc: "Initial release."} + - { date: "05.05.23:", desc: "Start Audacity in full screen." } + - { date: "18.03.23:", desc: "Rebase to KasmVNC base image." } + - { date: "13.12.22:", desc: "Rebase to Jammy." } + - { date: "14.09.21:", desc: "Use the official appimage, switch to single arch (x86_64). Armhf and aarch64 users can remain on version 3.0.2 but there won't be further updates." } + - { date: "07.04.21:", desc: "Initial release." } diff --git a/root/defaults/autostart b/root/defaults/autostart index 982bdb9..8d6612c 100644 --- a/root/defaults/autostart +++ b/root/defaults/autostart @@ -1 +1 @@ -/opt/audacity/AppRun +/app/audacity/audacity --appimage-extract-and-run diff --git a/root/defaults/menu.xml b/root/defaults/menu.xml deleted file mode 100644 index 9bd798f..0000000 --- a/root/defaults/menu.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - -/usr/bin/xterm -/opt/audacity/AppRun - -