This commit is contained in:
31
.drone.yml
31
.drone.yml
@@ -1,9 +1,9 @@
|
||||
kind: pipeline
|
||||
type: kubernetes
|
||||
name: Build on Multiple Distributions
|
||||
name: multi-distro-build
|
||||
|
||||
steps:
|
||||
- name: clone-repo
|
||||
- name: clone
|
||||
image: alpine/git:latest
|
||||
commands:
|
||||
- git clone https://gitea.akshun-lab.uk/akshun/setup-script.git /artifacts
|
||||
@@ -11,11 +11,9 @@ steps:
|
||||
- name: artifacts
|
||||
path: /artifacts
|
||||
|
||||
- name: parallel-builds
|
||||
parallel:
|
||||
# Arch Linux build
|
||||
- name: build-on-arch
|
||||
- name: build-arch
|
||||
image: archlinux:latest
|
||||
depends_on: [clone]
|
||||
commands:
|
||||
- pacman -Syu --noconfirm
|
||||
- pacman -S --noconfirm git python python-pip binutils
|
||||
@@ -29,9 +27,9 @@ steps:
|
||||
- name: artifacts
|
||||
path: /artifacts
|
||||
|
||||
# Debian build
|
||||
- name: build-on-debian
|
||||
- name: build-debian
|
||||
image: debian:stable-slim
|
||||
depends_on: [clone]
|
||||
commands:
|
||||
- apt-get update && apt-get upgrade -y
|
||||
- apt-get install -y git python3 python3-pip binutils
|
||||
@@ -44,9 +42,9 @@ steps:
|
||||
- name: artifacts
|
||||
path: /artifacts
|
||||
|
||||
# Fedora build
|
||||
- name: build-on-fedora
|
||||
- name: build-fedora
|
||||
image: fedora:latest
|
||||
depends_on: [clone]
|
||||
commands:
|
||||
- dnf update -y
|
||||
- dnf install -y git python python-pip binutils
|
||||
@@ -58,21 +56,19 @@ steps:
|
||||
- name: artifacts
|
||||
path: /artifacts
|
||||
|
||||
- name: upload-to-gitea
|
||||
- name: upload
|
||||
image: alpine/curl:latest
|
||||
depends_on: [build-arch, build-debian, build-fedora]
|
||||
commands:
|
||||
- apk add --no-cache 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 \
|
||||
@@ -83,12 +79,10 @@ steps:
|
||||
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" \
|
||||
@@ -100,18 +94,15 @@ steps:
|
||||
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"
|
||||
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"
|
||||
else
|
||||
echo "No artifacts found matching /artifacts/*-setup"
|
||||
fi
|
||||
done
|
||||
environment:
|
||||
|
||||
Reference in New Issue
Block a user