This commit is contained in:
211
.drone.yml
211
.drone.yml
@@ -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: {}
|
||||||
Reference in New Issue
Block a user