From f807ec05d8f8f9f93241ddf18df621f5a7b5ca4b Mon Sep 17 00:00:00 2001 From: akshun Date: Thu, 19 Jun 2025 17:53:30 +0530 Subject: [PATCH] automated build --- .drone.yml | 123 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 .drone.yml diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..b7f796a --- /dev/null +++ b/.drone.yml @@ -0,0 +1,123 @@ +kind: pipeline +type: kubernetes +name: multi-distro-build + +trigger: + event: + - custom + +steps: +- name: clone-repo + image: alpine/git:latest + commands: + - git clone https://gitea.akshun-lab.uk/akshun/python-script.git /artifacts + volumes: + - name: artifacts + path: /artifacts + +- name: arch-build + image: archlinux:latest + depends_on: [clone-repo] + commands: + - pacman -Syu --noconfirm + - pacman -S --noconfirm git python python-pip binutils + - mv /lib/python3*/EXTERNALLY-MANAGED . + - pip install --upgrade pip + - pip install pyinstaller inquirerpy distro + - cd /artifacts + - pyinstaller --onefile --add-data "data/:data/" setup.py + - cp /artifacts/dist/setup /artifacts/arch-setup + volumes: + - name: artifacts + path: /artifacts + +- name: debian-build + image: debian:stable-slim + depends_on: [clone-repo] + commands: + - apt-get update && apt-get upgrade -y + - apt-get install -y git python3 python3-pip binutils + - mv /usr/lib/python*/EXTERNALLY-MANAGED . + - pip install pyinstaller inquirerpy distro + - cd /artifacts + - pyinstaller --onefile --add-data "data/:data/" setup.py + - cp /artifacts/dist/setup /artifacts/debian-setup + volumes: + - name: artifacts + path: /artifacts + +- name: fedora-build + image: fedora:latest + depends_on: [clone-repo] + commands: + - dnf update -y + - dnf install -y git python python-pip binutils + - pip install inquirerpy distro pyinstaller + - cd /artifacts + - pyinstaller --onefile --add-data "data/:data/" setup.py + - cp /artifacts/dist/setup /artifacts/fedora-setup + volumes: + - name: artifacts + path: /artifacts + +- name: upload-artifacts + image: alpine/curl:latest + depends_on: [arch-build, debian-build, fedora-build] + commands: + - apk add --no-cache curl jq + - | + if [ -z "$GITEA_TOKEN" ] || [ -z "$GITEA_SERVER" ]; then + echo "Error: GITEA_TOKEN or GITEA_SERVER not set" + exit 1 + fi + + REPO_PATH="${DRONE_REPO:-akshun/python-script}" + + 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" + 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 + 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 + + for artifact in /artifacts/*-setup; do + if [ -f "$artifact" ]; then + filename=$(basename "$artifact") + echo "Uploading $filename" + 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" + 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