diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..fc7a090 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,368 @@ +kind: pipeline +type: docker +name: clippy + +platform: + arch: amd64 + +clone: + disable: true + +steps: +- name: clone + image: alpine/git:latest + user: root + commands: + - git clone $DRONE_GIT_HTTP_URL . + - git checkout $DRONE_COMMIT + - chown -R 991:991 . + +- name: clippy + image: asonix/rust-builder:amd64-latest + pull: always + commands: + - rustup component add clippy + - cargo clippy --no-default-features -- -D warnings + +trigger: + event: + - push + - pull_request + +--- + +kind: pipeline +type: docker +name: tests + +platform: + arch: amd64 + +clone: + disable: true + +steps: +- name: clone + image: alpine/git:latest + user: root + commands: + - git clone $DRONE_GIT_HTTP_URL . + - git checkout $DRONE_COMMIT + - chown -R 991:991 . + +- name: tests + image: asonix/rust-builder:amd64-latest + pull: always + commands: + - cargo test + +trigger: + event: + - push + - pull_request + +--- + +kind: pipeline +type: docker +name: check-amd64 + +platform: + arch: amd64 + +clone: + disable: true + +steps: +- name: clone + image: alpine/git:latest + user: root + commands: + - git clone $DRONE_GIT_HTTP_URL . + - git checkout $DRONE_COMMIT + - chown -R 991:991 . + +- name: check + image: asonix/rust-builder:amd64-latest + pull: always + commands: + - cargo check --target=$TARGET + +trigger: + event: + - push + - pull_request + +--- + +kind: pipeline +type: docker +name: build-amd64 + +platform: + arch: amd64 + +clone: + disable: true + +steps: +- name: clone + image: alpine/git:latest + user: root + commands: + - git clone $DRONE_GIT_HTTP_URL . + - git checkout $DRONE_COMMIT + - chown -R 991:991 . + +- name: build + image: asonix/rust-builder:amd64-latest + pull: always + commands: + - cargo build --target=$TARGET --release + - $TOOL-strip target/$TARGET/release/release-checker + - cp target/$TARGET/release/release-checker . + - cp release-checker release-checker-linux-amd64 + +- name: push + image: plugins/docker:20 + settings: + username: asonix + password: + from_secret: dockerhub_token + repo: asonix/release-checker + dockerfile: docker/drone/Dockerfile + auto_tag: true + auto_tag_suffix: linux-amd64 + build_args: + - REPO_ARCH=amd64 + +- name: publish + image: plugins/gitea-release:1 + settings: + api_key: + from_secret: gitea_token + base_url: https://git.asonix.dog + files: + - release-checker-linux-amd64 + +trigger: + event: + - tag + +--- + +kind: pipeline +type: docker +name: check-arm64v8 + +platform: + arch: amd64 + +clone: + disable: true + +steps: +- name: clone + image: alpine/git:latest + user: root + commands: + - git clone $DRONE_GIT_HTTP_URL . + - git checkout $DRONE_COMMIT + - chown -R 991:991 . + +- name: check + image: asonix/rust-builder:arm64v8-latest + pull: always + commands: + - cargo check --target=$TARGET + +trigger: + event: + - push + - pull_request + +--- + +kind: pipeline +type: docker +name: build-arm64v8 + +platform: + arch: amd64 + +clone: + disable: true + +steps: +- name: clone + image: alpine/git:latest + user: root + commands: + - git clone $DRONE_GIT_HTTP_URL . + - git checkout $DRONE_COMMIT + - chown -R 991:991 . + +- name: build + image: asonix/rust-builder:arm64v8-latest + pull: always + commands: + - cargo build --target=$TARGET --release + - $TOOL-strip target/$TARGET/release/release-checker + - cp target/$TARGET/release/release-checker . + - cp release-checker release-checker-linux-arm64v8 + +- name: push + image: plugins/docker:20 + settings: + username: asonix + password: + from_secret: dockerhub_token + repo: asonix/release-checker + dockerfile: docker/drone/Dockerfile + auto_tag: true + auto_tag_suffix: linux-arm64v8 + build_args: + - REPO_ARCH=arm64v8 + +- name: publish + image: plugins/gitea-release:1 + settings: + api_key: + from_secret: gitea_token + base_url: https://git.asonix.dog + files: + - release-checker-linux-arm64v8 + +trigger: + event: + - tag + +--- + +kind: pipeline +type: docker +name: check-arm32v7 + +platform: + arch: amd64 + +clone: + disable: true + +steps: +- name: clone + image: alpine/git:latest + user: root + commands: + - git clone $DRONE_GIT_HTTP_URL . + - git checkout $DRONE_COMMIT + - chown -R 991:991 . + +- name: check + image: asonix/rust-builder:arm32v7-latest + pull: always + commands: + - cargo check --target=$TARGET + +trigger: + event: + - push + - pull_request + +--- + +kind: pipeline +type: docker +name: build-arm32v7 + +platform: + arch: amd64 + +clone: + disable: true + +steps: +- name: clone + image: alpine/git:latest + user: root + commands: + - git clone $DRONE_GIT_HTTP_URL . + - git checkout $DRONE_COMMIT + - chown -R 991:991 . + +- name: build + image: asonix/rust-builder:arm32v7-latest + pull: always + commands: + - cargo build --target=$TARGET --release + - $TOOL-strip target/$TARGET/release/release-checker + - cp target/$TARGET/release/release-checker . + - cp release-checker release-checker-linux-arm32v7 + +- name: push + image: plugins/docker:20 + settings: + username: asonix + password: + from_secret: dockerhub_token + repo: asonix/release-checker + dockerfile: docker/drone/Dockerfile + auto_tag: true + auto_tag_suffix: linux-arm32v7 + build_args: + - REPO_ARCH=arm32v7 + +- name: publish + image: plugins/gitea-release:1 + settings: + api_key: + from_secret: gitea_token + base_url: https://git.asonix.dog + files: + - release-checker-linux-arm32v7 + +trigger: + event: + - tag + +--- + +kind: pipeline +type: docker +name: manifest + +platform: + arch: amd64 + +clone: + disable: true + +steps: +- name: clone + image: alpine/git:latest + user: root + commands: + - git clone $DRONE_GIT_HTTP_URL . + - git checkout $DRONE_COMMIT + - chown -R 991:991 . + +- name: manifest + image: plugins/manifest:1 + settings: + username: asonix + password: + from_secret: dockerhub_token + dump: true + auto_tag: true + ignore_missing: true + spec: docker/drone/manifest.tmpl + + +depends_on: +- build-amd64 +- build-arm64v8 +- build-arm32v7 + +trigger: + event: + - tag diff --git a/docker/drone/Dockerfile b/docker/drone/Dockerfile new file mode 100644 index 0000000..cf6c4cd --- /dev/null +++ b/docker/drone/Dockerfile @@ -0,0 +1,15 @@ +ARG REPO_ARCH + +FROM asonix/rust-runner:$REPO_ARCH-latest + +USER root +RUN \ + apk add git && \ + chown -R app:app /mnt + +COPY release-checker /usr/local/bin/release-checker + +USER app +EXPOSE 8080 +ENTRYPOINT ["/sbin/tini", "--"] +CMD ["/usr/local/bin/release-checker"] diff --git a/docker/drone/manifest.tmpl b/docker/drone/manifest.tmpl new file mode 100644 index 0000000..f3bf2c9 --- /dev/null +++ b/docker/drone/manifest.tmpl @@ -0,0 +1,25 @@ +image: asonix/release-checker:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}} +{{#if build.tags}} +tags: +{{#each build.tags}} + - {{this}} +{{/each}} +{{/if}} +manifests: + - + image: asonix/release-checker:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-amd64 + platform: + architecture: amd64 + os: linux + - + image: asonix/release-checker:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm64v8 + platform: + architecture: arm64 + os: linux + variant: v8 + - + image: asonix/release-checker:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm32v7 + platform: + architecture: arm + os: linux + variant: v7