WANessa/.drone.yml

197 lines
5.6 KiB
YAML

kind: pipeline
name: amd64 [debug]
platform:
arch: amd64
steps:
- name: build [debug]
image: rust:1.71.1-slim-bookworm
commands:
- rustc --version
- cargo --version
# Stupid workarounds, for stupid problems
- echo "nameserver 1.1.1.1" >> /etc/resolv.conf
- echo "nameserver 1.0.0.1" >> /etc/resolv.conf
- cargo build --all
- name: test [debug]
image: rust:1.71.1-slim-bookworm
commands:
- rustc --version
- cargo --version
# Stupid workarounds, for stupid problems
- echo "nameserver 1.1.1.1" >> /etc/resolv.conf
- echo "nameserver 1.0.0.1" >> /etc/resolv.conf
- cargo test --all
- name: lint-clippy [debug]
image: rust:1.71.1-slim-bookworm
commands:
- rustc --version
- cargo --version
# Stupid workarounds, for stupid problems
- echo "nameserver 1.1.1.1" >> /etc/resolv.conf
- echo "nameserver 1.0.0.1" >> /etc/resolv.conf
- rustup component add clippy
- cargo clippy --all
---
kind: pipeline
name: arm64 [debug]
platform:
arch: arm64
steps:
- name: build [debug]
image: rust:1.71.1-slim-bookworm
commands:
- rustc --version
- cargo --version
# Stupid workarounds, for stupid problems
- echo "nameserver 1.1.1.1" >> /etc/resolv.conf
- echo "nameserver 1.0.0.1" >> /etc/resolv.conf
- cargo build --all
- name: test [debug]
image: rust:1.71.1-slim-bookworm
commands:
- rustc --version
- cargo --version
# Stupid workarounds, for stupid problems
- echo "nameserver 1.1.1.1" >> /etc/resolv.conf
- echo "nameserver 1.0.0.1" >> /etc/resolv.conf
- cargo test --all
- name: lint-clippy [debug]
image: rust:1.71.1-slim-bookworm
commands:
- rustc --version
- cargo --version
# Stupid workarounds, for stupid problems
- echo "nameserver 1.1.1.1" >> /etc/resolv.conf
- echo "nameserver 1.0.0.1" >> /etc/resolv.conf
- rustup component add clippy
- cargo clippy --all
---
kind: pipeline
name: amd64 [release]
platform:
arch: amd64
steps:
- name: build and test [release]
image: rust:1.71.1-slim-bookworm
commands:
- rustc --version
- cargo --version
# Stupid workarounds, for stupid problems
- echo "nameserver 1.1.1.1" >> /etc/resolv.conf
- echo "nameserver 1.0.0.1" >> /etc/resolv.conf
- cargo test --all --release
---
kind: pipeline
name: arm64 [release]
platform:
arch: arm64
steps:
- name: build and test [release]
image: rust:1.71.1-slim-bookworm
commands:
- rustc --version
- cargo --version
# Stupid workarounds, for stupid problems
- echo "nameserver 1.1.1.1" >> /etc/resolv.conf
- echo "nameserver 1.0.0.1" >> /etc/resolv.conf
- cargo test --all --release
---
kind: pipeline
name: rustfmt
steps:
- name: Format Project with rustfmt
image: rust:1.71.1-alpine
commands:
- rustc --version
- cargo --version
# Stupid workarounds, for stupid problems
- echo "nameserver 1.1.1.1" >> /etc/resolv.conf
- echo "nameserver 1.0.0.1" >> /etc/resolv.conf
- rustup component add rustfmt
- cargo fmt --all --check && echo "No formatting required, exiting early..." && exit 0
- cargo fmt --all --verbose
# Check for format loop
- apk add git
- '[ "$(git log -1 --pretty=%B | grep -E ".+")" = "rustfmt" ] && echo "format loop detected, aborting..." && exit 1'
# Get necessary packages
- apk add openssh gpg gpg-agent
# configure SSH and import private key
- mkdir -p "$${HOME}/.ssh"
- echo "$SSH_PRIVATE_KEY" > "$${HOME}/.ssh/git"
- echo "Host git.libre.moe" >> "$${HOME}/.ssh/config"
- echo " User git" >> "$${HOME}/.ssh/config"
- echo " IdentityFile $${HOME}/.ssh/git" >> "$${HOME}/.ssh/config"
- echo "$GITEA_ED25519_SIG" >> "$${HOME}/.ssh/known_hosts"
- echo "$GITEA_RSA_SIG" >> "$${HOME}/.ssh/known_hosts"
- echo "$GITEA_ECDSA_SIG" >> "$${HOME}/.ssh/known_hosts"
- chmod 700 -R "$${HOME}/.ssh"
# setup gpg
- gpg-agent --daemon
# the git config gpg.program absolutely despises anything other than a path, including additional arguments.
# so we just put it into it's own shell script and use that later
- echo "#!/bin/sh" >> /tmp/gpg.sh
- echo gpg --batch --pinentry-mode loopback --passphrase '$GPG_PASSPHRASE' \$@ >> /tmp/gpg.sh
- chmod 777 /tmp/gpg.sh
# import gpg key
- echo "$GPG_PRIVKEY" > /tmp/private.key
- /tmp/gpg.sh --import /tmp/private.key >> /tmp/import.sh || exit 2
# configure git
- git config --local user.name "WANessa"
- git config --local user.email "$GIT_EMAIL_ADDRESS"
- git config --local user.signingkey "$GPG_PUBKEY_ID"
- git config --local gpg.program "/tmp/gpg.sh" # see above comment
# Uncomment below line for ssh debugging
# - git config core.sshCommand '/usr/bin/ssh -v'
- git remote add ssh "$DRONE_GIT_SSH_URL"
# commit and push every modified file, does not include new files, because why should it?
- GIT_COMMITTER_NAME="WANessa" GIT_COMMITTER_EMAIL="$GIT_EMAIL_ADDRESS" git commit --author "$DRONE_COMMIT_AUTHOR_NAME <$DRONE_COMMIT_AUTHOR_EMAIL>" -S -a -m "rustfmt"
- git push ssh
environment:
SSH_PRIVATE_KEY:
from_secret: WANESSA_SSH_PRIVKEY
GIT_EMAIL_ADDRESS:
from_secret: WANESSA_EMAIL_ADDRESS
GITEA_ED25519_SIG:
from_secret: GIT_ED25519_SIG
GITEA_RSA_SIG:
from_secret: GIT_RSA_SIG
GITEA_ECDSA_SIG:
from_secret: GIT_ECDSA_SIG
GPG_PUBKEY_ID:
from_secret: WANESSA_GPG_PUBKEY_ID
GPG_PASSPHRASE:
from_secret: WANESSA_GPG_PASSPHRASE
GPG_PRIVKEY:
from_secret: WANESSA_GPG_PRIVKEY
depends_on:
- amd64 [debug]
- arm64 [debug]
- amd64 [release]
- arm64 [release]