mirror of
https://github.com/mvt-project/mvt.git
synced 2026-10-31 10:16:21 +01:00
Compare commits
7
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d684feb219 | ||
|
|
db809cbc46 | ||
|
|
f4bfc39c27 | ||
|
|
a645913376 | ||
|
|
4990b22259 | ||
|
|
2a858a2a05 | ||
|
|
4a7100e0c9 |
No files matched your search
@@ -14,10 +14,10 @@ env:
|
|||||||
REGISTRY: ghcr.io
|
REGISTRY: ghcr.io
|
||||||
IMAGE_NAME: ${{ github.repository }}
|
IMAGE_NAME: ${{ github.repository }}
|
||||||
|
|
||||||
# There is a single job in this workflow. It's configured to run on the latest available version of Ubuntu.
|
# Build each architecture natively, then publish the combined image manifests.
|
||||||
jobs:
|
jobs:
|
||||||
build-and-push-image:
|
build-and-push-image:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ${{ matrix.architecture.runner }}
|
||||||
# Sets the permissions granted to the `GITHUB_TOKEN` for the actions in this job.
|
# Sets the permissions granted to the `GITHUB_TOKEN` for the actions in this job.
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -26,7 +26,15 @@ jobs:
|
|||||||
id-token: write
|
id-token: write
|
||||||
#
|
#
|
||||||
strategy:
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
|
architecture:
|
||||||
|
- platform: linux/amd64
|
||||||
|
runner: ubuntu-24.04
|
||||||
|
name: amd64
|
||||||
|
- platform: linux/arm64
|
||||||
|
runner: ubuntu-24.04-arm
|
||||||
|
name: arm64
|
||||||
platform:
|
platform:
|
||||||
- dockerfile: "Dockerfile"
|
- dockerfile: "Dockerfile"
|
||||||
tag-suffix: ""
|
tag-suffix: ""
|
||||||
@@ -61,24 +69,95 @@ jobs:
|
|||||||
type=raw,enable=${{ github.ref_type == 'tag' }},value=${{ github.ref_name }},suffix=${{ matrix.platform.tag-suffix }}
|
type=raw,enable=${{ github.ref_type == 'tag' }},value=${{ github.ref_name }},suffix=${{ matrix.platform.tag-suffix }}
|
||||||
type=sha,suffix=${{ matrix.platform.tag-suffix }}
|
type=sha,suffix=${{ matrix.platform.tag-suffix }}
|
||||||
type=sha,format=long,suffix=${{ matrix.platform.tag-suffix }}
|
type=sha,format=long,suffix=${{ matrix.platform.tag-suffix }}
|
||||||
# Register emulators so Buildx can build the ARM64 images on the AMD64 runner.
|
|
||||||
- name: Set up QEMU
|
|
||||||
uses: docker/setup-qemu-action@v4
|
|
||||||
# This step sets up some additional capabilities to generate the provenance and sbom attestations
|
# This step sets up some additional capabilities to generate the provenance and sbom attestations
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v4
|
uses: docker/setup-buildx-action@v4
|
||||||
# This step uses the `docker/build-push-action` action to build the image, based on your repository's `Dockerfile`. If the build succeeds, it pushes the image to GitHub Packages.
|
# This step uses the `docker/build-push-action` action to build the image, based on your repository's `Dockerfile`. If the build succeeds, it pushes the image to GitHub Packages.
|
||||||
# It uses the `context` parameter to define the build's context as the set of files located in the specified path. For more information, see "[Usage](https://github.com/docker/build-push-action#usage)" in the README of the `docker/build-push-action` repository.
|
# It uses the `context` parameter to define the build's context as the set of files located in the specified path. For more information, see "[Usage](https://github.com/docker/build-push-action#usage)" in the README of the `docker/build-push-action` repository.
|
||||||
# It uses the `tags` and `labels` parameters to tag and label the image with the output from the "meta" step.
|
# Push by digest so architecture builds do not overwrite shared image tags.
|
||||||
- name: Build and push Docker image
|
- name: Build and push Docker image
|
||||||
id: push
|
id: push
|
||||||
uses: docker/build-push-action@v7
|
uses: docker/build-push-action@v7
|
||||||
with:
|
with:
|
||||||
file: ${{ matrix.platform.dockerfile }}
|
file: ${{ matrix.platform.dockerfile }}
|
||||||
context: .
|
context: .
|
||||||
platforms: linux/amd64,linux/arm64
|
platforms: ${{ matrix.architecture.platform }}
|
||||||
push: true
|
outputs: type=image,name=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }},push-by-digest=true,name-canonical=true,push=true
|
||||||
tags: ${{ steps.meta.outputs.tags }}
|
|
||||||
labels: ${{ steps.meta.outputs.labels }}
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
provenance: mode=max
|
provenance: mode=max
|
||||||
sbom: true
|
sbom: true
|
||||||
|
- name: Export image digest
|
||||||
|
env:
|
||||||
|
DIGEST: ${{ steps.push.outputs.digest }}
|
||||||
|
run: |
|
||||||
|
mkdir -p "${RUNNER_TEMP}/digests"
|
||||||
|
touch "${RUNNER_TEMP}/digests/${DIGEST#sha256:}"
|
||||||
|
- name: Upload image digest
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: digests-${{ matrix.platform.dockerfile }}-${{ matrix.architecture.name }}
|
||||||
|
path: ${{ runner.temp }}/digests/*
|
||||||
|
if-no-files-found: error
|
||||||
|
retention-days: 1
|
||||||
|
|
||||||
|
publish-manifests:
|
||||||
|
needs: build-and-push-image
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
packages: write
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
platform:
|
||||||
|
- dockerfile: "Dockerfile"
|
||||||
|
tag-suffix: ""
|
||||||
|
- dockerfile: "Dockerfile.ios"
|
||||||
|
tag-suffix: "-ios"
|
||||||
|
- dockerfile: "Dockerfile.android"
|
||||||
|
tag-suffix: "-android"
|
||||||
|
steps:
|
||||||
|
- name: Download image digests
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
pattern: digests-${{ matrix.platform.dockerfile }}-*
|
||||||
|
path: ${{ runner.temp }}/digests
|
||||||
|
merge-multiple: true
|
||||||
|
- name: Log in to the Container registry
|
||||||
|
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
|
||||||
|
with:
|
||||||
|
registry: ${{ env.REGISTRY }}
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
- name: Extract metadata (tags, labels) for Docker
|
||||||
|
id: meta
|
||||||
|
uses: docker/metadata-action@v6
|
||||||
|
with:
|
||||||
|
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||||
|
flavor: |
|
||||||
|
latest=false
|
||||||
|
tags: |
|
||||||
|
type=raw,value=latest,enable={{ is_default_branch }},suffix=${{ matrix.platform.tag-suffix }}
|
||||||
|
type=raw,enable=${{ github.event_name == 'release' || github.ref_type == 'tag' }},value=stable,suffix=${{ matrix.platform.tag-suffix }}
|
||||||
|
type=raw,enable=${{ github.event_name == 'release' }},value=${{ github.event.release.tag_name }},suffix=${{ matrix.platform.tag-suffix }}
|
||||||
|
type=raw,enable=${{ github.ref_type == 'tag' }},value=${{ github.ref_name }},suffix=${{ matrix.platform.tag-suffix }}
|
||||||
|
type=sha,suffix=${{ matrix.platform.tag-suffix }}
|
||||||
|
type=sha,format=long,suffix=${{ matrix.platform.tag-suffix }}
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v4
|
||||||
|
- name: Publish multi-platform image
|
||||||
|
working-directory: ${{ runner.temp }}/digests
|
||||||
|
env:
|
||||||
|
METADATA_JSON: ${{ steps.meta.outputs.json }}
|
||||||
|
run: |
|
||||||
|
mapfile -t tags < <(jq -r '.tags[]' <<< "$METADATA_JSON")
|
||||||
|
tag_args=()
|
||||||
|
for tag in "${tags[@]}"; do
|
||||||
|
tag_args+=(--tag "$tag")
|
||||||
|
done
|
||||||
|
images=()
|
||||||
|
for digest in *; do
|
||||||
|
images+=("${REGISTRY}/${IMAGE_NAME}@sha256:${digest}")
|
||||||
|
done
|
||||||
|
test "${#images[@]}" -eq 2
|
||||||
|
docker buildx imagetools create "${tag_args[@]}" "${images[@]}"
|
||||||
|
docker buildx imagetools inspect "${tags[0]}"
|
||||||
@@ -16,7 +16,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']
|
python-version: ['3.10', '3.11', '3.12', '3.13', '3.14', '3.15']
|
||||||
env:
|
env:
|
||||||
# Takes precedence over .python-version, which otherwise makes `uv run`
|
# Takes precedence over .python-version, which otherwise makes `uv run`
|
||||||
# rebuild the venv with 3.10 and test every matrix entry on 3.10.
|
# rebuild the venv with 3.10 and test every matrix entry on 3.10.
|
||||||
|
|||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
# Create main image
|
# Create main image
|
||||||
FROM ubuntu:24.04 AS main
|
FROM ubuntu:24.04 AS main
|
||||||
COPY --from=ghcr.io/astral-sh/uv:0.11.8 /uv /uvx /usr/local/bin/
|
COPY --from=ghcr.io/astral-sh/uv:0.13.5 /uv /uvx /usr/local/bin/
|
||||||
|
|
||||||
LABEL org.opencontainers.image.url="https://mvt.re"
|
LABEL org.opencontainers.image.url="https://mvt.re"
|
||||||
LABEL org.opencontainers.image.documentation="https://docs.mvt.re"
|
LABEL org.opencontainers.image.documentation="https://docs.mvt.re"
|
||||||
@@ -62,4 +62,4 @@ WORKDIR /home/cases
|
|||||||
RUN echo 'echo "Mobile Verification Toolkit @ Docker\n------------------------------------\n\nYou can find information about how to use this image for Android (https://github.com/mvt-project/mvt/tree/master/docs/android) and iOS (https://github.com/mvt-project/mvt/tree/master/docs/ios) in the official docs of the project.\n"' >> ~/.bashrc \
|
RUN echo 'echo "Mobile Verification Toolkit @ Docker\n------------------------------------\n\nYou can find information about how to use this image for Android (https://github.com/mvt-project/mvt/tree/master/docs/android) and iOS (https://github.com/mvt-project/mvt/tree/master/docs/ios) in the official docs of the project.\n"' >> ~/.bashrc \
|
||||||
&& echo 'echo "Note that to perform the debug via USB you might need to give the Docker image access to the USB using \"docker run -it --privileged -v /dev/bus/usb:/dev/bus/usb mvt\" or, preferably, the \"--device=\" parameter.\n"' >> ~/.bashrc
|
&& echo 'echo "Note that to perform the debug via USB you might need to give the Docker image access to the USB using \"docker run -it --privileged -v /dev/bus/usb:/dev/bus/usb mvt\" or, preferably, the \"--device=\" parameter.\n"' >> ~/.bashrc
|
||||||
|
|
||||||
CMD /bin/bash
|
CMD [ "/bin/bash" ]
|
||||||
+3
-3
@@ -1,6 +1,6 @@
|
|||||||
# Create main image
|
# Create main image
|
||||||
FROM python:3.10.14-alpine3.20 AS main
|
FROM python:3.11.17-alpine3.23 AS main
|
||||||
COPY --from=ghcr.io/astral-sh/uv:0.11.8 /uv /uvx /usr/local/bin/
|
COPY --from=ghcr.io/astral-sh/uv:0.13.5 /uv /uvx /usr/local/bin/
|
||||||
|
|
||||||
LABEL org.opencontainers.image.url="https://mvt.re"
|
LABEL org.opencontainers.image.url="https://mvt.re"
|
||||||
LABEL org.opencontainers.image.documentation="https://docs.mvt.re"
|
LABEL org.opencontainers.image.documentation="https://docs.mvt.re"
|
||||||
@@ -8,7 +8,7 @@ LABEL org.opencontainers.image.source="https://github.com/mvt-project/mvt"
|
|||||||
LABEL org.opencontainers.image.title="Mobile Verification Toolkit (Android)"
|
LABEL org.opencontainers.image.title="Mobile Verification Toolkit (Android)"
|
||||||
LABEL org.opencontainers.image.description="MVT is a forensic tool to look for signs of infection in smartphone devices."
|
LABEL org.opencontainers.image.description="MVT is a forensic tool to look for signs of infection in smartphone devices."
|
||||||
LABEL org.opencontainers.image.licenses="MVT License 1.1"
|
LABEL org.opencontainers.image.licenses="MVT License 1.1"
|
||||||
LABEL org.opencontainers.image.base.name=docker.io/library/python:3.10.14-alpine3.20
|
LABEL org.opencontainers.image.base.name=docker.io/library/python:3.11.17-alpine3.23
|
||||||
|
|
||||||
# Install runtime dependencies
|
# Install runtime dependencies
|
||||||
RUN apk add --no-cache \
|
RUN apk add --no-cache \
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
# Main image
|
# Main image
|
||||||
# ----------
|
# ----------
|
||||||
FROM ubuntu:24.04 AS main
|
FROM ubuntu:24.04 AS main
|
||||||
COPY --from=ghcr.io/astral-sh/uv:0.11.8 /uv /uvx /usr/local/bin/
|
COPY --from=ghcr.io/astral-sh/uv:0.13.5 /uv /uvx /usr/local/bin/
|
||||||
|
|
||||||
LABEL org.opencontainers.image.url="https://mvt.re"
|
LABEL org.opencontainers.image.url="https://mvt.re"
|
||||||
LABEL org.opencontainers.image.documentation="https://docs.mvt.re"
|
LABEL org.opencontainers.image.documentation="https://docs.mvt.re"
|
||||||
|
|||||||
Reference in new issue
Block a user