初步自动构建工程实现

This commit is contained in:
2024-08-30 16:16:17 +08:00
parent 2ebe593876
commit 2da86f0aa2
7 changed files with 330 additions and 0 deletions
+199
View File
@@ -0,0 +1,199 @@
name: Building GXDE Testing Package
run-name: Building ${{ GITHUB.REPOSITORY }}
on:
workflow_call:
secrets:
PASSWD:
required: true
USERS:
required: true
HOST:
required: true
UPATH:
required: true
UPROGRAM:
required: true
UPORT:
required: true
env:
REPOSITORY: https://github.com/GXDE-OS/GXDE
BOTTLEPATH: system-bottle
jobs:
amd64:
runs-on: ubuntu-latest
steps:
- name: Clone Repository To Get Script
run: |
git clone $REPOSITORY --depth=1
mv $(basename $REPOSITORY)/* . -v
mv $(basename $REPOSITORY)/.* . -v | true
- name: Configure Base System
run: |
bash .github/workflows/configure-building-enviroment-base-system.sh amd64 bookworm $REPOSITORY
- name: Building ${{ GITHUB.repository }}
run: |
env gitPath=$(basename $REPOSITORY) bash .github/workflows/run-command-in-chroot.sh dpkg-buildpackage -b
- name: Remove Debug Package
run: |
env gitPath=$(basename $REPOSITORY) bash .github/workflows/run-command-in-chroot.sh rm -rfv ../*dbg*.deb
- name: Pack tar
run: |
cd $BOTTLEPATH
sudo tar -cvf ../deb-$(date +%s).tar *.deb
- name: Push
env:
UPASSWD: ${{ secrets.PASSWD }}
UUSERS: ${{ secrets.USERS }}
UHOST: ${{ secrets.HOST }}
UPATH: ${{ secrets.UPATH }}
UPROGRAM: ${{ secrets.UPROGRAM }}
UPORT: ${{ secrets.UPORT }}
run: |
sudo apt update
sudo apt install sshpass -y
mkdir -p ~/.ssh/
ssh-keyscan -p $UPORT -H $UHOST >> ~/.ssh/known_hosts
tarName=$(ls | grep .tar | head -n 1)
sshpass -p "$UPASSWD" rsync -e "ssh -p $UPORT" $tarName $UUSERS@$UHOST:$UPATH
sshpass -p "$UPASSWD" ssh $UUSERS@$UHOST -p $UPORT $UPROGRAM $UPATH/$tarName > /dev/null
arm64:
runs-on: ubuntu-latest
steps:
- name: Clone Repository To Get Script
run: |
git clone $REPOSITORY --depth=1
mv $(basename $REPOSITORY)/* . -v
mv $(basename $REPOSITORY)/.* . -v | true
- name: Configure Base System
run: |
bash .github/workflows/configure-building-enviroment-base-system.sh arm64 bookworm $REPOSITORY
- name: Building ${{ GITHUB.repository }}
run: |
env gitPath=$(basename $REPOSITORY) bash .github/workflows/run-command-in-chroot.sh dpkg-buildpackage -b
- name: Remove Debug Package
run: |
env gitPath=$(basename $REPOSITORY) bash .github/workflows/run-command-in-chroot.sh rm -rfv ../*dbg*.deb
- name: Pack tar
run: |
cd $BOTTLEPATH
sudo tar -cvf ../deb-$(date +%s).tar *.deb
- name: Push
env:
UPASSWD: ${{ secrets.PASSWD }}
UUSERS: ${{ secrets.USERS }}
UHOST: ${{ secrets.HOST }}
UPATH: ${{ secrets.UPATH }}
UPROGRAM: ${{ secrets.UPROGRAM }}
UPORT: ${{ secrets.UPORT }}
run: |
sudo apt update
sudo apt install sshpass -y
mkdir -p ~/.ssh/
ssh-keyscan -p $UPORT -H $UHOST >> ~/.ssh/known_hosts
tarName=$(ls | grep .tar | head -n 1)
sshpass -p "$UPASSWD" rsync -e "ssh -p $UPORT" $tarName $UUSERS@$UHOST:$UPATH
sshpass -p "$UPASSWD" ssh $UUSERS@$UHOST -p $UPORT $UPROGRAM $UPATH/$tarName > /dev/null
mips64:
runs-on: ubuntu-latest
steps:
- name: Clone Repository To Get Script
run: |
git clone $REPOSITORY --depth=1
mv $(basename $REPOSITORY)/* . -v
mv $(basename $REPOSITORY)/.* . -v | true
- name: Configure Base System
run: |
bash .github/workflows/configure-building-enviroment-base-system.sh mips64el bookworm $REPOSITORY
- name: Building ${{ GITHUB.repository }}
run: |
env gitPath=$(basename $REPOSITORY) bash .github/workflows/run-command-in-chroot.sh dpkg-buildpackage -b
- name: Remove Debug Package
run: |
env gitPath=$(basename $REPOSITORY) bash .github/workflows/run-command-in-chroot.sh rm -rfv ../*dbg*.deb
- name: Pack tar
run: |
cd $BOTTLEPATH
sudo tar -cvf ../deb-$(date +%s).tar *.deb
- name: Push
env:
UPASSWD: ${{ secrets.PASSWD }}
UUSERS: ${{ secrets.USERS }}
UHOST: ${{ secrets.HOST }}
UPATH: ${{ secrets.UPATH }}
UPROGRAM: ${{ secrets.UPROGRAM }}
UPORT: ${{ secrets.UPORT }}
run: |
sudo apt update
sudo apt install sshpass -y
mkdir -p ~/.ssh/
ssh-keyscan -p $UPORT -H $UHOST >> ~/.ssh/known_hosts
tarName=$(ls | grep .tar | head -n 1)
sshpass -p "$UPASSWD" rsync -e "ssh -p $UPORT" $tarName $UUSERS@$UHOST:$UPATH
sshpass -p "$UPASSWD" ssh $UUSERS@$UHOST -p $UPORT $UPROGRAM $UPATH/$tarName > /dev/null
loong64:
runs-on: ubuntu-latest
steps:
- name: Clone Repository To Get Script
run: |
git clone $REPOSITORY --depth=1
mv $(basename $REPOSITORY)/* . -v
mv $(basename $REPOSITORY)/.* . -v | true
- name: Configure Base System
run: |
bash .github/workflows/configure-building-enviroment-base-system.sh loong64 unstable $REPOSITORY https://mirror.sjtu.edu.cn/debian-ports/
- name: Building ${{ GITHUB.repository }}
run: |
env gitPath=$(basename $REPOSITORY) bash .github/workflows/run-command-in-chroot.sh dpkg-buildpackage -b
- name: Remove Debug Package
run: |
env gitPath=$(basename $REPOSITORY) bash .github/workflows/run-command-in-chroot.sh rm -rfv ../*dbg*.deb
- name: Pack tar
run: |
cd $BOTTLEPATH
sudo tar -cvf ../deb-$(date +%s).tar *.deb
- name: Push
env:
UPASSWD: ${{ secrets.PASSWD }}
UUSERS: ${{ secrets.USERS }}
UHOST: ${{ secrets.HOST }}
UPATH: ${{ secrets.UPATH }}
UPROGRAM: ${{ secrets.UPROGRAM }}
UPORT: ${{ secrets.UPORT }}
run: |
sudo apt update
sudo apt install sshpass -y
mkdir -p ~/.ssh/
ssh-keyscan -p $UPORT -H $UHOST >> ~/.ssh/known_hosts
tarName=$(ls | grep .tar | head -n 1)
sshpass -p "$UPASSWD" rsync -e "ssh -p $UPORT" $tarName $UUSERS@$UHOST:$UPATH
sshpass -p "$UPASSWD" ssh $UUSERS@$UHOST -p $UPORT $UPROGRAM $UPATH/$tarName > /dev/null
@@ -0,0 +1,38 @@
#!/bin/bash
# $1=arm64
# $2=buster
function getd23debootstrap() {
git clone https://github.com/deepin-community/debootstrap --depth=1
cd debootstrap
sudo apt build-dep . -y
dpkg-buildpackage -b
sudo apt install ../*.deb -y --allow-downgrades
cd ..
sudo cp deepin-archive-camel-keyring.gpg /etc/apt/trusted.gpg.d/deepin-archive-camel-keyring.gpg -rv
}
function useDebianPort() {
sudo apt install debian-ports-archive-keyring -y
sudo cp /usr/share/keyrings/debian-archive-keyring.gpg /usr/share/keyrings/debian-ports-archive-keyring.gpg -v
}
sudo apt update
sudo apt install debootstrap qemu-user-static git -y
bottlePath=./system-bottle
if [[ $2 == "beige" ]]; then
getd23debootstrap
else
if [[ $1 == "loong64" ]]; then
useDebianPort
fi
fi
sudo debootstrap --arch=$1 $2 $bottlePath $4
sudo bash .github/workflows/pardus-chroot $bottlePath
# 配置 git
sudo chroot $bottlePath apt update
sudo chroot $bottlePath apt install git -y
sudo chroot $bottlePath git clone $3 --depth=1
# 修改版本号
#sudo sed -i "s/) UNRELEASED; urgency=medium/~$2) UNRELEASED; urgency=medium/g" $bottlePath/deep-wine-runner-qemu-system/debian/changelog
env gitPath=$(basename $3) bash .github/workflows/run-command-in-chroot.sh .github/workflows/configure-building-enviroment.sh
exit 0
+4
View File
@@ -0,0 +1,4 @@
#!/bin/bash
export DEBIAN_FRONTEND=noninteractive # 防止卡 tzdate
brew install libffi gettext glib pkg-config autoconf automake pixman ninja
exit 0
+42
View File
@@ -0,0 +1,42 @@
#!/bin/bash
export DEBIAN_FRONTEND=noninteractive # 防止卡 tzdate
#mkdir -p /etc/apt/sources.list.d/
#cp /etc/apt/sources.list /etc/apt/sources.list.d/sources.list
#sed -i "s/deb /deb-src /g" /etc/apt/sources.list.d/sources.list
#cat /etc/apt/sources.list
#cat /etc/apt/sources.list.d/sources.list
# 判断系统版本
#cat /etc/issue | grep 12
#if [[ $? == 0 ]]; then
# echo "deb-src http://deb.debian.org/debian bookworm main" > /etc/apt/sources.list.d/debian-sources.list
#fi
#cat /etc/issue | grep sid
#if [[ $? == 0 ]]; then
# echo "deb-src http://deb.debian.org/debian sid main" > /etc/apt/sources.list.d/debian-sources.list
#fi
# 写入 GXDE 源
echo "deb [trusted=true] https://repo-gxde.gfdgdxi.top/gxde-os/tianlu ./" >> /etc/apt/sources.list.d/gxde-os.list
echo "deb [trusted=true] https://repo-gxde.gfdgdxi.top/gxde-os/bixie ./" >> /etc/apt/sources.list.d/gxde-os.list
if [[ $1 == "loong64" ]]; then
echo "deb [trusted=true] http://mirror.sjtu.edu.cn/debian-ports unreleased main" > /etc/apt/sources.list.d/debian-unreleased.list
fi
apt update
apt install dpkg-dev sudo neofetch -y
neofetch
#if [[ `arch` != "x86_64" ]]; then
# apt source qemu
# cd qemu-*/
# sed -i "s/gcc-s390x-linux-gnu,//g" debian/control
# sed -i "s/gcc-alpha-linux-gnu,//g" debian/control
# sed -i "s/gcc-sparc64-linux-gnu,//g" debian/control
# sed -i "s/gcc-powerpc64-linux-gnu,//g" debian/control
# sed -i "s/gcc-hppa-linux-gnu,//g" debian/control
# sed -i "s/gcc-riscv64-linux-gnu,//g" debian/control
# apt build-dep . -y
# cd ..
#fi
#apt build-dep qemu -y
# 如果是 Debian10 就需要安装 Python3 的依赖
#apt build-dep python3.7 -y
apt build-dep . -y
exit 0
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash
CPU_CORES=$(($(grep -c processor < /proc/cpuinfo)*2))
make build-python -j$CPU_CORES
make install-to-qemu-python -j$CPU_CORES
exit 0
+38
View File
@@ -0,0 +1,38 @@
#!/bin/bash
set +e
DESTDIR="$1"
if [[ $UID -ne 0 ]] ; then
echo "You must be root!"
exit 1
fi
if [[ -b "$1" ]] ; then
DESTDIR=$(mktemp -d)
mount "$1" "$DESTDIR"
fi
shift
if [[ "$DESTDIR" == "" || ! -f "$DESTDIR/etc/os-release" ]] ; then
echo "Target filesystem is invalid: $DESTDIR"
exit 1
fi
mount --bind /dev "$DESTDIR/dev"
mount --bind /run "$DESTDIR/run"
mount --bind /media "$DESTDIR/media"
mount -t devpts devpts "$DESTDIR/dev/pts"
mount -t sysfs sysfs "$DESTDIR/sys"
mount -t proc proc "$DESTDIR/proc"
mount -t tmpfs tmpfs "$DESTDIR/dev/shm"
mount --bind /tmp "$DESTDIR/tmp"
#if [[ -d /sys/firmware/efi/ ]] ; then
# mount -t efivarfs efivarfs "$DESTDIR/sys/firmware/efi/efivars"
#fi
#cat /etc/resolv.conf > $DESTDIR/etc/resolv.conf
#SHELL=/bin/bash unshare --fork --pid chroot "$DESTDIR" "$@"
#exit
# 下面的因为有问题,不使用
#if [[ -d /sys/firmware/efi/ ]] ; then
# while umount "$DESTDIR/sys/firmware/efi/efivars" 2>/dev/null ; do : ;done
#fi
#for dir in dev/pts dev/shm dev sys proc run media ; do
# while umount "$DESTDIR/$dir" 2>/dev/null; do : ;done
#done
#umount -lf "$DESTDIR" 2>/dev/null
+4
View File
@@ -0,0 +1,4 @@
#!/bin/bash
bottlePath=./system-bottle
#gitPath=
sudo chroot $bottlePath bash -c "cd $gitPath ; $*"