diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index bb5b3fa..394b08a 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -12,94 +12,90 @@ on: env: DOCKER_IMAGE: frankescobar/allure-docker-service - ALLURE_RELEASE: 2.27.0 - QEMU_VERSION: v4.0.0 - DOCKER_CLI_EXPERIMENTAL: enabled + ALLURE_RELEASE: 2.35.1 jobs: build_release: runs-on: ubuntu-latest strategy: matrix: - ARCH: [amd64, arm32v7, arm64v8] + ARCH: [amd64, arm64, armv7] include: - ARCH: amd64 - DOCKER_FILE: Dockerfile.bionic - JDK: adoptopenjdk:11-jre-openj9-bionic - QEMU_ARCH: x86_64 + DOCKER_FILE: Dockerfile + DOCKER_PLATFORM: linux/amd64 + JDK: eclipse-temurin:11-jre-noble - - ARCH: arm32v7 - DOCKER_FILE: Dockerfile.bionic - JDK: adoptopenjdk:11-jdk-hotspot-bionic - QEMU_ARCH: arm + - ARCH: arm64 + DOCKER_FILE: Dockerfile + DOCKER_PLATFORM: linux/arm64 + JDK: eclipse-temurin:11-jre-noble - - ARCH: arm64v8 - DOCKER_FILE: Dockerfile.bionic - JDK: adoptopenjdk:11-jre-hotspot-bionic - QEMU_ARCH: aarch64 + - ARCH: armv7 + DOCKER_FILE: Dockerfile + DOCKER_PLATFORM: linux/arm/v7 + JDK: eclipse-temurin:11-jre-noble if: github.event_name == 'push' outputs: build_version: ${{ steps.prepare.outputs.build_version }} steps: - name: Pulling code - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Preparing id: prepare run: | echo "DOCKER BUILD: Build Docker image." - echo "DOCKER BUILD: arch - ${{matrix.ARCH}}." echo "DOCKER BUILD: jdk -> ${{matrix.JDK}}." - echo "DOCKER BUILD: build version -> ${VERSION}." echo "DOCKER BUILD: allure version -> ${ALLURE_RELEASE}." - echo "DOCKER BUILD: qemu arch - ${{matrix.QEMU_ARCH}}." - echo "DOCKER BUILD: docker file - ${{matrix.DOCKER_FILE}}." + echo "DOCKER BUILD: docker file - ${{matrix.DOCKER_FILE}}." VERSION=na - TAGS="--tag ${DOCKER_IMAGE}:build" + TAGS="--tag ${DOCKER_IMAGE}:build --tag ${DOCKER_IMAGE}:build-${{matrix.ARCH}}" if [[ $GITHUB_REF == refs/tags/* ]]; then VERSION=${GITHUB_REF#refs/tags/v} if [[ $GITHUB_REF == *"beta"* ]]; then - TAGS="--tag ${DOCKER_IMAGE}:${VERSION} --tag ${DOCKER_IMAGE}:${VERSION}-${{matrix.ARCH}} --tag ${DOCKER_IMAGE}:beta --tag ${DOCKER_IMAGE}:build" + TAGS="--tag ${DOCKER_IMAGE}:${VERSION} --tag ${DOCKER_IMAGE}:${VERSION}-${{matrix.ARCH}} --tag ${DOCKER_IMAGE}:beta --tag ${DOCKER_IMAGE}:build-${{matrix.ARCH}}" else - TAGS="--tag ${DOCKER_IMAGE}:${VERSION} --tag ${DOCKER_IMAGE}:${VERSION}-${{matrix.ARCH}} --tag ${DOCKER_IMAGE}:latest --tag ${DOCKER_IMAGE}:build" + TAGS="--tag ${DOCKER_IMAGE}:${VERSION} --tag ${DOCKER_IMAGE}:${VERSION}-${{matrix.ARCH}} --tag ${DOCKER_IMAGE}:latest --tag ${DOCKER_IMAGE}:build-${{matrix.ARCH}}" fi fi - echo ::set-output name=docker_image::${DOCKER_IMAGE} - echo ::set-output name=build_version::${VERSION} - echo ::set-output name=docker_args::--build-arg ARCH=${{matrix.ARCH}} \ + DOCKER_ARGS_STRING="\ --build-arg JDK=${{matrix.JDK}} \ - --build-arg QEMU_ARCH=${{matrix.QEMU_ARCH}} \ --build-arg BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') \ --build-arg BUILD_VERSION=${VERSION} \ --build-arg BUILD_REF=${GITHUB_SHA::8} \ --build-arg ALLURE_RELEASE=${ALLURE_RELEASE} \ - ${TAGS} --file docker/Dockerfile.bionic . + --platform ${{matrix.DOCKER_PLATFORM}} \ + ${TAGS} --file docker/Dockerfile ." + + echo "DOCKER BUILD: build version -> ${VERSION}." + echo "build_version=${VERSION}" >> $GITHUB_OUTPUT + echo "docker_args=${DOCKER_ARGS_STRING}" >> $GITHUB_OUTPUT - - name: Setting up QEMU - run: | - # Prepare qemu to build non amd64 / x86_64 images - docker run --rm --privileged multiarch/qemu-user-static:register --reset - mkdir tmp - pushd tmp && - curl -L -o qemu-x86_64-static.tar.gz https://github.com/multiarch/qemu-user-static/releases/download/$QEMU_VERSION/qemu-x86_64-static.tar.gz && tar xzf qemu-x86_64-static.tar.gz && - curl -L -o qemu-arm-static.tar.gz https://github.com/multiarch/qemu-user-static/releases/download/$QEMU_VERSION/qemu-arm-static.tar.gz && tar xzf qemu-arm-static.tar.gz && - curl -L -o qemu-aarch64-static.tar.gz https://github.com/multiarch/qemu-user-static/releases/download/$QEMU_VERSION/qemu-aarch64-static.tar.gz && tar xzf qemu-aarch64-static.tar.gz && - popd + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + with: + platforms: all + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v3 - name: Docker Building run: | - docker build --no-cache ${{ steps.prepare.outputs.docker_args }} + docker buildx build --no-cache ${{ steps.prepare.outputs.docker_args }} --load - name: Docker Testing run: | - echo "DOCKER TEST: Test Docker image." - echo "DOCKER TEST: testing image -> ${DOCKER_IMAGE}:build" + echo "DOCKER TEST: Test Docker image" + echo "DOCKER TEST: testing image -> ${DOCKER_IMAGE}:build-${{matrix.ARCH}}" - docker run -d --rm --name=testing ${DOCKER_IMAGE}:build + docker run --platform ${{matrix.DOCKER_PLATFORM}} -d --rm --name=testing-${{matrix.ARCH}} ${DOCKER_IMAGE}:build-${{matrix.ARCH}} if [ $? -ne 0 ]; then echo "DOCKER TEST: FAILED - Docker container testing failed to start." exit 1 @@ -110,7 +106,7 @@ jobs: - name: DockerHub Login if: success() && startsWith(github.ref, 'refs/tags/v') env: - DOCKER_HUB_USER: ${{ secrets.DOCKER_HUB_USER }} + DOCKER_HUB_USER: ${{ vars.DOCKER_HUB_USER }} DOCKER_HUB_PASS: ${{ secrets.DOCKER_HUB_PASS }} run: | echo "${DOCKER_HUB_PASS}" | docker login -u "${DOCKER_HUB_USER}" --password-stdin @@ -118,7 +114,7 @@ jobs: - name: Docker Publishing if: success() && startsWith(github.ref, 'refs/tags/v') run: | - echo "DOCKER PUSH: pushing - ${DOCKER_IMAGE}:${{ steps.prepare.outputs.build_version }}-${{matrix.ARCH}}." + echo "DOCKER PUSH: pushing - ${DOCKER_IMAGE}:${{ steps.prepare.outputs.build_version }}-${{matrix.ARCH}}" docker push ${DOCKER_IMAGE}:${{ steps.prepare.outputs.build_version }}-${{matrix.ARCH}} - name: Docker Logout @@ -133,7 +129,7 @@ jobs: - name: DockerHub Login if: success() && startsWith(github.ref, 'refs/tags/v') env: - DOCKER_HUB_USER: ${{ secrets.DOCKER_HUB_USER }} + DOCKER_HUB_USER: ${{ vars.DOCKER_HUB_USER }} DOCKER_HUB_PASS: ${{ secrets.DOCKER_HUB_PASS }} run: | echo "${DOCKER_HUB_PASS}" | docker login -u "${DOCKER_HUB_USER}" --password-stdin @@ -144,11 +140,11 @@ jobs: BUILD_VERSION=${{ needs.build_release.outputs.build_version }} docker manifest create ${DOCKER_IMAGE}:${BUILD_VERSION} \ ${DOCKER_IMAGE}:${BUILD_VERSION}-amd64 \ - ${DOCKER_IMAGE}:${BUILD_VERSION}-arm32v7 \ - ${DOCKER_IMAGE}:${BUILD_VERSION}-arm64v8 + ${DOCKER_IMAGE}:${BUILD_VERSION}-armv7 \ + ${DOCKER_IMAGE}:${BUILD_VERSION}-arm64 - docker manifest annotate ${DOCKER_IMAGE}:${BUILD_VERSION} ${DOCKER_IMAGE}:${BUILD_VERSION}-arm32v7 --os=linux --arch=arm --variant=v7 - docker manifest annotate ${DOCKER_IMAGE}:${BUILD_VERSION} ${DOCKER_IMAGE}:${BUILD_VERSION}-arm64v8 --os=linux --arch=arm64 --variant=v8 + docker manifest annotate ${DOCKER_IMAGE}:${BUILD_VERSION} ${DOCKER_IMAGE}:${BUILD_VERSION}-armv7 --os=linux --arch=arm --variant=v7 + docker manifest annotate ${DOCKER_IMAGE}:${BUILD_VERSION} ${DOCKER_IMAGE}:${BUILD_VERSION}-arm64 --os=linux --arch=arm64 --variant=v8 docker manifest push ${DOCKER_IMAGE}:${BUILD_VERSION} @@ -159,11 +155,11 @@ jobs: docker manifest create ${DOCKER_IMAGE}:${TAG} \ ${DOCKER_IMAGE}:${BUILD_VERSION}-amd64 \ - ${DOCKER_IMAGE}:${BUILD_VERSION}-arm32v7 \ - ${DOCKER_IMAGE}:${BUILD_VERSION}-arm64v8 + ${DOCKER_IMAGE}:${BUILD_VERSION}-armv7 \ + ${DOCKER_IMAGE}:${BUILD_VERSION}-arm64 - docker manifest annotate ${DOCKER_IMAGE}:${TAG} ${DOCKER_IMAGE}:${BUILD_VERSION}-arm32v7 --os=linux --arch=arm --variant=v7 - docker manifest annotate ${DOCKER_IMAGE}:${TAG} ${DOCKER_IMAGE}:${BUILD_VERSION}-arm64v8 --os=linux --arch=arm64 --variant=v8 + docker manifest annotate ${DOCKER_IMAGE}:${TAG} ${DOCKER_IMAGE}:${BUILD_VERSION}-armv7 --os=linux --arch=arm --variant=v7 + docker manifest annotate ${DOCKER_IMAGE}:${TAG} ${DOCKER_IMAGE}:${BUILD_VERSION}-arm64 --os=linux --arch=arm64 --variant=v8 docker manifest push ${DOCKER_IMAGE}:${TAG} diff --git a/README.md b/README.md index 4647425..d2d1546 100644 --- a/README.md +++ b/README.md @@ -91,19 +91,19 @@ Allure Docker Service supports architectures amd64, arm32v7 and arm64v8. The following table shows the variation of provided images. -|**Tag** |**Base Image** |**Arch** | **OS** | -|----------------|--------------------------------------------|---------|--------| -| 0.20.7-amd64 | amd64/adoptopenjdk:11-jre-openj9-bionic | amd64 | ubuntu | -| 0.20.7-arm32v7 | arm32v7/adoptopenjdk:11-jdk-hotspot-bionic | arm32v7 | ubuntu | -| 0.20.7-arm64v8 | arm64v8/adoptopenjdk:11-jre-hotspot-bionic | arm64v8 | ubuntu | +|**Base Image** |**Arch** | **OS** | +|--------------------------------------------|---------|--------| +| amd64/eclipse-temurin:11-jre-noble | amd64 | ubuntu | +| arm32v7/eclipse-temurin:11-jre-noble | armv7 | ubuntu | +| arm64/eclipse-temurin:11-jre-noble | arm64 | ubuntu | The following table shows the provided Manifest Lists. -| **Tag** | **allure-docker-service Base Image** | -|----------------------------------------|---------------------------------------------------| -| latest, 2.27.0 | frankescobar/allure-docker-service:2.27.0-amd64 | -| | frankescobar/allure-docker-service:2.27.0-arm32v7 | -| | frankescobar/allure-docker-service:2.27.0-arm64v8 | +| **Tag** | **allure-docker-service Base Image** | +|----------------------------------------|-------------------------------------------------| +| latest, 2.35.1 | frankescobar/allure-docker-service:2.35.1-amd64 | +| | frankescobar/allure-docker-service:2.35.1-armv7 | +| | frankescobar/allure-docker-service:2.35.1-arm64 | ## USAGE ### Generate Allure Results @@ -722,7 +722,7 @@ You can switch the version container using `frankescobar/allure-docker-service:$ Docker Compose example: ```sh allure: - image: "frankescobar/allure-docker-service:2.27.0" + image: "frankescobar/allure-docker-service:2.35.1" ``` or using latest version: @@ -1395,7 +1395,7 @@ docker-compose -f docker-compose-dev.yml up --build ``` ### Build image ```sh -docker build -t allure-release -f docker-custom/Dockerfile.bionic-custom --build-arg ALLURE_RELEASE=2.27.0 . +docker build --no-cache -t allure-release -f docker/Dockerfile --build-arg ALLURE_RELEASE=2.35.1 . ``` ### Run container ```sh @@ -1413,6 +1413,10 @@ docker exec -it ${CONTAINER_ID} bash ```sh docker exec -it ${CONTAINER_ID} tail -f log ``` +### Security scan +```sh +docker scout cves allure-release +``` ### Remove all containers ```sh docker container rm $(docker container ls -a -q) -f @@ -1446,5 +1450,5 @@ docker run -d -p 5050:5050 frankescobar/allure-docker-service ``` ### Download specific tagged image registered (Example) ```sh -docker run -d -p 5050:5050 frankescobar/allure-docker-service:2.27.0 +docker run -d -p 5050:5050 frankescobar/allure-docker-service:2.35.1 ``` diff --git a/deprecated/.travis.yml b/deprecated/.travis.yml deleted file mode 100644 index 557850b..0000000 --- a/deprecated/.travis.yml +++ /dev/null @@ -1,70 +0,0 @@ -sudo: required - -dist: xenial - -services: docker - -language: bash - -env: - global: - - ALLURE_RELEASE=2.17.X - - TARGET=frankescobar/allure-docker-service - - QEMU_VERSION=v4.0.0 - matrix: - - DOCKER_FILE=Dockerfile.bionic ARCH=amd64 JDK=adoptopenjdk:11-jre-openj9-bionic QEMU_ARCH=x86_64 - - DOCKER_FILE=Dockerfile.bionic ARCH=arm32v7 JDK=adoptopenjdk:11-jdk-hotspot-bionic QEMU_ARCH=arm - - DOCKER_FILE=Dockerfile.bionic ARCH=arm64v8 JDK=adoptopenjdk:11-jre-hotspot-bionic QEMU_ARCH=aarch64 - -before_install: - - ./docker/docker.sh prepare - -install: true - -before_script: - # Set BUILD_VERSION - - if [ ! -z "${TRAVIS_TAG}" ]; then export BUILD_VERSION=${TRAVIS_TAG:1}; else export BUILD_VERSION=beta; fi - -script: - # Build Docker image - - ./docker/docker.sh build - - # Test Docker image - - ./docker/docker.sh test - - # Push Docker image, ony if TRAVIS_TAG is set - - > - if [ ! -z "${TRAVIS_TAG}" ]; then - # Tag Docker image - ./docker/docker.sh tag - - # Docker Login - echo "${DOCKER_PASSWORD}" | docker login -u "${DOCKER_USERNAME}" --password-stdin - - # Push Docker image - ./docker/docker.sh push - - # Docker Logout - docker logout - fi - -jobs: - include: - - stage: manifest - # Only create and push manifest list to Docker Hub, when tag starts with a `v`, eg. v2.12.1 - if: tag =~ ^v - script: - # Create and push Docker manifest lists - # Docker Login - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - - # Create and Push Docker Manifest Lists to Docker Hub - - echo "Create manifest list for all docker images." - - ./docker/docker.sh manifest-list - - # Docker Logout - - docker logout - -# notify me when things fail -notifications: - email: true diff --git a/deprecated/docker.sh b/deprecated/docker.sh deleted file mode 100644 index 7609287..0000000 --- a/deprecated/docker.sh +++ /dev/null @@ -1,244 +0,0 @@ -#!/bin/bash - -set -o errexit - -main() { - case $1 in - "prepare") - docker_prepare - ;; - "build") - docker_build - ;; - "test") - docker_test - ;; - "tag") - docker_tag - ;; - "push") - docker_push - ;; - "manifest-list") - docker_manifest_list - ;; - *) - echo "none of above!" - esac -} - -docker_prepare() { - # Prepare the machine before any code installation scripts - setup_dependencies - - # Update docker configuration to enable docker manifest command - update_docker_configuration - - # Prepare qemu to build images other then x86_64 on travis - prepare_qemu -} - -docker_build() { - # Build Docker image - echo "DOCKER BUILD: Build Docker image." - echo "DOCKER BUILD: arch - ${ARCH}." - echo "DOCKER BUILD: jdk -> ${JDK}." - echo "DOCKER BUILD: build version -> ${BUILD_VERSION}." - echo "DOCKER BUILD: allure version -> ${ALLURE_RELEASE}." - echo "DOCKER BUILD: qemu arch - ${QEMU_ARCH}." - echo "DOCKER BUILD: docker file - ${DOCKER_FILE}." - - docker build --no-cache \ - --build-arg ARCH=${ARCH} \ - --build-arg JDK=${JDK} \ - --build-arg BUILD_DATE=$(date +"%Y-%m-%dT%H:%M:%SZ") \ - --build-arg BUILD_VERSION=${BUILD_VERSION} \ - --build-arg BUILD_REF=${TRAVIS_COMMIT} \ - --build-arg ALLURE_RELEASE=${ALLURE_RELEASE} \ - --build-arg QEMU_ARCH=${QEMU_ARCH} \ - --file ./docker/${DOCKER_FILE} \ - --tag ${TARGET}:build . -} - -docker_test() { - echo "DOCKER TEST: Test Docker image." - echo "DOCKER TEST: testing image -> ${TARGET}:build" - - docker run -d --rm --name=testing ${TARGET}:build - if [ $? -ne 0 ]; then - echo "DOCKER TEST: FAILED - Docker container testing failed to start." - exit 1 - else - echo "DOCKER TEST: PASSED - Docker container testing succeeded to start." - fi -} - -docker_tag() { - echo "DOCKER TAG: Tag Docker image." - - echo "DOCKER TAG: tagging image - ${TARGET}:${BUILD_VERSION}-${ARCH}." - docker tag ${TARGET}:build ${TARGET}:${BUILD_VERSION}-${ARCH} -} - -docker_push() { - echo "DOCKER PUSH: Push Docker image." - - echo "DOCKER PUSH: pushing - ${TARGET}:${BUILD_VERSION}-${ARCH}." - docker push ${TARGET}:${BUILD_VERSION}-${ARCH} -} - -docker_manifest_list() { - # Create and push manifest lists - echo "DOCKER MANIFEST: Create and Push docker manifest lists." - docker_manifest_list_version - - # Create manifest list beta or latest - case ${BUILD_VERSION} in - *"beta"*) - echo "DOCKER MANIFEST: Create and Push docker manifest list TESTING." - docker_manifest_list_beta;; - *) - echo "DOCKER MANIFEST: Create and Push docker manifest list LATEST." - docker_manifest_list_latest;; - esac - -# docker_manifest_list_version_os_arch -} - -docker_manifest_list_version() { - # Manifest Create BUILD_VERSION - echo "DOCKER MANIFEST: Create and Push docker manifest list - ${TARGET}:${BUILD_VERSION}." - docker manifest create ${TARGET}:${BUILD_VERSION} \ - ${TARGET}:${BUILD_VERSION}-amd64 \ - ${TARGET}:${BUILD_VERSION}-arm32v7 \ - ${TARGET}:${BUILD_VERSION}-arm64v8 - - # Manifest Annotate BUILD_VERSION - docker manifest annotate ${TARGET}:${BUILD_VERSION} ${TARGET}:${BUILD_VERSION}-arm32v7 --os=linux --arch=arm --variant=v7 - docker manifest annotate ${TARGET}:${BUILD_VERSION} ${TARGET}:${BUILD_VERSION}-arm64v8 --os=linux --arch=arm64 --variant=v8 - - # Manifest Push BUILD_VERSION - docker manifest push ${TARGET}:${BUILD_VERSION} -} - -docker_manifest_list_latest() { - # Manifest Create LATEST - echo "DOCKER MANIFEST: Create and Push docker manifest list - ${TARGET}:latest." - docker manifest create ${TARGET}:latest \ - ${TARGET}:${BUILD_VERSION}-amd64 \ - ${TARGET}:${BUILD_VERSION}-arm32v7 \ - ${TARGET}:${BUILD_VERSION}-arm64v8 - - # Manifest Annotate LATEST - docker manifest annotate ${TARGET}:latest ${TARGET}:${BUILD_VERSION}-arm32v7 --os=linux --arch=arm --variant=v7 - docker manifest annotate ${TARGET}:latest ${TARGET}:${BUILD_VERSION}-arm64v8 --os=linux --arch=arm64 --variant=v8 - - # Manifest Push LATEST - docker manifest push ${TARGET}:latest -} - -docker_manifest_list_beta() { - # Manifest Create BETA - echo "DOCKER MANIFEST: Create and Push docker manifest list - ${TARGET}:beta." - docker manifest create ${TARGET}:beta \ - ${TARGET}:${BUILD_VERSION}-amd64 \ - ${TARGET}:${BUILD_VERSION}-arm32v7 \ - ${TARGET}:${BUILD_VERSION}-arm64v8 - - # Manifest Annotate TESTING - docker manifest annotate ${TARGET}:beta ${TARGET}:${BUILD_VERSION}-arm32v7 --os=linux --arch=arm --variant=v7 - docker manifest annotate ${TARGET}:beta ${TARGET}:${BUILD_VERSION}-arm64v8 --os=linux --arch=arm64 --variant=v8 - - # Manifest Push TESTING - docker manifest push ${TARGET}:beta -} - -#docker_manifest_list_version_os_arch() { -# # Manifest Create alpine-amd64 -# echo "DOCKER MANIFEST: Create and Push docker manifest list - ${TARGET}:${BUILD_VERSION}-${NODE_VERSION}-alpine-amd64." -# docker manifest create ${TARGET}:${BUILD_VERSION}-${NODE_VERSION}-alpine-amd64 \ -# ${TARGET}:${BUILD_VERSION}-${NODE_VERSION}-alpine-amd64 -# -# # Manifest Push alpine-amd64 -# docker manifest push ${TARGET}:${BUILD_VERSION}-${NODE_VERSION}-alpine-amd64 -# -# # Manifest Create alpine-arm32v6 -# echo "DOCKER MANIFEST: Create and Push docker manifest list - ${TARGET}:${BUILD_VERSION}-${NODE_VERSION}-alpine-arm32v6." -# docker manifest create ${TARGET}:${BUILD_VERSION}-${NODE_VERSION}-alpine-arm32v6 \ -# ${TARGET}:${BUILD_VERSION}-${NODE_VERSION}-alpine-arm32v6 -# -# # Manifest Annotate alpine-arm32v6 -# docker manifest annotate ${TARGET}:${BUILD_VERSION}-${NODE_VERSION}-alpine-arm32v6 ${TARGET}:${BUILD_VERSION}-${NODE_VERSION}-alpine-arm32v6 --os=linux --arch=arm --variant=v6 -# -# # Manifest Push alpine-arm32v6 -# docker manifest push ${TARGET}:${BUILD_VERSION}-${NODE_VERSION}-alpine-arm32v6 -# -# # Manifest Create slim-arm32v7 -# echo "DOCKER MANIFEST: Create and Push docker manifest list - ${TARGET}:${BUILD_VERSION}-${NODE_VERSION}-slim-arm32v7." -# docker manifest create ${TARGET}:${BUILD_VERSION}-${NODE_VERSION}-slim-arm32v7 \ -# ${TARGET}:${BUILD_VERSION}-${NODE_VERSION}-slim-arm32v7 -# -# # Manifest Annotate slim-arm32v7 -# docker manifest annotate ${TARGET}:${BUILD_VERSION}-${NODE_VERSION}-slim-arm32v7 ${TARGET}:${BUILD_VERSION}-${NODE_VERSION}-slim-arm32v7 --os=linux --arch=arm --variant=v7 -# -# # Manifest Push slim-arm32v7 -# docker manifest push ${TARGET}:${BUILD_VERSION}-${NODE_VERSION}-slim-arm32v7 -# -# # Manifest Create alpine-arm64v8 -# echo "DOCKER MANIFEST: Create and Push docker manifest list - ${TARGET}:${BUILD_VERSION}-${NODE_VERSION}-alpine-arm64v8." -# docker manifest create ${TARGET}:${BUILD_VERSION}-${NODE_VERSION}-alpine-arm64v8 \ -# ${TARGET}:${BUILD_VERSION}-${NODE_VERSION}-alpine-arm64v8 -# -# # Manifest Annotate alpine-arm64v8 -# docker manifest annotate ${TARGET}:${BUILD_VERSION}-${NODE_VERSION}-alpine-arm64v8 ${TARGET}:${BUILD_VERSION}-${NODE_VERSION}-alpine-arm64v8 --os=linux --arch=arm64 --variant=v8 -# -# # Manifest Push alpine-arm64v8 -# docker manifest push ${TARGET}:${BUILD_VERSION}-${NODE_VERSION}-alpine-arm64v8 -#} - -setup_dependencies() { - echo "PREPARE: Setting up dependencies." - - sudo apt update -y - # sudo apt install realpath python python-pip -y - sudo apt install --only-upgrade docker-ce -y - # sudo pip install docker-compose || true - # - # docker info - # docker-compose --version -} - -update_docker_configuration() { - echo "PREPARE: Updating docker configuration" - - mkdir $HOME/.docker - - # enable experimental to use docker manifest command - echo '{ - "experimental": "enabled" - }' | tee $HOME/.docker/config.json - - # enable experimental - echo '{ - "experimental": true, - "storage-driver": "overlay2", - "max-concurrent-downloads": 50, - "max-concurrent-uploads": 50 - }' | sudo tee /etc/docker/daemon.json - - sudo service docker restart -} - -prepare_qemu(){ - echo "PREPARE: Qemu" - # Prepare qemu to build non amd64 / x86_64 images - docker run --rm --privileged multiarch/qemu-user-static:register --reset - mkdir tmp - pushd tmp && - curl -L -o qemu-x86_64-static.tar.gz https://github.com/multiarch/qemu-user-static/releases/download/$QEMU_VERSION/qemu-x86_64-static.tar.gz && tar xzf qemu-x86_64-static.tar.gz && - curl -L -o qemu-arm-static.tar.gz https://github.com/multiarch/qemu-user-static/releases/download/$QEMU_VERSION/qemu-arm-static.tar.gz && tar xzf qemu-arm-static.tar.gz && - curl -L -o qemu-aarch64-static.tar.gz https://github.com/multiarch/qemu-user-static/releases/download/$QEMU_VERSION/qemu-aarch64-static.tar.gz && tar xzf qemu-aarch64-static.tar.gz && - popd -} - -main $1 diff --git a/docker-compose-dev.yml b/docker-compose-dev.yml index c68736f..83acbb3 100644 --- a/docker-compose-dev.yml +++ b/docker-compose-dev.yml @@ -1,16 +1,17 @@ -version: '3' - volumes: allure-docker-service: driver: local services: allure-docker-service: + platform: linux/amd64 build: context: ../allure-docker-service - dockerfile: docker-custom/Dockerfile.bionic-custom + dockerfile: docker/Dockerfile args: - ALLURE_RELEASE: "2.27.0" + ALLURE_RELEASE: 2.35.1 + BUILD_VERSION: 2.35.1 + JDK: eclipse-temurin:11-jre-noble environment: DEV_MODE: 0 CHECK_RESULTS_EVERY_SECONDS: NONE diff --git a/docker-custom/Dockerfile.bionic-custom b/docker-custom/Dockerfile.bionic-custom deleted file mode 100644 index 57d8904..0000000 --- a/docker-custom/Dockerfile.bionic-custom +++ /dev/null @@ -1,132 +0,0 @@ -ARG ARCH=amd64 -ARG JDK=adoptopenjdk:11-jre-openj9-bionic -ARG BUILD_DATE -ARG BUILD_VERSION=2.27.0-custom -ARG BUILD_REF=na -ARG ALLURE_RELEASE=2.27.0 -ARG ALLURE_REPO=https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline -ARG UID=1000 -ARG GID=1000 -ARG PYTHON_VERSION=3.8 - -###### - -FROM python:${PYTHON_VERSION}-alpine AS dev_stage -RUN apk update -RUN apk add build-base -RUN pip install -U pylint -RUN pip install --upgrade pip setuptools wheel waitress && \ - pip install -Iv Flask==3.0.2 Flask-JWT-Extended==4.6.0 flask-swagger-ui==4.11.1 requests==2.31.0 - -ENV ROOT_DIR=/code -RUN mkdir -p $ROOT_DIR -WORKDIR $ROOT_DIR -COPY allure-docker-api $ROOT_DIR/allure-docker-api -RUN pylint --rcfile=allure-docker-api/.pylintrc allure-docker-api - -###### -FROM $ARCH/$JDK -ARG ARCH -ARG JDK -ARG BUILD_DATE -ARG BUILD_VERSION -ARG BUILD_REF -ARG ALLURE_RELEASE -ARG ALLURE_REPO -ARG UID -ARG GID -ARG PYTHON_VERSION=3.8 - -LABEL org.label-schema.build-date=${BUILD_DATE} \ - org.label-schema.docker.dockerfile="docker-custom/Dockerfile.bionic-custom" \ - org.label-schema.license="MIT" \ - org.label-schema.name="Allure Framework" \ - org.label-schema.version=${BUILD_VERSION} \ - org.label-schema.description="Allure Framework is a flexible lightweight multi-language test report tool." \ - org.label-schema.url="https://docs.qameta.io/allure/" \ - org.label-schema.vcs-ref=${BUILD_REF} \ - org.label-schema.vcs-type="Git" \ - org.label-schema.vcs-url="https://github.com/fescobar/allure-docker-service" \ - org.label-schema.arch=${ARCH} \ - authors="Frank Escobar , Raymond Mouthaan " -RUN apt-get update && \ - apt-get install -y software-properties-common && \ - add-apt-repository ppa:deadsnakes/ppa && \ - apt-get update && \ - apt-get install -y --no-install-recommends \ - tzdata \ - nano \ - python${PYTHON_VERSION} \ - python3-pip \ - unzip && \ - ln -s `which python3` /usr/bin/python && \ - pip3 install --upgrade pip && \ - python${PYTHON_VERSION} -m pip install --upgrade pip setuptools wheel waitress && \ - python${PYTHON_VERSION} -m pip install -v Flask==3.0.2 Flask-JWT-Extended==4.6.0 flask-swagger-ui==4.11.1 requests==2.31.0 && \ - curl ${ALLURE_REPO}/${ALLURE_RELEASE}/allure-commandline-${ALLURE_RELEASE}.zip -L -o /tmp/allure-commandline.zip && \ - unzip -q /tmp/allure-commandline.zip -d / && \ - apt-get remove -y unzip && \ - rm -rf /tmp/* && \ - rm -rf /var/lib/apt/lists/* && \ - chmod -R +x /allure-$ALLURE_RELEASE/bin && \ - mkdir -p /app - -RUN groupadd --gid ${GID} allure \ - && useradd --uid ${UID} --gid allure --shell /bin/bash --create-home allure - -ENV PYTHON_VERSION=${PYTHON_VERSION} -ENV ROOT=/app -ENV ALLURE_HOME=/allure-$ALLURE_RELEASE -ENV ALLURE_HOME_SL=/allure -ENV PATH=$PATH:$ALLURE_HOME/bin -ENV ALLURE_RESOURCES=$ROOT/resources -ENV RESULTS_DIRECTORY=$ROOT/allure-results -ENV REPORT_DIRECTORY=$ROOT/allure-report -ENV RESULTS_HISTORY=$RESULTS_DIRECTORY/history -ENV REPORT_HISTORY=$REPORT_DIRECTORY/history -ENV ALLURE_VERSION=$ROOT/version -ENV EMAILABLE_REPORT_FILE_NAME='emailable-report-allure-docker-service.html' -ENV STATIC_CONTENT=$ROOT/allure-docker-api/static -ENV STATIC_CONTENT_PROJECTS=$STATIC_CONTENT/projects -ENV DEFAULT_PROJECT=default -ENV DEFAULT_PROJECT_ROOT=$STATIC_CONTENT_PROJECTS/$DEFAULT_PROJECT -ENV DEFAULT_PROJECT_RESULTS=$DEFAULT_PROJECT_ROOT/results -ENV DEFAULT_PROJECT_REPORTS=$DEFAULT_PROJECT_ROOT/reports -ENV EXECUTOR_FILENAME=executor.json - -RUN echo -n $(allure --version) > ${ALLURE_VERSION} && \ - echo "ALLURE_VERSION: "$(cat ${ALLURE_VERSION}) && \ - mkdir $ALLURE_HOME_SL && \ - ln -s $ALLURE_HOME/* $ALLURE_HOME_SL && \ - ln -s $STATIC_CONTENT_PROJECTS $ROOT/projects && \ - ln -s $DEFAULT_PROJECT_REPORTS $ROOT/default-reports - -WORKDIR $ROOT -COPY --chown=allure:allure allure-docker-api $ROOT/allure-docker-api -COPY --chown=allure:allure allure-docker-scripts $ROOT/ -RUN chmod +x $ROOT/*.sh && \ - mkdir $RESULTS_DIRECTORY && \ - mkdir -p $DEFAULT_PROJECT_REPORTS/latest && \ - ln -sf $RESULTS_DIRECTORY $DEFAULT_PROJECT_RESULTS && \ - ln -sf $DEFAULT_PROJECT_REPORTS/latest $REPORT_DIRECTORY && \ - allure generate -c -o /tmp/resources && \ - mkdir $ALLURE_RESOURCES && \ - cp /tmp/resources/app.js $ALLURE_RESOURCES && \ - cp /tmp/resources/styles.css $ALLURE_RESOURCES - -RUN chown -R allure:allure $ROOT - -VOLUME [ "$RESULTS_DIRECTORY" ] - -ENV DEPRECATED_PORT=4040 -ENV PORT=5050 - -EXPOSE $DEPRECATED_PORT -EXPOSE $PORT - -HEALTHCHECK --interval=10s --timeout=60s --retries=3 \ - CMD curl -f http://localhost:$PORT || exit 1 - -USER allure - -CMD $ROOT/runAllureDeprecated.sh & $ROOT/runAllureApp.sh & $ROOT/checkAllureResultsFiles.sh diff --git a/docker-custom/README.md b/docker-custom/README.md deleted file mode 100644 index 5a161ab..0000000 --- a/docker-custom/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Build custom image - -To build your custom image execute the following command from the root of the project. - -```shell script -docker build --no-cache --build-arg BUILD_DATE=$(date +"%Y-%m-%dT%H:%M:%SZ") --file ./docker-custom/Dockerfile.bionic-custom --tag allure-docker-service:build . -``` - -To customize your image, modify the `Dockerfile.bionic-custom` as needed and (re-)run the command. - -__note:__ the `Dockerfile.bionic-custom` has default arguments set, which you can change in the Dockerfile.bionic-custom or override by --build-arg. \ No newline at end of file diff --git a/docker/Dockerfile.bionic b/docker/Dockerfile similarity index 72% rename from docker/Dockerfile.bionic rename to docker/Dockerfile index 6b87181..5d1a12e 100644 --- a/docker/Dockerfile.bionic +++ b/docker/Dockerfile @@ -1,14 +1,12 @@ -ARG ARCH=amd64 -ARG JDK=adoptopenjdk:11-jre-openj9-bionic +ARG JDK=eclipse-temurin:11-jre-noble ARG BUILD_DATE ARG BUILD_VERSION ARG BUILD_REF ARG ALLURE_RELEASE=NONE ARG ALLURE_REPO=https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline -ARG QEMU_ARCH ARG UID=1000 ARG GID=1000 -ARG PYTHON_VERSION=3.8 +ARG PYTHON_VERSION=3.13 ###### @@ -16,8 +14,8 @@ FROM python:${PYTHON_VERSION}-alpine AS dev_stage RUN apk update RUN apk add build-base RUN pip install -U pylint -RUN pip install --upgrade pip setuptools wheel waitress && \ - pip install -Iv Flask==3.0.2 Flask-JWT-Extended==4.6.0 flask-swagger-ui==4.11.1 requests==2.31.0 +RUN pip install --upgrade pip==25.2 setuptools==80.9.0 wheel==0.45.1 waitress==3.0.2 && \ + pip install -Iv Flask==3.1.2 Flask-JWT-Extended==4.7.1 flask-swagger-ui==4.11.1 requests==2.32.5 ENV ROOT_DIR=/code RUN mkdir -p $ROOT_DIR @@ -26,21 +24,19 @@ COPY allure-docker-api $ROOT_DIR/allure-docker-api RUN pylint --rcfile=allure-docker-api/.pylintrc allure-docker-api ###### -FROM $ARCH/$JDK -ARG ARCH +FROM --platform=$BUILDPLATFORM $JDK ARG JDK ARG BUILD_DATE ARG BUILD_VERSION ARG BUILD_REF ARG ALLURE_RELEASE ARG ALLURE_REPO -ARG QEMU_ARCH ARG UID ARG GID -ARG PYTHON_VERSION=3.8 +ARG PYTHON_VERSION=3.13 LABEL org.label-schema.build-date=${BUILD_DATE} \ - org.label-schema.docker.dockerfile="docker/Dockerfile.bionic" \ + org.label-schema.docker.dockerfile="docker/Dockerfile" \ org.label-schema.license="MIT" \ org.label-schema.name="Allure Framework" \ org.label-schema.version=${BUILD_VERSION} \ @@ -49,11 +45,8 @@ LABEL org.label-schema.build-date=${BUILD_DATE} \ org.label-schema.vcs-ref=${BUILD_REF} \ org.label-schema.vcs-type="Git" \ org.label-schema.vcs-url="https://github.com/fescobar/allure-docker-service" \ - org.label-schema.arch=${ARCH} \ - authors="Frank Escobar , Raymond Mouthaan " - -# QEMU - Quick Emulation -COPY tmp/qemu-$QEMU_ARCH-static /usr/bin/qemu-$QEMU_ARCH-static + org.label-schema.arch=${BUILDPLATFORM} \ + authors="Frank Escobar " RUN apt-get update && \ apt-get install -y software-properties-common && \ @@ -63,13 +56,16 @@ RUN apt-get update && \ tzdata \ nano \ python${PYTHON_VERSION} \ - python3-pip \ - python3-dev \ unzip && \ ln -s `which python3` /usr/bin/python && \ - pip3 install --upgrade pip && \ - python${PYTHON_VERSION} -m pip install --upgrade pip setuptools wheel waitress && \ - python${PYTHON_VERSION} -m pip install -v Flask==3.0.2 Flask-JWT-Extended==4.6.0 flask-swagger-ui==4.11.1 requests==2.31.0 && \ + apt-get purge python3-cryptography -y && \ + apt-get autoremove -y && \ + wget https://bootstrap.pypa.io/get-pip.py && \ + sed -i "s/\"--force-reinstall\"/\"--force-reinstall\", \"--break-system-packages\"/g" get-pip.py && \ + python${PYTHON_VERSION} get-pip.py && \ + python${PYTHON_VERSION} -m pip config set global.break-system-packages true && \ + python${PYTHON_VERSION} -m pip install setuptools==80.9.0 wheel==0.45.1 waitress==3.0.2 pipdeptree==2.29.0 cffi==2.0.0 cryptography==46.0.3 && \ + python${PYTHON_VERSION} -m pip install --ignore-installed --upgrade Flask==3.1.2 Flask-JWT-Extended==4.7.1 flask-swagger-ui==4.11.1 requests==2.32.5 && \ curl ${ALLURE_REPO}/${ALLURE_RELEASE}/allure-commandline-${ALLURE_RELEASE}.zip -L -o /tmp/allure-commandline.zip && \ unzip -q /tmp/allure-commandline.zip -d / && \ apt-get remove -y unzip && \ @@ -78,8 +74,9 @@ RUN apt-get update && \ chmod -R +x /allure-$ALLURE_RELEASE/bin && \ mkdir -p /app -RUN groupadd --gid ${GID} allure \ - && useradd --uid ${UID} --gid allure --shell /bin/bash --create-home allure +RUN usermod -l allure $(getent passwd ${UID} | cut -d: -f1) +RUN mkdir -p /home/allure && \ + chown -R ${UID}:${GID} /home/allure ENV PYTHON_VERSION=${PYTHON_VERSION} ENV ROOT=/app @@ -109,8 +106,8 @@ RUN echo -n $(allure --version) > ${ALLURE_VERSION} && \ ln -s $DEFAULT_PROJECT_REPORTS $ROOT/default-reports WORKDIR $ROOT -COPY --chown=allure:allure allure-docker-api $ROOT/allure-docker-api -COPY --chown=allure:allure allure-docker-scripts $ROOT/ +COPY --chown=${UID}:${GID} allure-docker-api $ROOT/allure-docker-api +COPY --chown=${UID}:${GID} allure-docker-scripts $ROOT/ RUN chmod +x $ROOT/*.sh && \ mkdir $RESULTS_DIRECTORY && \ mkdir -p $DEFAULT_PROJECT_REPORTS/latest && \ @@ -121,7 +118,7 @@ RUN chmod +x $ROOT/*.sh && \ cp /tmp/resources/app.js $ALLURE_RESOURCES && \ cp /tmp/resources/styles.css $ALLURE_RESOURCES -RUN chown -R allure:allure $ROOT +RUN chown -R ${UID}:${GID} $ROOT VOLUME [ "$RESULTS_DIRECTORY" ]