diff --git a/.drone.yml b/.drone.yml index b1d06562..e05c1585 100644 --- a/.drone.yml +++ b/.drone.yml @@ -15,18 +15,77 @@ steps: - name: docker path: /var/run/docker.sock - - name: github_binary_release - image: plugins/github-release + - name: docker-publish-master + image: plugins/docker + settings: + build_args: + - ARCH=amd64 + - VERSION=${DRONE_BRANCH}-${DRONE_COMMIT_SHA:0:8}-head + dockerfile: package/Dockerfile + password: + from_secret: docker_password + repo: "rancher/harvester-load-balancer" + tag: ${DRONE_BRANCH}-head-linux-amd64 + username: + from_secret: docker_username + when: + ref: + include: + - "refs/heads/master" + - "refs/heads/release/v*" + event: + - push + + - name: docker-publish-master-webhook + image: plugins/docker + settings: + build_args: + - ARCH=amd64 + - VERSION=${DRONE_BRANCH}-${DRONE_COMMIT_SHA:0:8}-head + dockerfile: package/Dockerfile.webhook + password: + from_secret: docker_password + repo: "rancher/harvester-load-balancer-webhook" + tag: ${DRONE_BRANCH}-head-linux-amd64 + username: + from_secret: docker_username + when: + ref: + include: + - "refs/heads/master" + - "refs/heads/v*" + event: + - push + + - name: docker-publish + image: plugins/docker + settings: + dockerfile: package/Dockerfile + password: + from_secret: docker_password + repo: "rancher/harvester-load-balancer" + tag: "${DRONE_TAG}-linux-amd64" + username: + from_secret: docker_username + when: + instance: + - drone-publish.rancher.io + ref: + - refs/head/master + - refs/tags/* + event: + - tag + + - name: docker-publish-webhook + image: plugins/docker settings: - api_key: - from_secret: github_token - prerelease: true - checksum: - - sha256 - checksum_file: CHECKSUMsum-amd64.txt - checksum_flatten: true - files: - - "dist/artifacts/*" + dockerfile: package/Dockerfile.webhook + password: + from_secret: docker_password + repo: "rancher/harvester-load-balancer-webhook" + tag: "${DRONE_TAG}-linux-amd64" + username: + from_secret: docker_username when: instance: - drone-publish.rancher.io @@ -35,18 +94,39 @@ steps: - refs/tags/* event: - tag +volumes: + - name: docker + host: + path: /var/run/docker.sock + +--- +kind: pipeline +name: arm64 + +platform: + os: linux + arch: arm64 + +steps: + - name: build + image: rancher/dapper:v0.5.8 + commands: + - dapper ci + volumes: + - name: docker + path: /var/run/docker.sock - name: docker-publish-master image: plugins/docker settings: build_args: - - ARCH=amd64 + - ARCH=arm64 - VERSION=${DRONE_BRANCH}-${DRONE_COMMIT_SHA:0:8}-head dockerfile: package/Dockerfile password: from_secret: docker_password repo: "rancher/harvester-load-balancer" - tag: ${DRONE_BRANCH}-head + tag: ${DRONE_BRANCH}-head-linux-arm64 username: from_secret: docker_username when: @@ -61,13 +141,13 @@ steps: image: plugins/docker settings: build_args: - - ARCH=amd64 + - ARCH=arm64 - VERSION=${DRONE_BRANCH}-${DRONE_COMMIT_SHA:0:8}-head dockerfile: package/Dockerfile.webhook password: from_secret: docker_password repo: "rancher/harvester-load-balancer-webhook" - tag: ${DRONE_BRANCH}-head + tag: ${DRONE_BRANCH}-head-linux-arm64 username: from_secret: docker_username when: @@ -85,7 +165,7 @@ steps: password: from_secret: docker_password repo: "rancher/harvester-load-balancer" - tag: "${DRONE_TAG}" + tag: "${DRONE_TAG}-linux-arm64" username: from_secret: docker_username when: @@ -104,7 +184,7 @@ steps: password: from_secret: docker_password repo: "rancher/harvester-load-balancer-webhook" - tag: "${DRONE_TAG}" + tag: "${DRONE_TAG}-linux-arm64" username: from_secret: docker_username when: @@ -119,3 +199,96 @@ volumes: - name: docker host: path: /var/run/docker.sock + +--- +kind: pipeline +name: manifest + +steps: + - name: push-manifest-head + image: plugins/manifest + settings: + username: + from_secret: docker_username + password: + from_secret: docker_password + target: "rancher/harvester-load-balancer:${DRONE_BRANCH}-head" + template: "rancher/harvester-load-balancer:${DRONE_BRANCH}-head-OS-ARCH" + ignore_missing: true + platforms: + - linux/amd64 + - linux/arm64 + when: + ref: + include: + - refs/heads/master + - refs/heads/release/v* + event: + - push + + - name: push-manifest-tag + image: plugins/manifest + settings: + username: + from_secret: docker_username + password: + from_secret: docker_password + target: "rancher/harvester-load-balancer:${DRONE_TAG}" + template: "rancher/harvester-load-balancer:${DRONE_TAG}-OS-ARCH" + ignore_missing: true + platforms: + - linux/amd64 + - linux/arm64 + when: + ref: + include: + - refs/head/master + - refs/tags/* + event: + - tag + + - name: push-webhook-manifest-head + image: plugins/manifest + settings: + username: + from_secret: docker_username + password: + from_secret: docker_password + target: "rancher/harvester-load-balancer-webhook:${DRONE_BRANCH}-head" + template: "rancher/harvester-load-balancer-webhook:${DRONE_BRANCH}-head-OS-ARCH" + ignore_missing: true + platforms: + - linux/amd64 + - linux/arm64 + when: + ref: + include: + - refs/heads/master + - refs/heads/release/v* + event: + - push + + - name: push-webhook-manifest-tag + image: plugins/manifest + settings: + username: + from_secret: docker_username + password: + from_secret: docker_password + target: "rancher/harvester-load-balancer-webhook:${DRONE_TAG}" + template: "rancher/harvester-load-balancer-webhook:${DRONE_TAG}-OS-ARCH" + ignore_missing: true + platforms: + - linux/amd64 + - linux/arm64 + when: + ref: + include: + - refs/head/master + - refs/tags/* + event: + - tag + +depends_on: + - amd64 + - arm64 diff --git a/Dockerfile.dapper b/Dockerfile.dapper index 9b30a7c2..296fe196 100644 --- a/Dockerfile.dapper +++ b/Dockerfile.dapper @@ -5,9 +5,7 @@ ENV HOST_ARCH=${DAPPER_HOST_ARCH} ARCH=${DAPPER_HOST_ARCH} RUN zypper -n rm container-suseconnect && \ zypper -n install git curl docker gzip tar wget awk -RUN if [ "${ARCH}" == "amd64" ]; then \ - curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s v1.51.2; \ - fi +RUN curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s v1.51.2 ENV DAPPER_ENV REPO TAG DRONE_TAG ENV DAPPER_SOURCE /go/src/github.com/harvester/harvester-load-balancer/