This commit is contained in:
121
.drone.yml
121
.drone.yml
@@ -1,86 +1,15 @@
|
||||
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/setup-script.git /artifacts
|
||||
volumes:
|
||||
- name: artifacts
|
||||
path: /artifacts
|
||||
|
||||
- name: build-on-arch
|
||||
image: archlinux:latest
|
||||
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 "bash/:bash/" --add-data "prompts/:prompts/" --add-data "config/:config/" setup.py
|
||||
volumes:
|
||||
- name: artifacts
|
||||
path: /artifacts
|
||||
|
||||
- name: upload-arch-artifact
|
||||
image: alpine
|
||||
commands:
|
||||
- cp /artifacts/dist/setup /artifacts/arch-setup
|
||||
volumes:
|
||||
- name: artifacts
|
||||
path: /artifacts
|
||||
|
||||
- name: build-on-debian
|
||||
image: debian:stable
|
||||
commands:
|
||||
- apt update && apt upgrade -y
|
||||
- apt install -y git python3 python3-pip binutils
|
||||
- mv /lib/python*/EXTERNALLY-MANAGED .
|
||||
- pip install pyinstaller inquirerpy distro
|
||||
- cd /artifacts
|
||||
- pyinstaller --onefile --add-data "bash/:bash/" --add-data "prompts/:prompts/" --add-data "config/:config/" setup.py
|
||||
volumes:
|
||||
- name: artifacts
|
||||
path: /artifacts
|
||||
|
||||
- name: upload-debian-artifact
|
||||
image: alpine
|
||||
commands:
|
||||
- cp /artifacts/dist/setup /artifacts/debian-setup
|
||||
volumes:
|
||||
- name: artifacts
|
||||
path: /artifacts
|
||||
|
||||
- name: build-on-fedora
|
||||
image: fedora:latest
|
||||
commands:
|
||||
- dnf up -y
|
||||
- dnf install -y git python python-pip binutils
|
||||
- pip install inquirerpy distro pyinstaller
|
||||
- cd /artifacts
|
||||
- pyinstaller --onefile --add-data "bash/:bash/" --add-data "prompts/:prompts/" --add-data "config/:config/" setup.py
|
||||
volumes:
|
||||
- name: artifacts
|
||||
path: /artifacts
|
||||
|
||||
- name: upload-fedora-artifact
|
||||
image: alpine
|
||||
commands:
|
||||
- cp /artifacts/dist/setup /artifacts/fedora-setup
|
||||
volumes:
|
||||
- name: artifacts
|
||||
path: /artifacts
|
||||
|
||||
- name: upload-to-gitea
|
||||
image: alpine/curl
|
||||
commands:
|
||||
- apk add curl jq
|
||||
- |
|
||||
# Set the release ID (use tag if available, otherwise "latest")
|
||||
if [ -z "$GITEA_TOKEN" ] || [ -z "$GITEA_SERVER" ]; then
|
||||
echo "Error: GITEA_TOKEN or GITEA_SERVER not set"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
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" \
|
||||
@@ -88,30 +17,44 @@ steps:
|
||||
"${GITEA_SERVER}/api/v1/repos/${DRONE_REPO}/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/${DRONE_REPO}/releases/latest")
|
||||
"${GITEA_SERVER}/api/v1/repos/${DRONE_REPO}/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/${DRONE_REPO}/releases")
|
||||
fi
|
||||
|
||||
release_id=$(echo "$response" | jq -r '.id')
|
||||
fi
|
||||
|
||||
for artifact in /artifacts/*-setup; do
|
||||
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/${DRONE_REPO}/releases/${release_id}/assets?name=${filename}"
|
||||
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/${DRONE_REPO}/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
|
||||
DRONE_TAG:
|
||||
from_secret: drone-tag
|
||||
volumes:
|
||||
- name: artifacts
|
||||
path: /artifacts
|
||||
|
||||
volumes:
|
||||
- name: artifacts
|
||||
temp: {}
|
||||
Reference in New Issue
Block a user