From ed3cc44eaf789f16daf2b5944ab3f41f270bcc16 Mon Sep 17 00:00:00 2001 From: akshun Date: Mon, 16 Jun 2025 05:53:39 +0000 Subject: [PATCH] Update .drone.yml --- .drone.yml | 211 +++++++++++++++++++++++++++-------------------------- 1 file changed, 107 insertions(+), 104 deletions(-) diff --git a/.drone.yml b/.drone.yml index 33ca806..ca4e149 100644 --- a/.drone.yml +++ b/.drone.yml @@ -3,123 +3,126 @@ type: kubernetes name: Build on Multiple Distributions steps: - - name: clone repo - image: alpine/git - commands: - - git clone https://gitea.akshun-lab.uk/akshun/rust-setup.git /artifacts - volumes: - - name: artifacts - path: /artifacts +- name: clone-repo + image: alpine/git + commands: + - git clone https://gitea.akshun-lab.uk/akshun/rust-setup.git /artifacts + volumes: + - name: artifacts + path: /artifacts - - name: build on arch - image: archlinux:latest - commands: - - pacman -Syu --noconfirm - - pacman -S --noconfirm rustup gcc - - rustup default stable - - cd /artifacts - - cargo build --release - - cp /artifacts/target/release/setup /artifacts/ - - mv /artifacts/setup /artifacts/arch-setup - volumes: - - name: artifacts - path: /artifacts +- name: build-on-arch + image: archlinux:latest + depends_on: [clone-repo] + commands: + - pacman -Syu --noconfirm + - pacman -S --noconfirm rustup gcc + - rustup default stable + - cd /artifacts + - cargo build --release + - cp /artifacts/target/release/setup /artifacts/ + - mv /artifacts/setup /artifacts/arch-setup + volumes: + - name: artifacts + path: /artifacts - - name: build on debian - image: debian:stable - commands: - - apt update && apt upgrade -y - - apt install -y curl gcc - - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y - - . $HOME/.cargo/env - - cd /artifacts - - cargo build --release - - cp /artifacts/target/release/setup /artifacts/ - - mv /artifacts/setup /artifacts/debian-setup - volumes: - - name: artifacts - path: /artifacts +- name: build-on-debian + image: debian:stable + depends_on: [clone-repo] + commands: + - apt update && apt upgrade -y + - apt install -y curl gcc + - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y + - . $HOME/.cargo/env + - cd /artifacts + - cargo build --release + - cp /artifacts/target/release/setup /artifacts/ + - mv /artifacts/setup /artifacts/debian-setup + volumes: + - name: artifacts + path: /artifacts - - name: build on fedora - image: fedora:latest - commands: - - dnf up -y - - dnf install curl gcc -y - - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y - - . $HOME/.cargo/env - - cd /artifacts - - cargo build --release - - cp /artifacts/target/release/setup /artifacts/ - - mv /artifacts/setup /artifacts/fedora-setup - volumes: - - name: artifacts - path: /artifacts +- name: build-on-fedora + image: fedora:latest + depends_on: [clone-repo] + commands: + - dnf up -y + - dnf install curl gcc -y + - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y + - . $HOME/.cargo/env + - cd /artifacts + - cargo build --release + - cp /artifacts/target/release/setup /artifacts/ + - mv /artifacts/setup /artifacts/fedora-setup + volumes: + - name: artifacts + path: /artifacts - - name: upload-to-gitea - image: alpine/curl - commands: - - apk add curl jq - - | - # Ensure required variables are set - if [ -z "$GITEA_TOKEN" ] || [ -z "$GITEA_SERVER" ]; then - echo "Error: GITEA_TOKEN or GITEA_SERVER not set" - exit 1 - fi - - # Set repo path (fallback if DRONE_REPO is not set) - REPO_PATH="${DRONE_REPO:-akshun/setup-script}" +- name: upload-to-gitea + image: alpine/curl + depends_on: [build-on-debian, build-on-arch, build-on-fedora] + commands: + - apk add curl jq + - | + # Ensure required variables are set + if [ -z "$GITEA_TOKEN" ] || [ -z "$GITEA_SERVER" ]; then + echo "Error: GITEA_TOKEN or GITEA_SERVER not set" + exit 1 + fi + # Set repo path (fallback if DRONE_REPO is not set) + REPO_PATH="${DRONE_REPO:-akshun/setup-script}" # Create or get release - if [ -n "${DRONE_TAG}" ]; then - echo "Creating release for tag ${DRONE_TAG}" + if [ -n "${DRONE_TAG}" ]; then + echo "Creating release for tag ${DRONE_TAG}" + response=$(curl -s -X POST \ + -H "Authorization: token $GITEA_TOKEN" \ + -H "Content-Type: application/json" \ + -d '{"tag_name": "'"${DRONE_TAG}"'", "name": "'"${DRONE_TAG}"'", "body": "Automated release"}' \ + "$GITEA_SERVER/api/v1/repos/$REPO_PATH/releases") + release_id=$(echo "$response" | jq -r '.id') + else + echo "Using latest release" + # Try to get latest release + response=$(curl -s -H "Authorization: token $GITEA_TOKEN" \ + "$GITEA_SERVER/api/v1/repos/$REPO_PATH/releases/latest" || echo "") + + if [ -z "$response" ] || [ "$(echo "$response" | jq -r '.id')" = "null" ]; then + # Create a new draft release if none exists + echo "Creating new draft release" response=$(curl -s -X POST \ -H "Authorization: token $GITEA_TOKEN" \ -H "Content-Type: application/json" \ - -d '{"tag_name": "'"${DRONE_TAG}"'", "name": "'"${DRONE_TAG}"'", "body": "Automated release"}' \ + -d '{"tag_name": "continuous", "name": "Continuous Build", "draft": true, "body": "Automated continuous build"}' \ "$GITEA_SERVER/api/v1/repos/$REPO_PATH/releases") - release_id=$(echo "$response" | jq -r '.id') - else - echo "Using latest release" - # Try to get latest release - response=$(curl -s -H "Authorization: token $GITEA_TOKEN" \ - "$GITEA_SERVER/api/v1/repos/$REPO_PATH/releases/latest" || echo "") - - if [ -z "$response" ] || [ "$(echo "$response" | jq -r '.id')" = "null" ]; then - # Create a new draft release if none exists - echo "Creating new draft release" - response=$(curl -s -X POST \ - -H "Authorization: token $GITEA_TOKEN" \ - -H "Content-Type: application/json" \ - -d '{"tag_name": "continuous", "name": "Continuous Build", "draft": true, "body": "Automated continuous build"}' \ - "$GITEA_SERVER/api/v1/repos/$REPO_PATH/releases") - fi - - release_id=$(echo "$response" | jq -r '.id') fi + + release_id=$(echo "$response" | jq -r '.id') + fi - # Upload artifacts - for artifact in /artifacts/*-setup; do - if [ -f "$artifact" ]; then - filename=$(basename "$artifact") - echo "Uploading $filename to Gitea release $release_id" - curl -X POST \ - -H "Authorization: token $GITEA_TOKEN" \ - -H "Content-Type: multipart/form-data" \ - -F "attachment=@$artifact" \ - "$GITEA_SERVER/api/v1/repos/$REPO_PATH/releases/$release_id/assets?name=$filename" - else - echo "No artifacts found matching /artifacts/*-setup" - fi - done - environment: - GITEA_TOKEN: - from_secret: gitea-token - GITEA_SERVER: - from_secret: gitea-server - volumes: - - name: artifacts - path: /artifacts + # Upload artifacts + for artifact in /artifacts/*-setup; do + if [ -f "$artifact" ]; then + filename=$(basename "$artifact") + echo "Uploading $filename to Gitea release $release_id" + curl -X POST \ + -H "Authorization: token $GITEA_TOKEN" \ + -H "Content-Type: multipart/form-data" \ + -F "attachment=@$artifact" \ + "$GITEA_SERVER/api/v1/repos/$REPO_PATH/releases/$release_id/assets?name=$filename" + else + echo "No artifacts found matching /artifacts/*-setup" + fi + done + environment: + GITEA_TOKEN: + from_secret: gitea-token + GITEA_SERVER: + from_secret: gitea-server + volumes: + - name: artifacts + path: /artifacts volumes: - name: artifacts