From d2daea094f2215fbe4c57229b2ff1be97d145d0e Mon Sep 17 00:00:00 2001 From: akshun Date: Mon, 16 Jun 2025 05:02:04 +0000 Subject: [PATCH] Update .drone.yml --- .drone.yml | 123 +++++++++++++++++++++++++++++++++++++++++++++++++ .gitlab-ci.yml | 36 --------------- 2 files changed, 123 insertions(+), 36 deletions(-) create mode 100644 .drone.yml delete mode 100644 .gitlab-ci.yml diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..06d69ad --- /dev/null +++ b/.drone.yml @@ -0,0 +1,123 @@ +kind: pipeline +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: 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 /arifacts/arch-setup + volumes: + - name: artifacts + path: /artifacts + + - name: build on debian + image: debian:stable + commands: + - apt update && apt upgrade -y + - apt install 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 /arifacts/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 /arifacts/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}" + + # Create or get release + 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": "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 + + # 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 + temp: {} \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index c3831ea..0000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,36 +0,0 @@ -stages: - - build - -variables: - GIT_STRATEGY: clone - GIT_SUBMODULE_STRATEGY: recursive - -.build_template: &build_template - stage: build - script: - - cargo build --release - artifacts: - paths: - - target/release/setup - -build_on_arch: - <<: *build_template - image: archlinux:latest - before_script: - - pacman -Syu --noconfirm - - pacman -S --noconfirm git rustup gcc - - rustup default stable - -build_on_debian: - <<: *build_template - image: debian:stable - before_script: - - apt update && apt upgrade -y - - apt install -y git cargo - -build_on_fedora: - <<: *build_template - image: fedora:latest - before_script: - - dnf up -y - - dnf install -y git cargo \ No newline at end of file