kind: pipeline type: docker name: ci trigger: event: - push - pull_request steps: - name: test image: rust:latest commands: - cargo fmt --check - cargo clippy -- -D warnings - cargo test - name: coverage image: xd009642/tarpaulin privileged: true environment: GITEA_TOKEN: from_secret: gitea_token commands: - apt-get update -qq && apt-get install -y -qq jq curl - | PCT=$(cargo tarpaulin 2>&1 | grep -oE '[0-9]+\.[0-9]+% coverage' | cut -d'.' -f1) if [ "$PCT" -ge 80 ]; then COLOR="brightgreen" elif [ "$PCT" -ge 60 ]; then COLOR="yellow" else COLOR="red"; fi curl -sf "https://img.shields.io/badge/coverage-${PCT}%25-${COLOR}.svg" -o coverage.svg - | SHA=$(curl -sf \ -H "Authorization: token $GITEA_TOKEN" \ "https://git.cincoeuzebio.com/api/v1/repos/cinco/Tmuxido/contents/badges/coverage.svg?ref=master" \ | jq -r '.sha // empty') CONTENT=$(base64 -w 0 coverage.svg) if [ -n "$SHA" ]; then PAYLOAD=$(jq -n --arg msg "ci: update coverage badge [CI SKIP]" \ --arg content "$CONTENT" --arg sha "$SHA" --arg branch "master" \ '{message: $msg, content: $content, sha: $sha, branch: $branch}') else PAYLOAD=$(jq -n --arg msg "ci: add coverage badge [CI SKIP]" \ --arg content "$CONTENT" --arg branch "master" \ '{message: $msg, content: $content, branch: $branch}') fi curl -fsSL -X PUT \ -H "Authorization: token $GITEA_TOKEN" \ -H "Content-Type: application/json" \ "https://git.cincoeuzebio.com/api/v1/repos/cinco/Tmuxido/contents/badges/coverage.svg" \ -d "$PAYLOAD" --- kind: pipeline type: docker name: release trigger: event: - tag ref: - refs/tags/[0-9]* steps: - name: build-x86_64 image: messense/rust-musl-cross:x86_64-musl commands: - cargo build --release --target x86_64-unknown-linux-musl - cp target/x86_64-unknown-linux-musl/release/tmuxido tmuxido-x86_64-linux - name: build-aarch64 image: messense/rust-musl-cross:aarch64-musl commands: - cargo build --release --target aarch64-unknown-linux-musl - cp target/aarch64-unknown-linux-musl/release/tmuxido tmuxido-aarch64-linux - name: publish image: alpine environment: GITEA_TOKEN: from_secret: gitea_token commands: - apk add --no-cache curl jq - | # Extract changelog entry for this tag (content between this and previous ## heading) BODY=$(awk "/^## \[${DRONE_TAG}\]/{found=1; next} found && /^## \[/{exit} found{print}" CHANGELOG.md) RELEASE_ID=$(curl -fsSL -X POST \ -H "Authorization: token $GITEA_TOKEN" \ -H "Content-Type: application/json" \ "https://git.cincoeuzebio.com/api/v1/repos/cinco/Tmuxido/releases" \ -d "{\"tag_name\":\"$DRONE_TAG\",\"name\":\"$DRONE_TAG\",\"body\":$(echo "$BODY" | jq -Rs .)}" \ | jq -r .id) for ASSET in tmuxido-x86_64-linux tmuxido-aarch64-linux; do curl -fsSL -X POST \ -H "Authorization: token $GITEA_TOKEN" \ "https://git.cincoeuzebio.com/api/v1/repos/cinco/Tmuxido/releases/$RELEASE_ID/assets" \ -F "attachment=@$ASSET" done depends_on: - build-x86_64 - build-aarch64