diff --git a/.editorconfig b/.editorconfig old mode 100755 new mode 100644 diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index fd4f11d..dab7f9e 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://discord.gg/YWrKVTn) +* If you want to discuss changes, you can also bring it up in [#dev-talk](https://discordapp.com/channels/354974912613449730/757585807061155840) in our [Discord server](https://linuxserver.io/discord) ## Common files @@ -105,10 +105,10 @@ docker build \ -t linuxserver/audacity:latest . ``` -The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static` +The ARM variants can be built on x86_64 hardware and vice versa using `lscr.io/linuxserver/qemu-static` ```bash -docker run --rm --privileged multiarch/qemu-user-static:register --reset +docker run --rm --privileged lscr.io/linuxserver/qemu-static --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 452b3b9..face150 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://discord.gg/YWrKVTn + url: https://linuxserver.io/discord 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 100755 new mode 100644 index 1f25845..b812b88 --- 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 linuxserver.io" + Provide a full docker log, output of "docker logs audacity" label: Container logs placeholder: | - Output of `docker logs linuxserver.io` + Output of `docker logs audacity` render: bash validations: required: true diff --git a/.github/ISSUE_TEMPLATE/issue.feature.yml b/.github/ISSUE_TEMPLATE/issue.feature.yml old mode 100755 new mode 100644 diff --git a/.github/workflows/call_issue_pr_tracker.yml b/.github/workflows/call_issue_pr_tracker.yml old mode 100755 new mode 100644 index 2c30784..d07cf12 --- a/.github/workflows/call_issue_pr_tracker.yml +++ b/.github/workflows/call_issue_pr_tracker.yml @@ -8,6 +8,9 @@ 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 100755 new mode 100644 index 2b962ad..22be2ed --- a/.github/workflows/call_issues_cron.yml +++ b/.github/workflows/call_issues_cron.yml @@ -4,6 +4,9 @@ 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 409260b..917bbea 100644 --- a/.github/workflows/external_trigger.yml +++ b/.github/workflows/external_trigger.yml @@ -3,26 +3,42 @@ name: External Trigger Main on: workflow_dispatch: +permissions: + contents: read + jobs: external-trigger-main: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3.1.0 + - uses: actions/checkout@v4.1.1 - name: External Trigger if: github.ref == 'refs/heads/main' + env: + SKIP_EXTERNAL_TRIGGER: ${{ vars.SKIP_EXTERNAL_TRIGGER }} run: | - 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 + 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 exit 0 fi - 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 ****" + 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 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 "**** Can't retrieve external version, exiting ****" + echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY + echo "> Can't retrieve external version, exiting" >> $GITHUB_STEP_SUMMARY 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, @@ -30,20 +46,43 @@ jobs: "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} exit 1 fi - 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 ****" + 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 image="linuxserver/audacity" tag="latest" token=$(curl -sX GET \ "https://ghcr.io/token?scope=repository%3Alinuxserver%2Faudacity%3Apull" \ | jq -r '.token') - digest=$(curl -s \ + 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 \ --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/${tag}" \ - | jq -r '.config.digest') + "https://ghcr.io/v2/${image}/manifests/${multidigest}"); then + digest=$(jq -r '.config.digest' <<< "${digest}"); + fi + fi image_info=$(curl -sL \ --header "Authorization: Bearer ${token}" \ "https://ghcr.io/v2/${image}/blobs/${digest}") @@ -55,45 +94,54 @@ 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 "**** Can't retrieve last pushed version, exiting ****" + echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY + echo "Can't retrieve last pushed version, exiting" >> $GITHUB_STEP_SUMMARY 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} ****" - 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 + 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 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 ****" - echo "New version ${EXT_RELEASE} found; but there already seems to be an active build on Jenkins; exiting" >> $GITHUB_STEP_SUMMARY + echo "New version \`${EXT_RELEASE}\` found; but there already seems to be an active build on Jenkins; exiting" >> $GITHUB_STEP_SUMMARY exit 0 else - 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 }} + 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 fi diff --git a/.github/workflows/external_trigger_scheduler.yml b/.github/workflows/external_trigger_scheduler.yml index 6d36762..ed8ec95 100644 --- a/.github/workflows/external_trigger_scheduler.yml +++ b/.github/workflows/external_trigger_scheduler.yml @@ -5,41 +5,44 @@ on: - cron: '34 * * * *' workflow_dispatch: +permissions: + contents: read + jobs: external-trigger-scheduler: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3.1.0 + - uses: actions/checkout@v4.1.1 with: fetch-depth: '0' - name: External Trigger Scheduler run: | - echo "**** Branches found: ****" - git for-each-ref --format='%(refname:short)' refs/remotes - for br in $(git for-each-ref --format='%(refname:short)' refs/remotes) + 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) do - br=$(echo "$br" | sed 's|origin/||g') - echo "**** Evaluating branch ${br} ****" + if [[ "${br}" == "HEAD" ]]; then + printf "\nSkipping %s.\n" ${br} >> $GITHUB_STEP_SUMMARY + continue + fi + printf "\n## Evaluating \`%s\`\n\n" ${br} >> $GITHUB_STEP_SUMMARY 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 ${br} appears to be live and trigger is not os; checking workflow. ****" + echo "Branch appears to be live and trigger is not os; checking workflow." >> $GITHUB_STEP_SUMMARY if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-audacity/${br}/.github/workflows/external_trigger.yml > /dev/null 2>&1; then - echo "**** Workflow exists. Triggering external trigger workflow for branch ${br} ****." - echo "Triggering external trigger workflow for branch ${br}" >> $GITHUB_STEP_SUMMARY + echo "Triggering external trigger workflow for branch." >> $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 "**** Workflow doesn't exist; skipping trigger. ****" - echo "Skipping branch ${br} due to no external trigger workflow present." >> $GITHUB_STEP_SUMMARY + echo "Skipping branch due to no external trigger workflow present." >> $GITHUB_STEP_SUMMARY fi else - 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 + echo "Skipping branch 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 5d7ce49..753384d 100644 --- a/.github/workflows/greetings.yml +++ b/.github/workflows/greetings.yml @@ -2,8 +2,14 @@ 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 deleted file mode 100644 index 2c79d37..0000000 --- a/.github/workflows/package_trigger.yml +++ /dev/null @@ -1,42 +0,0 @@ -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 3cdd79b..39609c6 100644 --- a/.github/workflows/package_trigger_scheduler.yml +++ b/.github/workflows/package_trigger_scheduler.yml @@ -5,46 +5,99 @@ on: - cron: '49 4 * * 2' workflow_dispatch: +permissions: + contents: read + jobs: package-trigger-scheduler: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3.1.0 + - uses: actions/checkout@v4.1.1 with: fetch-depth: '0' - name: Package Trigger Scheduler + env: + SKIP_PACKAGE_TRIGGER: ${{ vars.SKIP_PACKAGE_TRIGGER }} run: | - echo "**** Branches found: ****" - git for-each-ref --format='%(refname:short)' refs/remotes - for br in $(git for-each-ref --format='%(refname:short)' refs/remotes) + 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) do - 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} " - 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 + 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 "**** Workflow doesn't exist; skipping trigger. ****" - echo "Skipping branch ${br} due to no package trigger workflow present." >> $GITHUB_STEP_SUMMARY + 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 + 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 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 - 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 }} + 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 diff --git a/.github/workflows/permissions.yml b/.github/workflows/permissions.yml old mode 100755 new mode 100644 index 1447bc5..02e1bdb --- a/.github/workflows/permissions.yml +++ b/.github/workflows/permissions.yml @@ -5,6 +5,8 @@ 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 81a6149..5d2440b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ # syntax=docker/dockerfile:1 -FROM ghcr.io/linuxserver/baseimage-kasmvnc:ubuntujammy +FROM ghcr.io/linuxserver/baseimage-selkies:ubuntunoble # set version label ARG BUILD_DATE @@ -13,6 +13,10 @@ 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 \ @@ -26,15 +30,17 @@ 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 && \ - mkdir -p /app/audacity/ && \ + cd /tmp && \ curl -o \ - /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 && \ + /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 && \ ln -s \ /usr/lib/x86_64-linux-gnu/libportaudio.so.2 \ /usr/lib/x86_64-linux-gnu/libportaudio.so && \ - sed -i 's|| \n yes\n \n|' /etc/xdg/openbox/rc.xml && \ + printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \ echo "**** cleanup ****" && \ rm -rf \ /tmp/* \ diff --git a/Jenkinsfile b/Jenkinsfile index 2f6a482..b59ead7 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 { @@ -17,6 +17,8 @@ pipeline { 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' @@ -28,23 +30,49 @@ pipeline { MULTIARCH = 'false' CI = 'true' CI_WEB = 'true' - CI_PORT = '3000' - CI_SSL = 'false' + CI_PORT = '3001' + CI_SSL = 'true' CI_DELAY = '120' - CI_DOCKERENV = 'TZ=US/Pacific' - CI_AUTH = 'user:password' + CI_DOCKERENV = '' + CI_AUTH = '' 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 - containers=$(docker ps -aq) + echo "Pruning builder" + docker builder prune -f --builder container || : + containers=$(docker ps -q) if [[ -n "${containers}" ]]; then - docker stop ${containers} + BUILDX_CONTAINER_ID=$(docker ps -qf 'name=buildx_buildkit') + for container in ${containers}; do + if [[ "${container}" == "${BUILDX_CONTAINER_ID}" ]]; then + echo "skipping buildx container in docker stop" + else + echo "Stopping container ${container}" + docker stop ${container} + fi + done fi - docker system prune -af --volumes || : ''' + docker system prune -f --volumes || : + docker image prune -af || : + ''' script{ env.EXIT_STATUS = '' env.LS_RELEASE = sh( @@ -65,8 +93,12 @@ pipeline { 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 ./.github/workflows/package_trigger.yml' + env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/call_issue_pr_tracker.yml ./.github/workflows/call_issues_cron.yml ./.github/workflows/permissions.yml ./.github/workflows/external_trigger.yml' + if ( env.SYFT_IMAGE_TAG == null ) { + env.SYFT_IMAGE_TAG = 'latest' + } } + echo "Using syft image tag ${SYFT_IMAGE_TAG}" sh '''#! /bin/bash echo "The default github branch detected as ${GH_DEFAULT_BRANCH}" ''' script{ @@ -175,6 +207,7 @@ 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' } } } @@ -199,6 +232,7 @@ 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' } } } @@ -223,6 +257,7 @@ 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' } } } @@ -245,9 +280,11 @@ pipeline { -v ${WORKSPACE}:/mnt \ -e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \ -e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \ - 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 && \ + ghcr.io/linuxserver/baseimage-alpine:3.20 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 && \ s3cmd put --no-preserve --acl-public -m text/xml /mnt/shellcheck-result.xml s3://ci-tests.linuxserver.io/${IMAGE}/${META_TAG}/shellcheck-result.xml" || :''' } } @@ -262,150 +299,207 @@ pipeline { } } 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=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} - cd ${TEMPDIR}/repo/${LS_REPO} - git checkout -f main - 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 - echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} - echo "Updating Jenkinsfile" - rm -Rf ${TEMPDIR} - exit 0 - else - echo "Jenkinsfile is up to date." + sh '''#! /bin/bash + 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" + 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} + cd ${TEMPDIR}/repo/${LS_REPO} + git checkout -f main + 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 + echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} + echo "Updating Jenkinsfile and exiting build, new one will trigger based on commit" + 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" + for i in ${OLD_TEMPLATES}; do + if [[ -f "${i}" ]]; then + TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}" fi - # 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}" - fi + done + if [[ -n "${TEMPLATES_TO_DELETE}" ]]; then + 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 + for i in ${TEMPLATES_TO_DELETE}; do + git rm "${i}" done - if [[ -n "${TEMPLATES_TO_DELETE}" ]]; then - 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 - for i in ${TEMPLATES_TO_DELETE}; do - 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 - echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} - echo "Deleting old and deprecated templates" - rm -Rf ${TEMPDIR} - exit 0 - else - echo "No templates to delete" - fi - # Stage 3 - Update templates - CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8) + 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 "Deleting old/deprecated templates and exiting build, new one will trigger based on commit" + 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" + CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8) + cd ${TEMPDIR}/docker-${CONTAINER_NAME} + NEWHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8) + if [[ "${CURRENTHASH}" != "${NEWHASH}" ]] || ! grep -q '.jenkins-external' "${WORKSPACE}/.gitignore" 2>/dev/null; then + 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 cd ${TEMPDIR}/docker-${CONTAINER_NAME} - NEWHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8) - if [[ "${CURRENTHASH}" != "${NEWHASH}" ]] || ! grep -q '.jenkins-external' "${WORKSPACE}/.gitignore" 2>/dev/null; then - 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 - cd ${TEMPDIR}/docker-${CONTAINER_NAME} - mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows - mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE - cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || : - cp --parents readme-vars.yml ${TEMPDIR}/repo/${LS_REPO}/ || : - cd ${TEMPDIR}/repo/${LS_REPO}/ - if ! grep -q '.jenkins-external' .gitignore 2>/dev/null; then - echo ".jenkins-external" >> .gitignore - git add .gitignore - 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 - echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} + mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows + mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE + cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || : + cp --parents readme-vars.yml ${TEMPDIR}/repo/${LS_REPO}/ || : + cd ${TEMPDIR}/repo/${LS_REPO}/ + if ! grep -q '.jenkins-external' .gitignore 2>/dev/null; then + echo ".jenkins-external" >> .gitignore + git add .gitignore + 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 + 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 + 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" + 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 + 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" + 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 + 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 + git mv unraid/${CONTAINER_NAME}.xml unraid/deprecated/${CONTAINER_NAME}.xml || : + git commit -m 'Bot Moving Deprecated Unraid Template' || : else - echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} + cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/ + git add unraid/${CONTAINER_NAME}.xml + git commit -m 'Bot Updating Unraid Template' fi - mkdir -p ${TEMPDIR}/docs - git clone 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 - 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 - git commit -m 'Bot Updating Documentation' - git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH} - git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH} + 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 - mkdir -p ${TEMPDIR}/unraid - 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 - 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; 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 - git mv unraid/${CONTAINER_NAME}.xml unraid/deprecated/${CONTAINER_NAME}.xml || : - git commit -m 'Bot Moving Deprecated Unraid Template' || : - else - cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/ - 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} - git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH} - fi - # Stage 4 - Sync Readme to Docker Hub - if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]]; then - if [[ $(cat ${TEMPDIR}/docker-${CONTAINER_NAME}/README.md | wc -m) > 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 - DH_TOKEN=$(curl -d '{"username":"'${DOCKERUSER}'", "password":"'${DOCKERHUB_TOKEN}'"}' -H "Content-Type: application/json" -X POST https://hub.docker.com/v2/users/login | jq -r '.token') + 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 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." + -X POST \ + -d '{"name":"'${DOCKERHUB_IMAGE##*/}'", "namespace":"'${DOCKERHUB_IMAGE%%/*}'"}' \ + https://hub.docker.com/v2/repositories/ || : fi - rm -Rf ${TEMPDIR}''' - script{ - env.FILES_UPDATED = sh( - script: '''cat /tmp/${COMMIT_SHA}-${BUILD_NUMBER}''', - returnStdout: true).trim() - } + 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." + fi + rm -Rf ${TEMPDIR}''' + script{ + env.FILES_UPDATED = sh( + script: '''cat /tmp/${COMMIT_SHA}-${BUILD_NUMBER}''', + returnStdout: true).trim() } } } @@ -446,23 +540,27 @@ pipeline { } } /* ####################### - GitLab Mirroring + GitLab Mirroring and Quay.io Repo Visibility ####################### */ - // Ping into Gitlab to mirror this repo and have a registry endpoint - stage("GitLab Mirror"){ + // 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"){ 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"}' ''' + -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"}' ||: ''' } } /* ############### @@ -493,7 +591,42 @@ 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 + IFS=',' read -ra CACHE <<< "$BUILDCACHE" + for i in "${CACHE[@]}"; do + docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} & + done + for p in $(jobs -p); do + wait "$p" || { echo "job $p failed" >&2; exit 1; } + done + fi + ''' + } + } } } // Build MultiArch Docker containers for push to LS Repo @@ -524,7 +657,42 @@ 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 + IFS=',' read -ra CACHE <<< "$BUILDCACHE" + for i in "${CACHE[@]}"; do + docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} & + done + for p in $(jobs -p); do + wait "$p" || { echo "job $p failed" >&2; exit 1; } + done + fi + ''' + } + } } } stage('Build ARM64') { @@ -533,10 +701,6 @@ 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}\" \ @@ -552,17 +716,50 @@ 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 "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 + 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 + IFS=',' read -ra CACHE <<< "$BUILDCACHE" + for i in "${CACHE[@]}"; do + docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} & + done + for p in $(jobs -p); do + wait "$p" || { echo "job $p failed" >&2; exit 1; } + done + fi + ''' + } } sh '''#! /bin/bash containers=$(docker ps -aq) if [[ -n "${containers}" ]]; then docker stop ${containers} fi - docker system prune -af --volumes || : ''' + docker system prune -f --volumes || : + docker image prune -af || : + ''' } } } @@ -578,7 +775,7 @@ pipeline { sh '''#! /bin/bash set -e TEMPDIR=$(mktemp -d) - if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then + if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" != "true" ]; then LOCAL_CONTAINER=${IMAGE}:amd64-${META_TAG} else LOCAL_CONTAINER=${IMAGE}:${META_TAG} @@ -587,7 +784,7 @@ pipeline { docker run --rm \ -v /var/run/docker.sock:/var/run/docker.sock:ro \ -v ${TEMPDIR}:/tmp \ - ghcr.io/anchore/syft:latest \ + ghcr.io/anchore/syft:${SYFT_IMAGE_TAG} \ ${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" @@ -666,18 +863,27 @@ 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:latest if [ "${MULTIARCH}" == "true" ]; then - docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} + docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64 docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG} fi docker run --rm \ --shm-size=1gb \ -v /var/run/docker.sock:/var/run/docker.sock \ -e IMAGE=\"${IMAGE}\" \ - -e DELAY_START=\"${CI_DELAY}\" \ + -e DOCKER_LOGS_TIMEOUT=\"${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}\" \ @@ -687,6 +893,8 @@ 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}}\" \ -t ghcr.io/linuxserver/ci:latest \ python3 test_build.py''' } @@ -702,43 +910,23 @@ pipeline { environment name: 'EXIT_STATUS', value: '' } steps { - 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 + 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 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 [ -n "${SEMVER}" ]; then + docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} + fi + done + ''' } } } @@ -749,85 +937,34 @@ pipeline { environment name: 'EXIT_STATUS', value: '' } steps { - 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 + 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 done - ''' - } + docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-latest -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} + docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-latest -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} + if [ -n "${SEMVER}" ]; then + docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} + docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} + fi + done + for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do + docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest + docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} + + docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} + if [ -n "${SEMVER}" ]; then + docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} + fi + done + ''' } } } @@ -848,14 +985,14 @@ pipeline { "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}'"}}' ''' + "tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}' ''' echo "Pushing New release for Tag" sh '''#! /bin/bash echo "Updating to ${EXT_RELEASE_CLEAN}" > releasebody.json 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 + "body": "**CI Report:**\\n\\n'${CI_URL:-N/A}'\\n\\n**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**Remote Changes:**\\n\\n' > start 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''' @@ -980,32 +1117,94 @@ 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"){ - 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"}],\ + }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"}],\ "username": "Jenkins"}' ${BUILDS_DISCORD} ''' } } } cleanup { sh '''#! /bin/bash - echo "Performing docker system prune!!" - containers=$(docker ps -aq) + echo "Pruning builder!!" + docker builder prune -f --builder container || : + containers=$(docker ps -q) if [[ -n "${containers}" ]]; then - docker stop ${containers} + BUILDX_CONTAINER_ID=$(docker ps -qf 'name=buildx_buildkit') + for container in ${containers}; do + if [[ "${container}" == "${BUILDX_CONTAINER_ID}" ]]; then + echo "skipping buildx container in docker stop" + else + echo "Stopping container ${container}" + docker stop ${container} + fi + done fi - docker system prune -af --volumes || : + docker system prune -f --volumes || : + docker image prune -af || : ''' 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 1da5645..2c825e1 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,8 @@ [![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://discord.gg/YWrKVTn "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://linuxserver.io/discord "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") @@ -20,15 +19,14 @@ 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://discord.gg/YWrKVTn) - realtime support / chat with the community and the team. +* [Discord](https://linuxserver.io/discord) - 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/gateway/linuxserver-ci/docker/linuxserver%2Faudacity) +[![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) [![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) @@ -55,49 +53,164 @@ 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/ -### Options in all KasmVNC based GUI containers +### Strict reverse proxies -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. +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). -#### Optional environment variables +**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. + +### 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 | 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` | +| `CUSTOM_PORT` | Internal HTTP port. Defaults to `3000`. | +| `CUSTOM_HTTPS_PORT` | Internal HTTPS port. Defaults to `3001`. | +| `CUSTOM_USER` | Username for HTTP Basic Auth. Defaults to `abc`. | +| `PASSWORD` | Password for HTTP Basic Auth. If unset, authentication is disabled. | +| `SUBFOLDER` | Application subfolder for reverse proxy configurations. Must include leading and trailing slashes, e.g., `/subfolder/`. | +| `TITLE` | Page title displayed in the web browser. Defaults to "Selkies". | +| `START_DOCKER` | If set to `false`, the privileged Docker-in-Docker setup will not start automatically. | +| `DISABLE_IPV6` | Set to `true` to disable IPv6 support in the container. | +| `LC_ALL` | Sets the container's locale, e.g., `fr_FR.UTF-8`. | +| `DRINODE` | If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE `/dev/dri/renderD128` | +| `NO_DECOR` | If set, applications will run without window borders, suitable for PWA usage. | +| `NO_FULL` | If set, applications will not be automatically fullscreened. | +| `DISABLE_ZINK` | If set, Zink-related environment variables will not be configured when a video card is detected. | +| `WATERMARK_PNG` | Full path to a watermark PNG file inside the container, e.g., `/usr/share/selkies/www/icon.png`. | +| `WATERMARK_LOCATION` | Integer specifying the watermark location: `1` (Top Left), `2` (Top Right), `3` (Bottom Left), `4` (Bottom Right), `5` (Centered), `6` (Animated). | -#### Optional run configurations +#### Optional Run Configurations -| Variable | Description | +| Argument | 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) | +| `--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) | -### Lossless mode +### Language Support - Internationalization -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). +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 +``` ## 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 @@ -111,7 +224,7 @@ services: - PGID=1000 - TZ=Etc/UTC volumes: - - /path/to/config:/config + - /path/to/audacity/config:/config ports: - 3000:3000 - 3001:3001 @@ -128,7 +241,7 @@ docker run -d \ -e TZ=Etc/UTC \ -p 3000:3000 \ -p 3001:3001 \ - -v /path/to/config:/config \ + -v /path/to/audacity/config:/config \ --restart unless-stopped \ lscr.io/linuxserver/audacity:latest ``` @@ -139,8 +252,8 @@ Containers are configured using parameters passed at runtime (such as those abov | Parameter | Function | | :----: | --- | -| `-p 3000` | Audacity desktop gui. | -| `-p 3001` | Audacity desktop gui HTTPS. | +| `-p 3000:3000` | Audacity desktop gui HTTP, must be proxied. | +| `-p 3001: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). | @@ -282,7 +395,8 @@ Below are the instructions for updating containers: ### 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 @@ -297,16 +411,20 @@ docker build \ -t lscr.io/linuxserver/audacity:latest . ``` -The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static` +The ARM variants can be built on x86_64 hardware and vice versa using `lscr.io/linuxserver/qemu-static` ```bash -docker run --rm --privileged multiarch/qemu-user-static:register --reset +docker run --rm --privileged lscr.io/linuxserver/qemu-static --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 c7a6fb3..774d281 100644 --- a/jenkins-vars.yml +++ b/jenkins-vars.yml @@ -19,9 +19,9 @@ repo_vars: - MULTIARCH = 'false' - CI = 'true' - CI_WEB = 'true' - - CI_PORT = '3000' - - CI_SSL = 'false' + - CI_PORT = '3001' + - CI_SSL = 'true' - CI_DELAY = '120' - - CI_DOCKERENV = 'TZ=US/Pacific' - - CI_AUTH = 'user:password' + - CI_DOCKERENV = '' + - CI_AUTH = '' - CI_WEBPATH = '' diff --git a/package_versions.txt b/package_versions.txt index fc728d3..215e3f1 100755 --- a/package_versions.txt +++ b/package_versions.txt @@ -1,1406 +1,1156 @@ -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.17 npm -@types/node 20.11.0 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.11 deb -apt-utils 2.4.11 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.5 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.5 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.26-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 -cron 3.0pl1-137ubuntu3 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.15 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 -define-data-property 1.1.1 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.6 deb -docker-ce 5:24.0.7-1~ubuntu.22.04~jammy deb -docker-ce-cli 5:24.0.7-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.4 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 -function-bind 1.1.2 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.2 npm -ghostscript 9.55.0~dfsg1-0ubuntu5.6 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.26 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/log v0.1.0 go-module -github.com/containerd/nri v0.1.1 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.7 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.7 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.16.0+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.15.9 go-module -github.com/klauspost/compress v1.16.5 go-module -github.com/klauspost/compress v1.17.2 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.20230908085316-d3e6c1360f6e 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.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.1 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-20231101070151-18a0cb0f32bc 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.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.14.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.17.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.1.0 go-module -golang.org/x/oauth2 v0.10.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.13.0 go-module -golang.org/x/sys v0.6.0 go-module -golang.org/x/sys v0.7.0 go-module -golang.org/x/term v0.13.0 go-module -golang.org/x/term v0.7.0 go-module -golang.org/x/text v0.13.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/grpc v1.58.3 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 -google.golang.org/protobuf v1.31.0 go-module -gopd 1.0.1 npm -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-flag 4.0.0 npm -has-property-descriptors 1.0.1 npm -has-proto 1.0.1 npm -has-symbols 1.0.3 npm -has-unicode 2.0.1 npm -hasown 2.0.0 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.7 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.3 deb -libappstream4 0.15.2-2 deb -libapt-pkg6.0 2.4.11 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.2 deb -libavahi-common-data 0.8-5ubuntu5.2 deb -libavahi-common3 0.8-5ubuntu5.2 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.6 deb -libc-devtools 2.35-0ubuntu3.6 deb -libc6 2.35-0ubuntu3.6 deb -libc6-dev 2.35-0ubuntu3.6 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.2 deb -libcups2 2.4.1op1-1ubuntu4.7 deb -libcupsfilters1 1.28.15-0ubuntu1.2 deb -libcurl3-gnutls 7.81.0-1ubuntu1.15 deb -libcurl4 7.81.0-1ubuntu1.15 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.3 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.6 deb -libgs9-common 9.55.0~dfsg1-0ubuntu5.6 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-1ubuntu0.1 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.11 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.3 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.3 deb -libpoppler118 22.02.0-2ubuntu0.3 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.3 deb -libpython3.10-stdlib 3.10.12-1~22.04.3 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-2ubuntu0.1 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.3 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.2 deb -libssh-gcrypt-4 0.9.6-2ubuntu0.22.04.2 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.11 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.7 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.11 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-91.101 deb -locales 2.35-0ubuntu3.5 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.13.1 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.6 deb -openssl 3.0.2-0ubuntu1.12 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.3 deb -perl-base 5.34.0-3ubuntu1.3 deb -perl-modules-5.34 5.34.0-3ubuntu1.3 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.3 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.1 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.1 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.9 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.3 deb -python3.10-minimal 3.10.12-1~22.04.3 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 -set-function-length 1.1.1 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.4 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.9 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 -stdlib go1.20.10 go-module -stdlib go1.20.12 go-module -stdlib go1.20.7 go-module -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.11 deb -systemd-sysv 249.11-0ubuntu3.11 deb -sysvinit-utils 3.01-1ubuntu1 deb -tar 1.34+dfsg-1ubuntu0.1.22.04.2 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.11 deb -undici-types 5.26.5 npm -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.5 deb -xserver-xorg-core 2:21.1.4-2ubuntu1.7~22.04.5 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 +NAME VERSION TYPE +adduser 3.137ubuntu1 deb +adwaita-icon-theme 46.0-1 deb +aiohappyeyeballs 2.6.1 python +aiohttp 3.12.14 python +aioice 0.10.1 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.3.0 python +autoconf 2.71-3 deb +automake 1:1.16.5-1.3ubuntu1 deb +autotools-dev 20220109.1 deb +av 14.4.0 python +base-files 13ubuntu10.2 deb +base-passwd 3.6.3build1 deb +bash 5.2.21-2ubuntu4 deb +binutils 2.42-4ubuntu2.5 deb +binutils-common 2.42-4ubuntu2.5 deb +binutils-x86-64-linux-gnu 2.42-4ubuntu2.5 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 1.17.1 python +cloud.google.com/go/compute/metadata v0.6.0 go-module +cloud.google.com/go/logging v1.9.0 go-module +cloud.google.com/go/longrunning v0.5.5 go-module +cmake 3.28.3-1build7 deb +cmake-data 3.28.3-1build7 deb +code.cloudfoundry.org/clock v1.1.0 go-module +console-data 2:1.12-9 deb +console-setup 1.226ubuntu1 deb +console-setup-linux 1.226ubuntu1 deb +containerd.io 1.7.27-1 deb +coreutils 9.4-3ubuntu6 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) +curl 8.5.0-2ubuntu10.6 deb +dario.cat/mergo v1.0.0 go-module +dario.cat/mergo v1.0.1 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-4build2 deb +dconf-service 0.40.0-4build2 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.3 deb +dnspython 2.7.0 python +docker-buildx-plugin 0.25.0-1~ubuntu.24.04~noble deb +docker-ce 5:28.3.2-1~ubuntu.24.04~noble deb +docker-ce-cli 5:28.3.2-1~ubuntu.24.04~noble deb +docker-compose-plugin 2.38.2-1~ubuntu.24.04~noble deb +dpkg 1.22.6ubuntu6.1 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.7.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 +gettext 0.21-14ubuntu2 deb +gettext UNKNOWN java-archive +gettext-base 0.21-14ubuntu2 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.4 deb +gir1.2-glib-2.0-dev 2.80.0-6ubuntu3.4 deb +gir1.2-packagekitglib-1.0 1.2.8-2ubuntu1.2 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.16.0 go-module +github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 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.2.1 go-module (+1 duplicate) +github.com/Microsoft/hcsshim v0.11.7 go-module (+1 duplicate) +github.com/Microsoft/hcsshim v0.13.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 (+1 duplicate) +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.30.3 go-module (+2 duplicates) +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.3 go-module +github.com/aws/aws-sdk-go-v2/config v1.27.27 go-module (+2 duplicates) +github.com/aws/aws-sdk-go-v2/credentials v1.17.27 go-module (+2 duplicates) +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11 go-module (+2 duplicates) +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15 go-module (+2 duplicates) +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15 go-module (+2 duplicates) +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 go-module (+2 duplicates) +github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.32.0 go-module +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3 go-module (+2 duplicates) +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17 go-module (+2 duplicates) +github.com/aws/aws-sdk-go-v2/service/sso v1.22.4 go-module (+2 duplicates) +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4 go-module (+2 duplicates) +github.com/aws/aws-sdk-go-v2/service/sts v1.30.3 go-module (+2 duplicates) +github.com/aws/smithy-go v1.20.3 go-module (+2 duplicates) +github.com/beorn7/perks v1.0.1 go-module (+2 duplicates) +github.com/bits-and-blooms/bitset v1.13.0 go-module +github.com/blang/semver/v4 v4.0.0 go-module +github.com/buger/goterm v1.0.4 go-module +github.com/cenkalti/backoff/v4 v4.2.1 go-module +github.com/cenkalti/backoff/v4 v4.3.0 go-module (+2 duplicates) +github.com/cespare/xxhash/v2 v2.2.0 go-module +github.com/cespare/xxhash/v2 v2.3.0 go-module (+1 duplicate) +github.com/checkpoint-restore/go-criu/v6 v6.3.0 go-module +github.com/cilium/ebpf v0.16.0 go-module +github.com/cilium/ebpf v0.17.3 go-module +github.com/cilium/ebpf v0.9.1 go-module (+3 duplicates) +github.com/cloudflare/cfssl v1.6.4 go-module +github.com/compose-spec/compose-go/v2 v2.6.3 go-module +github.com/compose-spec/compose-go/v2 v2.7.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/aufs v1.0.0 go-module +github.com/containerd/btrfs/v2 v2.0.0 go-module +github.com/containerd/cgroups v1.1.0 go-module (+1 duplicate) +github.com/containerd/cgroups/v3 v3.0.2 go-module (+3 duplicates) +github.com/containerd/cgroups/v3 v3.0.5 go-module +github.com/containerd/console v1.0.3 go-module (+4 duplicates) +github.com/containerd/console v1.0.4 go-module +github.com/containerd/console v1.0.5 go-module (+2 duplicates) +github.com/containerd/containerd v1.7.27 go-module (+4 duplicates) +github.com/containerd/containerd/api v1.8.0 go-module (+4 duplicates) +github.com/containerd/containerd/api v1.9.0 go-module (+2 duplicates) +github.com/containerd/containerd/v2 v2.1.1 go-module +github.com/containerd/containerd/v2 v2.1.3 go-module (+1 duplicate) +github.com/containerd/continuity v0.4.4 go-module (+4 duplicates) +github.com/containerd/continuity v0.4.5 go-module (+2 duplicates) +github.com/containerd/errdefs v0.3.0 go-module (+4 duplicates) +github.com/containerd/errdefs v1.0.0 go-module (+2 duplicates) +github.com/containerd/errdefs/pkg v0.3.0 go-module (+2 duplicates) +github.com/containerd/fifo v1.1.0 go-module (+5 duplicates) +github.com/containerd/go-cni v1.1.12 go-module +github.com/containerd/go-cni v1.1.9 go-module (+1 duplicate) +github.com/containerd/go-runc v1.0.0 go-module (+4 duplicates) +github.com/containerd/go-runc v1.1.0 go-module +github.com/containerd/imgcrypt v1.1.8 go-module +github.com/containerd/log v0.1.0 go-module (+8 duplicates) +github.com/containerd/nri v0.8.0 go-module +github.com/containerd/platforms v0.2.1 go-module (+3 duplicates) +github.com/containerd/platforms v1.0.0-rc.1 go-module (+2 duplicates) +github.com/containerd/plugin v1.0.0 go-module +github.com/containerd/stargz-snapshotter/estargz v0.16.3 go-module +github.com/containerd/ttrpc v1.2.7 go-module (+7 duplicates) +github.com/containerd/typeurl v1.0.2 go-module +github.com/containerd/typeurl/v2 v2.1.1 go-module (+4 duplicates) +github.com/containerd/typeurl/v2 v2.2.3 go-module (+2 duplicates) +github.com/containerd/zfs v1.1.0 go-module +github.com/containernetworking/cni v1.1.2 go-module (+1 duplicate) +github.com/containernetworking/cni v1.3.0 go-module +github.com/containernetworking/plugins v1.2.0 go-module +github.com/containernetworking/plugins v1.7.1 go-module +github.com/containers/ocicrypt v1.1.10 go-module +github.com/coreos/go-systemd/v22 v22.5.0 go-module (+5 duplicates) +github.com/cyphar/filepath-securejoin v0.4.1 go-module (+1 duplicate) +github.com/davecgh/go-spew v1.1.1 go-module (+3 duplicates) +github.com/deckarep/golang-set/v2 v2.3.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 UNKNOWN go-module +github.com/docker/buildx v0.25.0 go-module +github.com/docker/cli v28.2.2+incompatible go-module +github.com/docker/cli v28.3.1+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/v2 UNKNOWN go-module +github.com/docker/distribution v2.8.3+incompatible go-module (+1 duplicate) +github.com/docker/docker v28.2.2+incompatible go-module +github.com/docker/docker v28.3.1+incompatible go-module +github.com/docker/docker v28.3.2 go-module (+1 duplicate) +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 (+2 duplicates) +github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c go-module (+4 duplicates) +github.com/docker/go-metrics v0.0.1 go-module (+2 duplicates) +github.com/docker/go-units v0.5.0 go-module (+7 duplicates) +github.com/docker/libtrust v0.0.0-20150526203908-9cbd2a1374f4 go-module +github.com/dustin/go-humanize v1.0.0 go-module +github.com/eiannone/keyboard v0.0.0-20220611211555-0d226195f203 go-module +github.com/emicklei/go-restful/v3 v3.10.1 go-module +github.com/emicklei/go-restful/v3 v3.11.0 go-module (+1 duplicate) +github.com/felixge/httpsnoop v1.0.3 go-module (+1 duplicate) +github.com/felixge/httpsnoop v1.0.4 go-module (+2 duplicates) +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.6.0 go-module +github.com/fsnotify/fsnotify v1.9.0 go-module +github.com/fvbommel/sortorder v1.0.1 go-module +github.com/fvbommel/sortorder v1.1.0 go-module +github.com/fxamacker/cbor/v2 v2.7.0 go-module (+1 duplicate) +github.com/go-jose/go-jose/v3 v3.0.3 go-module +github.com/go-logr/logr v1.4.2 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 (+1 duplicate) +github.com/go-openapi/jsonreference v0.20.2 go-module (+1 duplicate) +github.com/go-openapi/swag v0.23.0 go-module (+1 duplicate) +github.com/go-viper/mapstructure/v2 v2.0.0 go-module +github.com/go-viper/mapstructure/v2 v2.3.0 go-module +github.com/godbus/dbus/v5 v5.1.0 go-module (+5 duplicates) +github.com/gofrs/flock v0.12.1 go-module (+2 duplicates) +github.com/gogo/protobuf v1.3.2 go-module (+7 duplicates) +github.com/golang-jwt/jwt/v5 v5.2.2 go-module (+1 duplicate) +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/protobuf v1.5.4 go-module (+7 duplicates) +github.com/google/btree v1.1.2 go-module +github.com/google/certificate-transparency-go v1.1.4 go-module +github.com/google/gnostic-models v0.6.8 go-module (+1 duplicate) +github.com/google/go-cmp v0.6.0 go-module (+4 duplicates) +github.com/google/go-cmp v0.7.0 go-module (+2 duplicates) +github.com/google/gofuzz v1.2.0 go-module (+2 duplicates) +github.com/google/s2a-go v0.1.7 go-module +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 go-module (+2 duplicates) +github.com/google/uuid v1.4.0 go-module (+1 duplicate) +github.com/google/uuid v1.6.0 go-module (+2 duplicates) +github.com/googleapis/enterprise-certificate-proxy v0.3.2 go-module +github.com/googleapis/gax-go/v2 v2.12.0 go-module +github.com/gorilla/mux v1.8.1 go-module (+1 duplicate) +github.com/gorilla/websocket v1.5.0 go-module (+1 duplicate) +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 go-module +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 go-module (+1 duplicate) +github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 go-module +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 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 (+1 duplicate) +github.com/hashicorp/go-cty-funcs v0.0.0-20250210171435-dda779884a9f 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.2 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.7.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.23.0 go-module +github.com/hashicorp/memberlist v0.4.0 go-module +github.com/hashicorp/serf v0.8.5 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.5.0 go-module (+1 duplicate) +github.com/ishidawataru/sctp v0.0.0-20230406120618-7ff4192f6ff2 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 (+1 duplicate) +github.com/json-iterator/go v1.1.12 go-module (+2 duplicates) +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 go-module +github.com/klauspost/compress v1.16.7 go-module (+3 duplicates) +github.com/klauspost/compress v1.18.0 go-module (+2 duplicates) +github.com/klauspost/cpuid/v2 v2.0.4 go-module (+1 duplicate) +github.com/mailru/easyjson v0.7.7 go-module (+1 duplicate) +github.com/mattn/go-colorable v0.1.13 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/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.66 go-module +github.com/miekg/pkcs11 v1.1.1 go-module +github.com/minio/sha256-simd v1.0.0 go-module (+1 duplicate) +github.com/mistifyio/go-zfs/v3 v3.0.1 go-module (+1 duplicate) +github.com/mitchellh/copystructure v1.2.0 go-module +github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 go-module +github.com/mitchellh/hashstructure/v2 v2.0.2 go-module (+2 duplicates) +github.com/mitchellh/mapstructure v1.5.0 go-module +github.com/mitchellh/reflectwalk v1.0.2 go-module +github.com/moby/buildkit v0.23.0 go-module +github.com/moby/buildkit v0.23.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/patternmatcher v0.6.0 go-module (+2 duplicates) +github.com/moby/pubsub v1.0.0 go-module +github.com/moby/spdystream v0.2.0 go-module +github.com/moby/spdystream v0.5.0 go-module (+1 duplicate) +github.com/moby/swarmkit/v2 v2.0.0 go-module +github.com/moby/sys/atomicwriter v0.1.0 go-module (+2 duplicates) +github.com/moby/sys/capability v0.4.0 go-module +github.com/moby/sys/mount v0.3.4 go-module +github.com/moby/sys/mountinfo v0.6.2 go-module (+4 duplicates) +github.com/moby/sys/mountinfo v0.7.1 go-module +github.com/moby/sys/mountinfo v0.7.2 go-module (+2 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.0 go-module (+1 duplicate) +github.com/moby/sys/signal v0.7.1 go-module (+2 duplicates) +github.com/moby/sys/symlink v0.2.0 go-module +github.com/moby/sys/symlink v0.3.0 go-module (+1 duplicate) +github.com/moby/sys/user v0.3.0 go-module (+4 duplicates) +github.com/moby/sys/user v0.4.0 go-module (+2 duplicates) +github.com/moby/sys/userns v0.1.0 go-module (+8 duplicates) +github.com/moby/term v0.5.2 go-module (+2 duplicates) +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd go-module (+2 duplicates) +github.com/modern-go/reflect2 v1.0.2 go-module (+2 duplicates) +github.com/morikuni/aec v1.0.0 go-module (+2 duplicates) +github.com/mrunalp/fileutils v0.5.1 go-module +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 go-module (+2 duplicates) +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f go-module (+1 duplicate) +github.com/opencontainers/cgroups v0.0.3 go-module +github.com/opencontainers/go-digest v1.0.0 go-module (+7 duplicates) +github.com/opencontainers/image-spec v1.1.0 go-module (+4 duplicates) +github.com/opencontainers/image-spec v1.1.1 go-module (+2 duplicates) +github.com/opencontainers/runc v0.0.0-20250213225849-59923ef18c98 go-module +github.com/opencontainers/runtime-spec v1.1.0 go-module (+4 duplicates) +github.com/opencontainers/runtime-spec v1.2.0 go-module +github.com/opencontainers/runtime-spec v1.2.1 go-module +github.com/opencontainers/runtime-tools v0.9.1-0.20221107090550-2e043c6bd626 go-module (+1 duplicate) +github.com/opencontainers/selinux v1.11.0 go-module (+2 duplicates) +github.com/opencontainers/selinux v1.12.0 go-module +github.com/package-url/packageurl-go v0.1.1 go-module +github.com/pelletier/go-toml v1.9.5 go-module (+4 duplicates) +github.com/pelletier/go-toml/v2 v2.2.4 go-module +github.com/philhofer/fwd v1.1.2 go-module +github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c go-module +github.com/pkg/errors v0.9.1 go-module (+7 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 (+1 duplicate) +github.com/prometheus/client_golang v1.16.0 go-module +github.com/prometheus/client_golang v1.22.0 go-module (+1 duplicate) +github.com/prometheus/client_model v0.3.0 go-module +github.com/prometheus/client_model v0.6.1 go-module (+1 duplicate) +github.com/prometheus/common v0.42.0 go-module +github.com/prometheus/common v0.62.0 go-module (+1 duplicate) +github.com/prometheus/procfs v0.10.1 go-module +github.com/prometheus/procfs v0.15.1 go-module (+1 duplicate) +github.com/rivo/uniseg v0.2.0 go-module (+1 duplicate) +github.com/rootless-containers/rootlesskit/v2 v2.3.4 go-module +github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 go-module +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.6.0 go-module (+2 duplicates) +github.com/serialx/hashring v0.0.0-20200727003509-22c0c7ab6b1b go-module (+1 duplicate) +github.com/shibumi/go-pathspec v1.3.0 go-module (+2 duplicates) +github.com/sirupsen/logrus v1.9.3 go-module (+9 duplicates) +github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 go-module +github.com/spdx/tools-golang v0.5.5 go-module +github.com/spf13/cobra v1.9.1 go-module (+2 duplicates) +github.com/spf13/pflag v1.0.5 go-module +github.com/spf13/pflag v1.0.6 go-module (+2 duplicates) +github.com/stefanberger/go-pkcs11uri v0.0.0-20230803200340-78284954bff6 go-module +github.com/stretchr/testify v1.10.0 go-module (+1 duplicate) +github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 go-module (+2 duplicates) +github.com/tchap/go-patricia/v2 v2.3.1 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.8 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.12 go-module (+1 duplicate) +github.com/urfave/cli v1.22.14 go-module +github.com/vbatts/tar-split v0.12.1 go-module +github.com/vishvananda/netlink v1.1.0 go-module +github.com/vishvananda/netlink v1.2.1-beta.2 go-module +github.com/vishvananda/netlink v1.3.1 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.5 go-module +github.com/weppos/publicsuffix-go v0.15.1-0.20210511084619-b1f36a2d6c0b go-module +github.com/x448/float16 v0.8.4 go-module (+1 duplicate) +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb go-module (+1 duplicate) +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 go-module (+1 duplicate) +github.com/xeipuuv/gojsonschema v1.2.0 go-module (+1 duplicate) +github.com/xhit/go-str2duration/v2 v2.1.0 go-module (+1 duplicate) +github.com/zclconf/go-cty v1.16.2 go-module (+1 duplicate) +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.3.10 go-module +go.etcd.io/bbolt v1.4.0 go-module +go.etcd.io/etcd/client/pkg/v3 v3.5.16 go-module +go.etcd.io/etcd/pkg/v3 v3.5.16 go-module +go.etcd.io/etcd/raft/v3 v3.5.16 go-module +go.etcd.io/etcd/server/v3 v3.5.16 go-module +go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1 go-module +go.opencensus.io v0.24.0 go-module +go.opentelemetry.io/auto/sdk v1.1.0 go-module (+2 duplicates) +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 go-module +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 go-module (+2 duplicates) +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.56.0 go-module (+1 duplicate) +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.60.0 go-module +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0 go-module (+1 duplicate) +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 go-module (+2 duplicates) +go.opentelemetry.io/contrib/processors/baggagecopy v0.4.0 go-module +go.opentelemetry.io/otel v1.21.0 go-module (+1 duplicate) +go.opentelemetry.io/otel v1.35.0 go-module (+2 duplicates) +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.31.0 go-module (+1 duplicate) +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.35.0 go-module +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.31.0 go-module (+1 duplicate) +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.35.0 go-module +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 go-module +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 go-module (+2 duplicates) +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0 go-module +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 go-module (+2 duplicates) +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0 go-module +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0 go-module (+2 duplicates) +go.opentelemetry.io/otel/metric v1.21.0 go-module (+1 duplicate) +go.opentelemetry.io/otel/metric v1.35.0 go-module (+2 duplicates) +go.opentelemetry.io/otel/sdk v1.21.0 go-module +go.opentelemetry.io/otel/sdk v1.35.0 go-module (+2 duplicates) +go.opentelemetry.io/otel/sdk/metric v1.35.0 go-module (+2 duplicates) +go.opentelemetry.io/otel/trace v1.21.0 go-module (+1 duplicate) +go.opentelemetry.io/otel/trace v1.35.0 go-module (+2 duplicates) +go.opentelemetry.io/proto/otlp v1.0.0 go-module +go.opentelemetry.io/proto/otlp v1.5.0 go-module (+2 duplicates) +go.uber.org/atomic v1.9.0 go-module +go.uber.org/mock v0.5.2 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.31.0 go-module +golang.org/x/crypto v0.37.0 go-module (+2 duplicates) +golang.org/x/exp v0.0.0-20230224173230-c95f2b4c22f2 go-module +golang.org/x/mod v0.17.0 go-module +golang.org/x/mod v0.24.0 go-module +golang.org/x/net v0.33.0 go-module (+3 duplicates) +golang.org/x/net v0.39.0 go-module (+3 duplicates) +golang.org/x/oauth2 v0.11.0 go-module +golang.org/x/oauth2 v0.29.0 go-module (+2 duplicates) +golang.org/x/sync v0.10.0 go-module (+4 duplicates) +golang.org/x/sync v0.14.0 go-module (+1 duplicate) +golang.org/x/sync v0.15.0 go-module +golang.org/x/sys v0.28.0 go-module (+5 duplicates) +golang.org/x/sys v0.33.0 go-module (+3 duplicates) +golang.org/x/term v0.27.0 go-module +golang.org/x/term v0.31.0 go-module (+1 duplicate) +golang.org/x/text v0.21.0 go-module (+2 duplicates) +golang.org/x/text v0.24.0 go-module (+2 duplicates) +golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 go-module +golang.org/x/time v0.11.0 go-module (+2 duplicates) +google-crc32c 1.7.1 python +google.golang.org/api v0.160.0 go-module +google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3 go-module (+4 duplicates) +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de go-module +google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f go-module +google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a go-module (+1 duplicate) +google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463 go-module +google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda go-module (+4 duplicates) +google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a go-module (+1 duplicate) +google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463 go-module +google.golang.org/grpc v1.59.0 go-module (+4 duplicates) +google.golang.org/grpc v1.72.2 go-module (+1 duplicate) +google.golang.org/grpc v1.73.0 go-module +google.golang.org/protobuf v1.33.0 go-module +google.golang.org/protobuf v1.35.2 go-module (+4 duplicates) +google.golang.org/protobuf v1.36.6 go-module (+2 duplicates) +gopkg.in/evanphx/json-patch.v4 v4.12.0 go-module (+1 duplicate) +gopkg.in/inf.v0 v0.9.1 go-module (+3 duplicates) +gopkg.in/ini.v1 v1.67.0 go-module +gopkg.in/yaml.v2 v2.4.0 go-module (+1 duplicate) +gopkg.in/yaml.v3 v3.0.1 go-module (+3 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 +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.10 python +ifaddr 0.2.0 python +init-system-helpers 1.66ubuntu1 deb +intel-media-va-driver 24.1.0+dfsg1-1 deb +intltool 0.51.0-6 deb +iproute2 6.1.0-1ubuntu6 deb +iptables 1.8.10-3ubuntu2 deb +iso-codes 4.16.0-1 deb +jq 1.7.1 binary +jq 1.7.1-3ubuntu0.24.04.1 deb +k8s.io/api v0.26.2 go-module +k8s.io/api v0.32.3 go-module (+1 duplicate) +k8s.io/apimachinery v0.27.4 go-module (+1 duplicate) +k8s.io/apimachinery v0.32.3 go-module (+1 duplicate) +k8s.io/apiserver v0.26.2 go-module +k8s.io/client-go v0.26.2 go-module +k8s.io/client-go v0.32.3 go-module (+1 duplicate) +k8s.io/component-base v0.26.2 go-module +k8s.io/cri-api v0.27.1 go-module +k8s.io/klog/v2 v2.130.1 go-module (+2 duplicates) +k8s.io/klog/v2 v2.90.1 go-module +k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f go-module (+1 duplicate) +k8s.io/utils v0.0.0-20230220204549-a5ecb0141aa5 go-module +k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 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.5 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.5 deb +libc-dev-bin 2.39-0ubuntu8.5 deb +libc6 2.39-0ubuntu8.5 deb +libc6-dev 2.39-0ubuntu8.5 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 +libclone-perl 0.46-1build3 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.5 deb +libctf0 2.42-4ubuntu2.5 deb +libcups2t64 2.4.7-1.2ubuntu7.3 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-4build2 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.1 deb +libdrm-common 2.4.122-1~ubuntu0.24.04.1 deb +libdrm-intel1 2.4.122-1~ubuntu0.24.04.1 deb +libdrm-nouveau2 2.4.122-1~ubuntu0.24.04.1 deb +libdrm-radeon1 2.4.122-1~ubuntu0.24.04.1 deb +libdrm2 2.4.122-1~ubuntu0.24.04.1 deb +libduktape207 2.7.0+tests-0ubuntu3 deb +libdw1t64 0.190-1.1ubuntu0.1 deb +libedit2 3.1-20230828-1build1 deb +libegl-mesa0 24.2.8-1ubuntu1~24.04.1 deb +libegl1 1.7.0-1build1 deb +libelf1t64 0.190-1.1ubuntu0.1 deb +libencode-locale-perl 1.05-3 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 +libfile-listing-perl 6.16-1 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 24.2.8-1ubuntu1~24.04.1 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.4 deb +libgl1 1.7.0-1build1 deb +libgl1-mesa-dri 24.2.8-1ubuntu1~24.04.1 deb +libglapi-mesa 24.2.8-1ubuntu1~24.04.1 deb +libglib2.0-0t64 2.80.0-6ubuntu3.4 deb +libglib2.0-bin 2.80.0-6ubuntu3.4 deb +libglib2.0-data 2.80.0-6ubuntu3.4 deb +libglib2.0-dev 2.80.0-6ubuntu3.4 deb +libglib2.0-dev-bin 2.80.0-6ubuntu3.4 deb +libglu1-mesa 9.0.2-1.1build1 deb +libglvnd0 1.7.0-1build1 deb +libglx-mesa0 24.2.8-1ubuntu1~24.04.1 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.5 deb +libgraphite2-3 1.3.14-2build1 deb +libgs-common 10.02.1~dfsg1-0ubuntu7.7 deb +libgs10 10.02.1~dfsg1-0ubuntu7.7 deb +libgs10-common 10.02.1~dfsg1-0ubuntu7.7 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.2 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 +libhtml-parser-perl 3.81-1build3 deb +libhtml-tagset-perl 3.20-6 deb +libhtml-tree-perl 5.07-3 deb +libhttp-cookies-perl 6.11-1 deb +libhttp-date-perl 6.06-1 deb +libhttp-message-perl 6.45-1ubuntu1 deb +libhttp-negotiate-perl 6.01-2 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 +libintl 0.21 java-archive +libio-html-perl 1.004-3 deb +libio-socket-ssl-perl 2.085-1 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 +libllvm19 1:19.1.1-1ubuntu1~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 +liblwp-mediatypes-perl 6.04-2 deb +liblwp-protocol-https-perl 6.13-1 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 +libnet-http-perl 6.23-1 deb +libnet-ssleay-perl 1.94-1build4 deb +libnetfilter-conntrack3 1.0.9-6build1 deb +libnettle8t64 3.9.1-2.2build1.1 deb +libnfnetlink0 1.0.2-2build1 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.3 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.2 deb +libpam-modules 1.5.3-5ubuntu5.4 deb +libpam-modules-bin 1.5.3-5ubuntu5.4 deb +libpam-runtime 1.5.3-5ubuntu5.4 deb +libpam-systemd 255.4-1ubuntu8.10 deb +libpam0g 1.5.3-5ubuntu5.4 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.1 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 deb +libpython3.12-minimal 3.12.3-1ubuntu0.7 deb +libpython3.12-stdlib 3.12.3-1ubuntu0.7 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.5 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.3 deb +libss2 1.47.0-2.4~exp1ubuntu4.1 deb +libssh-4 0.10.6-2ubuntu0.1 deb +libssl3t64 3.0.13-0ubuntu3.5 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.10 deb +libsystemd0 255.4-1ubuntu8.10 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.2 deb +libtimedate-perl 2.3300-2 deb +libtinfo6 6.4+20240113-1ubuntu2 deb +libtirpc-common 1.3.4+ds-1.1build1 deb +libtirpc3t64 1.3.4+ds-1.1build1 deb +libtry-tiny-perl 0.31-2 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.10 deb +libunistring5 1.1-2build1.1 deb +libunwind8 1.6.2-3build1.1 deb +liburi-perl 5.27-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 +libwww-perl 6.76-1 deb +libwww-robotrules-perl 6.02-1 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 +libxml-parser-perl 2.47-1build3 deb +libxml2 2.9.14+dfsg-1.3ubuntu3.3 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-64.67 deb +locales 2.39-0ubuntu8.5 deb +locales-all 2.39-0ubuntu8.5 deb +login 1:4.13+dfsg1-4ubuntu3.2 deb +logsave 1.47.0-2.4~exp1ubuntu4.1 deb +lsb-release 12.0-2 deb +m4 1.4.19-4build1 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 24.2.8-1ubuntu1~24.04.1 deb +mesa-va-drivers 24.2.8-1ubuntu1~24.04.1 deb +mesa-vulkan-drivers 24.2.8-1ubuntu1~24.04.1 deb +mount 2.39.3-9ubuntu6.3 deb +msgpack 1.1.1 python +multidict 6.6.3 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 +nginx 1.24.0-2ubuntu7.4 deb +nginx-common 1.24.0-2ubuntu7.4 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.13 deb +openssl 3.0.13-0ubuntu3.5 deb +packagekit 1.2.8-2ubuntu1.2 deb +packaging 24.0 python +pasimple 0.0.3 python +passwd 1:4.13+dfsg1-4ubuntu3.2 deb +patch 2.7.6-7build3 deb +pci.ids 0.0~2024.03.31-1ubuntu0.1 deb +pciutils 1:3.10.0-2build1 deb +pcmflux 1.0.4 python +perl 5.38.2-3.2ubuntu0.1 deb +perl-base 5.38.2-3.2ubuntu0.1 deb +perl-modules-5.38 5.38.2-3.2ubuntu0.1 deb +perl-openssl-defaults 7build3 deb +pillow 11.3.0 python +pinentry-curses 1.2.1-3ubuntu5 deb +pixelflux 1.3.0 python +pkgconf 1.8.1-2build1 deb +pkgconf-bin 1.8.1-2build1 deb +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.22.1 python +propcache 0.3.2 python +psutil 7.0.0 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.22 python +pyee 13.0.0 python +pygobject 3.48.2 python +pyjwt 2.7.0 python +pylibsrtp 0.12.0 python +pynput 1.8.1 python +pyopenssl 25.1.0 python +pyparsing 3.1.1 python +python-apt 2.7.7+ubuntu4 python +python-apt-common 2.7.7ubuntu4 deb +python-distutils-extra 3.0 python +python-xlib 0.33 python +python3 3.12.3-0ubuntu2 deb +python3-apt 2.7.7ubuntu4 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-distutils-extra 3.0 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 deb +python3-oauthlib 3.2.2-1 deb +python3-packaging 24.0-1 deb +python3-pkg-resources 68.1.2-2ubuntu1.2 deb +python3-pyparsing 3.1.1-1 deb +python3-setuptools 68.1.2-2ubuntu1.2 deb +python3-six 1.16.0-4 deb +python3-software-properties 0.99.49.2 deb +python3-wadllib 1.3.6-5 deb +python3-xdg 0.28-2 deb +python3.12 3.12.3-1ubuntu0.7 deb +python3.12-minimal 3.12.3-1ubuntu0.7 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 68.1.2 python +sgml-base 1.31 deb +shared-mime-info 2.4-4 deb +sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd go-module +sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 go-module (+1 duplicate) +sigs.k8s.io/structured-merge-diff/v4 v4.2.3 go-module +sigs.k8s.io/structured-merge-diff/v4 v4.4.2 go-module (+1 duplicate) +sigs.k8s.io/yaml v1.3.0 go-module (+1 duplicate) +sigs.k8s.io/yaml v1.4.0 go-module (+2 duplicates) +six 1.16.0 python +software-properties-common 0.99.49.2 deb +ssl-cert 1.1.2ubuntu1 deb +stdlib go1.23.7 go-module (+5 duplicates) +stdlib go1.24.4 go-module +stdlib go1.24.5 go-module (+3 duplicates) +stterm 0.9-1 deb +sudo 1.9.15p5-3ubuntu5.24.04.1 deb +systemd 255.4-1ubuntu8.10 deb +systemd-dev 255.4-1ubuntu8.10 deb +systemd-sysv 255.4-1ubuntu8.10 deb +sysvinit-utils 3.08-6ubuntu3 deb +tags.cncf.io/container-device-interface v0.8.1 go-module +tags.cncf.io/container-device-interface v1.0.1 go-module (+1 duplicate) +tags.cncf.io/container-device-interface/specs-go v0.8.0 go-module +tags.cncf.io/container-device-interface/specs-go v1.0.0 go-module +tar 1.35+dfsg-3build1 deb +typing-extensions 4.14.1 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.10 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 +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 +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.4 deb +xserver-xorg-core 2:21.1.12-1ubuntu1.4 deb +xserver-xorg-video-amdgpu 23.0.0-1build1 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-2build1 deb +xserver-xorg-video-qxl 0.1.6-1build1 deb +xserver-xorg-video-radeon 1:22.0.0-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.4 deb +yarl 1.20.1 python +zlib1g 1:1.3.dfsg-3.1ubuntu2.1 deb +zlib1g-dev 1:1.3.dfsg-3.1ubuntu2.1 deb diff --git a/readme-vars.yml b/readme-vars.yml index eaaecd1..9b95a8e 100644 --- a/readme-vars.yml +++ b/readme-vars.yml @@ -6,71 +6,104 @@ 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/config", desc: "Users home directory in the container, stores program settings and images" } + - {vol_path: "/config", vol_host_path: "/path/to/{{ project_name }}/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." } - - { external_port: "3001", internal_port: "3001", port_desc: "Audacity desktop gui HTTPS." } - + - {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."} +# Selkies blurb settings +selkies_blurb: true +show_nvidia: true # application setup block app_setup_block_enabled: true app_setup_block: | The application can be accessed at: - * http://yourhost:3000/ * https://yourhost:3001/ - - ### 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). - +# 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-xorg + svc-xorg -> legacy-services + } + Base Images: { + "baseimage-selkies:ubuntunoble" <- "baseimage-ubuntu:noble" + } + "audacity:latest" <- Base Images # changelog changelogs: - - { 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: "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."} diff --git a/root/defaults/autostart b/root/defaults/autostart index 8d6612c..982bdb9 100644 --- a/root/defaults/autostart +++ b/root/defaults/autostart @@ -1 +1 @@ -/app/audacity/audacity --appimage-extract-and-run +/opt/audacity/AppRun diff --git a/root/defaults/menu.xml b/root/defaults/menu.xml new file mode 100644 index 0000000..9bd798f --- /dev/null +++ b/root/defaults/menu.xml @@ -0,0 +1,7 @@ + + + +/usr/bin/xterm +/opt/audacity/AppRun + +