Update .drone.yml
Some checks failed
continuous-integration/drone Build encountered an error

This commit is contained in:
2025-06-16 05:43:17 +00:00
parent 5eebf0cc7d
commit e5206c6954

View File

@@ -1,128 +1,119 @@
kind: pipeline kind: pipeline
type: kubernetes type: kubernetes
name: Build on Multiple Distributions name: multi-distro-build
steps: steps:
- name: clone-repo - name: clone
image: alpine/git:latest image: alpine/git:latest
commands: commands:
- git clone https://gitea.akshun-lab.uk/akshun/setup-script.git /artifacts - git clone https://gitea.akshun-lab.uk/akshun/setup-script.git /artifacts
volumes: volumes:
- name: artifacts - name: artifacts
path: /artifacts path: /artifacts
- name: parallel-builds - name: build-arch
parallel: image: archlinux:latest
# Arch Linux build depends_on: [clone]
- name: build-on-arch commands:
image: archlinux:latest - pacman -Syu --noconfirm
commands: - pacman -S --noconfirm git python python-pip binutils
- pacman -Syu --noconfirm - mv /lib/python3*/EXTERNALLY-MANAGED .
- pacman -S --noconfirm git python python-pip binutils - pip install --upgrade pip
- mv /lib/python3*/EXTERNALLY-MANAGED . - pip install pyinstaller inquirerpy distro
- pip install --upgrade pip - cd /artifacts
- pip install pyinstaller inquirerpy distro - pyinstaller --onefile --add-data "bash/:bash/" --add-data "prompts/:prompts/" --add-data "config/:config/" setup.py
- cd /artifacts - cp /artifacts/dist/setup /artifacts/arch-setup
- pyinstaller --onefile --add-data "bash/:bash/" --add-data "prompts/:prompts/" --add-data "config/:config/" setup.py volumes:
- cp /artifacts/dist/setup /artifacts/arch-setup - name: artifacts
volumes: path: /artifacts
- name: artifacts
path: /artifacts
# Debian build - name: build-debian
- name: build-on-debian image: debian:stable-slim
image: debian:stable-slim depends_on: [clone]
commands: commands:
- apt-get update && apt-get upgrade -y - apt-get update && apt-get upgrade -y
- apt-get install -y git python3 python3-pip binutils - apt-get install -y git python3 python3-pip binutils
- mv /usr/lib/python*/EXTERNALLY-MANAGED . - mv /usr/lib/python*/EXTERNALLY-MANAGED .
- pip install pyinstaller inquirerpy distro - pip install pyinstaller inquirerpy distro
- cd /artifacts - cd /artifacts
- pyinstaller --onefile --add-data "bash/:bash/" --add-data "prompts/:prompts/" --add-data "config/:config/" setup.py - pyinstaller --onefile --add-data "bash/:bash/" --add-data "prompts/:prompts/" --add-data "config/:config/" setup.py
- cp /artifacts/dist/setup /artifacts/debian-setup - cp /artifacts/dist/setup /artifacts/debian-setup
volumes: volumes:
- name: artifacts - name: artifacts
path: /artifacts path: /artifacts
# Fedora build - name: build-fedora
- name: build-on-fedora image: fedora:latest
image: fedora:latest depends_on: [clone]
commands: commands:
- dnf update -y - dnf update -y
- dnf install -y git python python-pip binutils - dnf install -y git python python-pip binutils
- pip install inquirerpy distro pyinstaller - pip install inquirerpy distro pyinstaller
- cd /artifacts - cd /artifacts
- pyinstaller --onefile --add-data "bash/:bash/" --add-data "prompts/:prompts/" --add-data "config/:config/" setup.py - pyinstaller --onefile --add-data "bash/:bash/" --add-data "prompts/:prompts/" --add-data "config/:config/" setup.py
- cp /artifacts/dist/setup /artifacts/fedora-setup - cp /artifacts/dist/setup /artifacts/fedora-setup
volumes: volumes:
- name: artifacts - name: artifacts
path: /artifacts path: /artifacts
- name: upload-to-gitea - name: upload
image: alpine/curl:latest image: alpine/curl:latest
commands: depends_on: [build-arch, build-debian, build-fedora]
- apk add --no-cache curl jq commands:
- | - apk add --no-cache curl jq
# Ensure required variables are set - |
if [ -z "$GITEA_TOKEN" ] || [ -z "$GITEA_SERVER" ]; then if [ -z "$GITEA_TOKEN" ] || [ -z "$GITEA_SERVER" ]; then
echo "Error: GITEA_TOKEN or GITEA_SERVER not set" echo "Error: GITEA_TOKEN or GITEA_SERVER not set"
exit 1 exit 1
fi fi
# Set repo path (fallback if DRONE_REPO is not set) REPO_PATH="${DRONE_REPO:-akshun/setup-script}"
REPO_PATH="${DRONE_REPO:-akshun/setup-script}"
# Create or get release if [ -n "${DRONE_TAG}" ]; then
if [ -n "${DRONE_TAG}" ]; then echo "Creating release for tag ${DRONE_TAG}"
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 \ response=$(curl -s -X POST \
-H "Authorization: token $GITEA_TOKEN" \ -H "Authorization: token $GITEA_TOKEN" \
-H "Content-Type: application/json" \ -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") "$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 fi
release_id=$(echo "$response" | jq -r '.id')
fi
# Upload artifacts for artifact in /artifacts/*-setup; do
for artifact in /artifacts/*-setup; do if [ -f "$artifact" ]; then
if [ -f "$artifact" ]; then filename=$(basename "$artifact")
filename=$(basename "$artifact") echo "Uploading $filename"
echo "Uploading $filename to Gitea release $release_id" curl -X POST \
curl -X POST \ -H "Authorization: token $GITEA_TOKEN" \
-H "Authorization: token $GITEA_TOKEN" \ -H "Content-Type: multipart/form-data" \
-H "Content-Type: multipart/form-data" \ -F "attachment=@$artifact" \
-F "attachment=@$artifact" \ "$GITEA_SERVER/api/v1/repos/$REPO_PATH/releases/$release_id/assets?name=$filename"
"$GITEA_SERVER/api/v1/repos/$REPO_PATH/releases/$release_id/assets?name=$filename" fi
else done
echo "No artifacts found matching /artifacts/*-setup" environment:
fi GITEA_TOKEN:
done from_secret: gitea-token
environment: GITEA_SERVER:
GITEA_TOKEN: from_secret: gitea-server
from_secret: gitea-token volumes:
GITEA_SERVER: - name: artifacts
from_secret: gitea-server path: /artifacts
volumes:
- name: artifacts
path: /artifacts
volumes: volumes:
- name: artifacts - name: artifacts
temp: {} temp: {}