diff --git a/.drone.jsonnet b/.drone.jsonnet deleted file mode 100644 index fa93c74..0000000 --- a/.drone.jsonnet +++ /dev/null @@ -1,195 +0,0 @@ -local PipelineTest = { - kind: 'pipeline', - name: 'test', - platform: { - os: 'linux', - arch: 'amd64', - }, - steps: [ - { - name: 'markdownlint', - image: 'thegeeklab/markdownlint-cli', - commands: [ - "markdownlint 'README.md'", - ], - }, - ], - trigger: { - ref: ['refs/heads/main', 'refs/tags/**', 'refs/pull/**'], - }, -}; - -local PipelineBuildContainer(arch='amd64') = { - kind: 'pipeline', - name: 'build-container-' + std.split(arch, '_')[0], - platform: { - os: 'linux', - arch: 'amd64', - }, - steps: [ - { - name: 'tags', - image: 'thegeeklab/docker-autotag', - environment: { - DOCKER_AUTOTAG_FORCE_LATEST: 'True', - DOCKER_AUTOTAG_IGNORE_PRERELEASE: 'True', - DOCKER_AUTOTAG_OUTPUT_FILE: '.tags', - DOCKER_AUTOTAG_VERSION: '${DRONE_TAG}', - DOCKER_AUTOTAG_SUFFIX: std.split(arch, '_')[0], - }, - }, - { - name: 'dryrun', - image: 'thegeeklab/drone-docker-buildx:20', - settings: { - dry_run: true, - dockerfile: 'Dockerfile.' + std.split(arch, '_')[0], - platforms: [ - 'linux/' + std.strReplace(arch, '_', '/'), - ], - repo: 'thegeeklab/${DRONE_REPO_NAME}', - }, - depends_on: ['tags'], - when: { - ref: ['refs/pull/**'], - }, - }, - { - name: 'publish-dockerhub', - image: 'thegeeklab/drone-docker-buildx:20', - settings: { - dockerfile: 'Dockerfile.' + std.split(arch, '_')[0], - repo: 'thegeeklab/${DRONE_REPO_NAME}', - username: { from_secret: 'docker_username' }, - password: { from_secret: 'docker_password' }, - }, - when: { - ref: ['refs/heads/main', 'refs/tags/**'], - }, - depends_on: ['tags'], - }, - { - name: 'publish-quay', - image: 'thegeeklab/drone-docker-buildx:20', - settings: { - dockerfile: 'Dockerfile.' + std.split(arch, '_')[0], - registry: 'quay.io', - repo: 'quay.io/thegeeklab/${DRONE_REPO_NAME}', - username: { from_secret: 'quay_username' }, - password: { from_secret: 'quay_password' }, - }, - when: { - ref: ['refs/heads/main', 'refs/tags/**'], - }, - depends_on: ['tags'], - }, - ], - depends_on: [ - 'test', - ], - trigger: { - ref: ['refs/heads/main', 'refs/tags/**', 'refs/pull/**'], - }, -}; - -local PipelineNotifications = { - kind: 'pipeline', - name: 'notifications', - platform: { - os: 'linux', - arch: 'amd64', - }, - steps: [ - { - image: 'plugins/manifest', - name: 'manifest-dockerhub', - settings: { - ignore_missing: true, - username: { from_secret: 'docker_username' }, - password: { from_secret: 'docker_password' }, - spec: 'manifest.tmpl', - }, - when: { - status: ['success'], - }, - }, - { - image: 'plugins/manifest', - name: 'manifest-quay', - settings: { - ignore_missing: true, - username: { from_secret: 'quay_username' }, - password: { from_secret: 'quay_password' }, - spec: 'manifest-quay.tmpl', - }, - when: { - status: ['success'], - }, - }, - { - name: 'pushrm-dockerhub', - pull: 'always', - image: 'chko/docker-pushrm:1', - environment: { - DOCKER_PASS: { - from_secret: 'docker_password', - }, - DOCKER_USER: { - from_secret: 'docker_username', - }, - PUSHRM_FILE: 'README.md', - PUSHRM_SHORT: 'Custom image for nginx HTTP server', - PUSHRM_TARGET: 'thegeeklab/${DRONE_REPO_NAME}', - }, - when: { - status: ['success'], - }, - }, - { - name: 'pushrm-quay', - pull: 'always', - image: 'chko/docker-pushrm:1', - environment: { - APIKEY__QUAY_IO: { - from_secret: 'quay_token', - }, - PUSHRM_FILE: 'README.md', - PUSHRM_TARGET: 'quay.io/thegeeklab/${DRONE_REPO_NAME}', - }, - when: { - status: ['success'], - }, - }, - { - name: 'matrix', - image: 'thegeeklab/drone-matrix', - settings: { - homeserver: { from_secret: 'matrix_homeserver' }, - roomid: { from_secret: 'matrix_roomid' }, - template: 'Status: **{{ build.Status }}**
Build: [{{ repo.Owner }}/{{ repo.Name }}]({{ build.Link }}){{#if build.Branch}} ({{ build.Branch }}){{/if}} by {{ commit.Author }}
Message: {{ commit.Message.Title }}', - username: { from_secret: 'matrix_username' }, - password: { from_secret: 'matrix_password' }, - }, - when: { - status: ['success', 'failure'], - }, - }, - ], - depends_on: [ - 'build-container-amd64', - 'build-container-arm64', - 'build-container-arm', - ], - trigger: { - ref: ['refs/heads/main', 'refs/tags/**'], - status: ['success', 'failure'], - }, -}; - -[ - PipelineTest, - PipelineBuildContainer(arch='amd64'), - PipelineBuildContainer(arch='arm64_v8'), - PipelineBuildContainer(arch='arm_v7'), - PipelineNotifications, -] diff --git a/.drone.yml b/.drone.yml index 2cc56f5..3e3b112 100644 --- a/.drone.yml +++ b/.drone.yml @@ -20,7 +20,7 @@ trigger: --- kind: pipeline -name: build-container-amd64 +name: build-container platform: os: linux @@ -33,165 +33,21 @@ steps: DOCKER_AUTOTAG_FORCE_LATEST: True DOCKER_AUTOTAG_IGNORE_PRERELEASE: True DOCKER_AUTOTAG_OUTPUT_FILE: .tags - DOCKER_AUTOTAG_SUFFIX: amd64 DOCKER_AUTOTAG_VERSION: ${DRONE_TAG} - name: dryrun image: thegeeklab/drone-docker-buildx:20 settings: - dockerfile: Dockerfile.amd64 + dockerfile: Dockerfile.multiarch dry_run: true platforms: - linux/amd64 - repo: thegeeklab/${DRONE_REPO_NAME} - when: - ref: - - refs/pull/** - depends_on: - - tags - - - name: publish-dockerhub - image: thegeeklab/drone-docker-buildx:20 - settings: - dockerfile: Dockerfile.amd64 - password: - from_secret: docker_password - repo: thegeeklab/${DRONE_REPO_NAME} - username: - from_secret: docker_username - when: - ref: - - refs/heads/main - - refs/tags/** - depends_on: - - tags - - - name: publish-quay - image: thegeeklab/drone-docker-buildx:20 - settings: - dockerfile: Dockerfile.amd64 - password: - from_secret: quay_password - registry: quay.io - repo: quay.io/thegeeklab/${DRONE_REPO_NAME} - username: - from_secret: quay_username - when: - ref: - - refs/heads/main - - refs/tags/** - depends_on: - - tags - -trigger: - ref: - - refs/heads/main - - refs/tags/** - - refs/pull/** - -depends_on: - - test - ---- -kind: pipeline -name: build-container-arm64 - -platform: - os: linux - arch: amd64 - -steps: - - name: tags - image: thegeeklab/docker-autotag - environment: - DOCKER_AUTOTAG_FORCE_LATEST: True - DOCKER_AUTOTAG_IGNORE_PRERELEASE: True - DOCKER_AUTOTAG_OUTPUT_FILE: .tags - DOCKER_AUTOTAG_SUFFIX: arm64 - DOCKER_AUTOTAG_VERSION: ${DRONE_TAG} - - - name: dryrun - image: thegeeklab/drone-docker-buildx:20 - settings: - dockerfile: Dockerfile.arm64 - dry_run: true - platforms: - - linux/arm64/v8 - repo: thegeeklab/${DRONE_REPO_NAME} - when: - ref: - - refs/pull/** - depends_on: - - tags - - - name: publish-dockerhub - image: thegeeklab/drone-docker-buildx:20 - settings: - dockerfile: Dockerfile.arm64 - password: - from_secret: docker_password - repo: thegeeklab/${DRONE_REPO_NAME} - username: - from_secret: docker_username - when: - ref: - - refs/heads/main - - refs/tags/** - depends_on: - - tags - - - name: publish-quay - image: thegeeklab/drone-docker-buildx:20 - settings: - dockerfile: Dockerfile.arm64 - password: - from_secret: quay_password - registry: quay.io - repo: quay.io/thegeeklab/${DRONE_REPO_NAME} - username: - from_secret: quay_username - when: - ref: - - refs/heads/main - - refs/tags/** - depends_on: - - tags - -trigger: - ref: - - refs/heads/main - - refs/tags/** - - refs/pull/** - -depends_on: - - test - ---- -kind: pipeline -name: build-container-arm - -platform: - os: linux - arch: amd64 - -steps: - - name: tags - image: thegeeklab/docker-autotag - environment: - DOCKER_AUTOTAG_FORCE_LATEST: True - DOCKER_AUTOTAG_IGNORE_PRERELEASE: True - DOCKER_AUTOTAG_OUTPUT_FILE: .tags - DOCKER_AUTOTAG_SUFFIX: arm - DOCKER_AUTOTAG_VERSION: ${DRONE_TAG} - - - name: dryrun - image: thegeeklab/drone-docker-buildx:20 - settings: - dockerfile: Dockerfile.arm - dry_run: true - platforms: + - linux/arm64 - linux/arm/v7 + - linux/arm/v6 + provenance: false repo: thegeeklab/${DRONE_REPO_NAME} + provenance: false when: ref: - refs/pull/** @@ -201,35 +57,49 @@ steps: - name: publish-dockerhub image: thegeeklab/drone-docker-buildx:20 settings: - dockerfile: Dockerfile.arm + dockerfile: Dockerfile.multiarch password: from_secret: docker_password + platforms: + - linux/amd64 + - linux/arm64 + - linux/arm/v7 + - linux/arm/v6 + provenance: false repo: thegeeklab/${DRONE_REPO_NAME} username: from_secret: docker_username + provenance: false when: ref: - refs/heads/main - refs/tags/** depends_on: - - tags + - dryrun - name: publish-quay image: thegeeklab/drone-docker-buildx:20 settings: - dockerfile: Dockerfile.arm + dockerfile: Dockerfile.multiarch password: from_secret: quay_password + platforms: + - linux/amd64 + - linux/arm64 + - linux/arm/v7 + - linux/arm/v6 + provenance: false registry: quay.io repo: quay.io/thegeeklab/${DRONE_REPO_NAME} username: from_secret: quay_username + provenance: false when: ref: - refs/heads/main - refs/tags/** depends_on: - - tags + - dryrun trigger: ref: @@ -249,34 +119,7 @@ platform: arch: amd64 steps: - - name: manifest-dockerhub - image: plugins/manifest - settings: - ignore_missing: true - password: - from_secret: docker_password - spec: manifest.tmpl - username: - from_secret: docker_username - when: - status: - - success - - - name: manifest-quay - image: plugins/manifest - settings: - ignore_missing: true - password: - from_secret: quay_password - spec: manifest-quay.tmpl - username: - from_secret: quay_username - when: - status: - - success - - name: pushrm-dockerhub - pull: always image: chko/docker-pushrm:1 environment: DOCKER_PASS: @@ -291,7 +134,6 @@ steps: - success - name: pushrm-quay - pull: always image: chko/docker-pushrm:1 environment: APIKEY__QUAY_IO: @@ -328,12 +170,10 @@ trigger: - failure depends_on: - - build-container-amd64 - - build-container-arm64 - - build-container-arm + - build-container --- kind: signature -hmac: 520ad7bace767f38980a5e1c8a47c547dbd49a5e2f4260dfa0616c7f9d6964ee +hmac: 87845c95059571090b23b0b6efdb5479541a1a229007e55dc3a4bc31c38c6626 ... diff --git a/Dockerfile.arm b/Dockerfile.arm deleted file mode 100644 index 3bb6392..0000000 --- a/Dockerfile.arm +++ /dev/null @@ -1,60 +0,0 @@ -FROM arm32v7/alpine:3.17@sha256:1c34b3cb760a98c23361d919357b99fa497074576c898e7289425d45ef67b46a - -LABEL maintainer="Robert Kaussow " -LABEL org.opencontainers.image.authors="Robert Kaussow " -LABEL org.opencontainers.image.title="nginx" -LABEL org.opencontainers.image.url="https://gitea.rknet.org/docker/nginx" -LABEL org.opencontainers.image.source="https://gitea.rknet.org/docker/nginx" -LABEL org.opencontainers.image.documentation="https://gitea.rknet.org/docker/nginx" - -ARG GOMPLATE_VERSION -ARG SUPERCRONIC_VERSION -ARG URL_PARSER_VERSION -ARG WAIT_FOR_VERSION -ARG CONTAINER_LIBRARY - -# renovate: datasource=github-releases depName=hairyhenderson/gomplate -ENV GOMPLATE_VERSION="${GOMPLATE_VERSION:-v3.11.3}" -# renovate: datasource=github-releases depName=aptible/supercronic -ENV SUPERCRONIC_VERSION="${SUPERCRONIC_VERSION:-v0.2.1}" -# renovate: datasource=github-releases depName=thegeeklab/url-parser -ENV URL_PARSER_VERSION="${URL_PARSER_VERSION:-v1.0.1}" -# renovate: datasource=github-releases depName=thegeeklab/wait-for -ENV WAIT_FOR_VERSION="${WAIT_FOR_VERSION:-v0.3.0}" -# renovate: datasource=git-tags depName=https://gitea.rknet.org/docker/container-library -ENV CONTAINER_LIBRARY="${CONTAINER_LIBRARY:-v0.1.3}" - -RUN addgroup -g 101 -S nginx && \ - adduser -S -D -H -u 101 -h /var/www -s /sbin/nologin -G nginx -g nginx nginx && \ - apk --update add --virtual .build-deps curl && \ - apk --update --no-cache add nginx ca-certificates && \ - rm -rf /var/www/localhost && \ - rm -rf /etc/nginx/conf.d && \ - curl -SsfL "https://gitea.rknet.org/docker/container-library/releases/download/${CONTAINER_LIBRARY}/container-library.tar.gz" | tar xz -C / && \ - curl -SsfL -o /usr/local/bin/gomplate "https://github.com/hairyhenderson/gomplate/releases/download/${GOMPLATE_VERSION}/gomplate_linux-armv7" && \ - curl -SsfL -o /usr/local/bin/supercronic "https://github.com/aptible/supercronic/releases/download/${SUPERCRONIC_VERSION}/supercronic-linux-arm" && \ - curl -SsfL -o /usr/local/bin/url-parser "https://github.com/thegeeklab/url-parser/releases/download/${URL_PARSER_VERSION}/url-parser-linux-arm-7" && \ - curl -SsfL -o /usr/local/bin/wait-for "https://github.com/thegeeklab/wait-for/releases/download/${WAIT_FOR_VERSION}/wait-for" && \ - chmod 755 /usr/local/bin/gomplate && \ - chmod 755 /usr/local/bin/supercronic && \ - chmod 755 /usr/local/bin/url-parser && \ - chmod 755 /usr/local/bin/wait-for && \ - touch /run/nginx.pid && \ - chown nginx /run/nginx.pid && \ - chown -R nginx /var/log/nginx && \ - mkdir -p /var/cache/nginx && \ - chown -R nginx /var/cache/nginx && \ - chmod -R 750 /var/cache/nginx && \ - chown -R nginx:nginx /var/www && \ - chmod -R 750 /var/www && \ - apk del .build-deps && \ - rm -rf /var/cache/apk/* && \ - rm -rf /tmp/* - -ADD overlay/ / - -EXPOSE 8080 - -STOPSIGNAL SIGTERM - -CMD ["nginx", "-g", "daemon off;"] diff --git a/Dockerfile.arm64 b/Dockerfile.arm64 deleted file mode 100644 index 5383468..0000000 --- a/Dockerfile.arm64 +++ /dev/null @@ -1,60 +0,0 @@ -FROM arm64v8/alpine:3.17@sha256:41d876d4e44348d1c27445fdb0e64592e0eb926d4dbbcf09a3526dee7e628329 - -LABEL maintainer="Robert Kaussow " -LABEL org.opencontainers.image.authors="Robert Kaussow " -LABEL org.opencontainers.image.title="nginx" -LABEL org.opencontainers.image.url="https://gitea.rknet.org/docker/nginx" -LABEL org.opencontainers.image.source="https://gitea.rknet.org/docker/nginx" -LABEL org.opencontainers.image.documentation="https://gitea.rknet.org/docker/nginx" - -ARG GOMPLATE_VERSION -ARG SUPERCRONIC_VERSION -ARG URL_PARSER_VERSION -ARG WAIT_FOR_VERSION -ARG CONTAINER_LIBRARY - -# renovate: datasource=github-releases depName=hairyhenderson/gomplate -ENV GOMPLATE_VERSION="${GOMPLATE_VERSION:-v3.11.3}" -# renovate: datasource=github-releases depName=aptible/supercronic -ENV SUPERCRONIC_VERSION="${SUPERCRONIC_VERSION:-v0.2.1}" -# renovate: datasource=github-releases depName=thegeeklab/url-parser -ENV URL_PARSER_VERSION="${URL_PARSER_VERSION:-v1.0.1}" -# renovate: datasource=github-releases depName=thegeeklab/wait-for -ENV WAIT_FOR_VERSION="${WAIT_FOR_VERSION:-v0.3.0}" -# renovate: datasource=git-tags depName=https://gitea.rknet.org/docker/container-library -ENV CONTAINER_LIBRARY="${CONTAINER_LIBRARY:-v0.1.3}" - -RUN addgroup -g 101 -S nginx && \ - adduser -S -D -H -u 101 -h /var/www -s /sbin/nologin -G nginx -g nginx nginx && \ - apk --update add --virtual .build-deps curl && \ - apk --update --no-cache add nginx ca-certificates && \ - rm -rf /var/www/localhost && \ - rm -rf /etc/nginx/conf.d && \ - curl -SsfL "https://gitea.rknet.org/docker/container-library/releases/download/${CONTAINER_LIBRARY}/container-library.tar.gz" | tar xz -C / && \ - curl -SsfL -o /usr/local/bin/gomplate "https://github.com/hairyhenderson/gomplate/releases/download/${GOMPLATE_VERSION}/gomplate_linux-arm64" && \ - curl -SsfL -o /usr/local/bin/supercronic "https://github.com/aptible/supercronic/releases/download/${SUPERCRONIC_VERSION}/supercronic-linux-arm64" && \ - curl -SsfL -o /usr/local/bin/url-parser "https://github.com/thegeeklab/url-parser/releases/download/${URL_PARSER_VERSION}/url-parser-linux-arm64" && \ - curl -SsfL -o /usr/local/bin/wait-for "https://github.com/thegeeklab/wait-for/releases/download/${WAIT_FOR_VERSION}/wait-for" && \ - chmod 755 /usr/local/bin/gomplate && \ - chmod 755 /usr/local/bin/supercronic && \ - chmod 755 /usr/local/bin/url-parser && \ - chmod 755 /usr/local/bin/wait-for && \ - touch /run/nginx.pid && \ - chown nginx /run/nginx.pid && \ - chown -R nginx /var/log/nginx && \ - mkdir -p /var/cache/nginx && \ - chown -R nginx /var/cache/nginx && \ - chmod -R 750 /var/cache/nginx && \ - chown -R nginx:nginx /var/www && \ - chmod -R 750 /var/www && \ - apk del .build-deps && \ - rm -rf /var/cache/apk/* && \ - rm -rf /tmp/* - -ADD overlay/ / - -EXPOSE 8080 - -STOPSIGNAL SIGTERM - -CMD ["nginx", "-g", "daemon off;"] diff --git a/Dockerfile.amd64 b/Dockerfile.multiarch similarity index 93% rename from Dockerfile.amd64 rename to Dockerfile.multiarch index 3883aa2..45836d7 100644 --- a/Dockerfile.amd64 +++ b/Dockerfile.multiarch @@ -7,6 +7,10 @@ LABEL org.opencontainers.image.url="https://gitea.rknet.org/docker/nginx" LABEL org.opencontainers.image.source="https://gitea.rknet.org/docker/nginx" LABEL org.opencontainers.image.documentation="https://gitea.rknet.org/docker/nginx" +ARG TARGETOS +ARG TARGETARCH +ARG TARGETVARIANT + ARG GOMPLATE_VERSION ARG SUPERCRONIC_VERSION ARG URL_PARSER_VERSION @@ -31,9 +35,9 @@ RUN addgroup -g 101 -S nginx && \ rm -rf /var/www/localhost && \ rm -rf /etc/nginx/conf.d && \ curl -SsfL "https://gitea.rknet.org/docker/container-library/releases/download/${CONTAINER_LIBRARY}/container-library.tar.gz" | tar xz -C / && \ - curl -SsfL -o /usr/local/bin/gomplate "https://github.com/hairyhenderson/gomplate/releases/download/${GOMPLATE_VERSION}/gomplate_linux-amd64" && \ - curl -SsfL -o /usr/local/bin/supercronic "https://github.com/aptible/supercronic/releases/download/${SUPERCRONIC_VERSION}/supercronic-linux-amd64" && \ - curl -SsfL -o /usr/local/bin/url-parser "https://github.com/thegeeklab/url-parser/releases/download/${URL_PARSER_VERSION}/url-parser-linux-amd64" && \ + curl -SsfL -o /usr/local/bin/gomplate "https://github.com/hairyhenderson/gomplate/releases/download/${GOMPLATE_VERSION}/gomplate_${TARGETOS}-${TARGETARCH}${TARGETVARIANT}" && \ + curl -SsfL -o /usr/local/bin/supercronic "https://github.com/aptible/supercronic/releases/download/${SUPERCRONIC_VERSION}/supercronic-${TARGETOS}-${TARGETARCH}" && \ + curl -SsfL -o /usr/local/bin/url-parser "https://github.com/thegeeklab/url-parser/releases/download/${URL_PARSER_VERSION}/url-parser-${TARGETOS}-${TARGETARCH}${TARGETVARIANT//v/-}" && \ curl -SsfL -o /usr/local/bin/wait-for "https://github.com/thegeeklab/wait-for/releases/download/${WAIT_FOR_VERSION}/wait-for" && \ chmod 755 /usr/local/bin/gomplate && \ chmod 755 /usr/local/bin/supercronic && \ diff --git a/manifest-quay.tmpl b/manifest-quay.tmpl deleted file mode 100644 index 5eb1ac9..0000000 --- a/manifest-quay.tmpl +++ /dev/null @@ -1,24 +0,0 @@ -image: quay.io/thegeeklab/nginx:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}} -{{#if build.tags}} -tags: -{{#each build.tags}} - - {{this}} -{{/each}} -{{/if}} -manifests: - - image: quay.io/thegeeklab/nginx:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}amd64 - platform: - architecture: amd64 - os: linux - - - image: quay.io/thegeeklab/nginx:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}arm64 - platform: - architecture: arm64 - os: linux - variant: v8 - - - image: quay.io/thegeeklab/nginx:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}arm - platform: - architecture: arm - os: linux - variant: v7 diff --git a/manifest.tmpl b/manifest.tmpl deleted file mode 100644 index db63c4b..0000000 --- a/manifest.tmpl +++ /dev/null @@ -1,24 +0,0 @@ -image: thegeeklab/nginx:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}} -{{#if build.tags}} -tags: -{{#each build.tags}} - - {{this}} -{{/each}} -{{/if}} -manifests: - - image: thegeeklab/nginx:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}amd64 - platform: - architecture: amd64 - os: linux - - - image: thegeeklab/nginx:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}arm64 - platform: - architecture: arm64 - os: linux - variant: v8 - - - image: thegeeklab/nginx:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}arm - platform: - architecture: arm - os: linux - variant: v7