diff --git a/.gitea/workflows/e2e-tests.yaml b/.gitea/workflows/e2e-tests.yaml index 5ea2b44..e3fd27d 100644 --- a/.gitea/workflows/e2e-tests.yaml +++ b/.gitea/workflows/e2e-tests.yaml @@ -28,6 +28,7 @@ jobs: container: image: altlinux.space/maks1ms/actions-container-runner:latest + privileged: true steps: - name: Checkout @@ -39,14 +40,15 @@ jobs: uses: https://github.com/actions/setup-go@v5 with: go-version: '1.24' + cache: false - - name: Cache Podman images - uses: actions/cache@v4 - with: - path: | - ~/.local/share/containers/storage - /var/lib/containers/storage - key: ${{ runner.os }}-primes + # - name: Cache Podman images + # uses: actions/cache@v4 + # with: + # path: | + # ~/.local/share/containers/storage + # /var/lib/containers/storage + # key: ${{ runner.os }}-primes - name: Run E2E tests env: diff --git a/.gitea/workflows/pre-commit.yaml b/.gitea/workflows/pre-commit.yaml index a107511..ed1fc26 100644 --- a/.gitea/workflows/pre-commit.yaml +++ b/.gitea/workflows/pre-commit.yaml @@ -26,6 +26,8 @@ on: jobs: pre-commit: runs-on: ubuntu-latest + container: + image: docker.gitea.com/runner-images:ubuntu-latest steps: - name: Checkout diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml index f092a0b..6b8243f 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release.yaml @@ -45,9 +45,15 @@ jobs: echo "Version - $version" echo "VERSION=$version" >> $GITHUB_ENV - - name: Build alr binary + - name: Prepare for install run: | - CGO_ENABLED=0 go build -ldflags "-X gitea.plemya-x.ru/Plemya-x/ALR/internal/config.Version=${{ env.VERSION }}" -o alr + apt-get update && apt-get install -y libcap2-bin bindfs + + - name: Build alr + env: + IGNORE_ROOT_CHECK: 1 + run: | + make build - name: Create tar.gz run: | @@ -65,30 +71,30 @@ jobs: files: |- alr-${{ env.VERSION }}-linux-x86_64.tar.gz - - name: Clone alr-default repository - run: | - git clone https://gitea:${{ secrets.GITEAPUBLIC }}@gitea.plemya-x.ru/Plemya-x/alr-default.git /tmp/alr-default + - name: Checkout alr-default repository + uses: actions/checkout@v4 + with: + repository: Plemya-x/alr-default + token: ${{ secrets.GITEAPUBLIC }} + path: alr-default - name: Update version in alr-bin run: | # Замените значения в файле с конфигурацией - sed -i "s/version='[0-9]\+\.[0-9]\+\.[0-9]\+'/version='${{ env.VERSION }}'/g" /tmp/alr-default/alr-bin/alr.sh - sed -i "s/release='[0-9]\+'/release='1'/g" /tmp/alr-default/alr-bin/alr.sh + sed -i "s/version='[0-9]\+\.[0-9]\+\.[0-9]\+'/version='${{ env.VERSION }}'/g" alr-default/alr-bin/alr.sh + sed -i "s/release='[0-9]\+'/release='1'/g" alr-default/alr-bin/alr.sh - - name: Commit changes + - name: Install alr run: | - cd /tmp/alr-default - git config user.name "gitea" - git config user.email "admin@plemya-x.ru" - git remote set-url origin https://gitea:${{ secrets.GITEAPUBLIC }}@gitea.plemya-x.ru/Plemya-x/alr-default.git - git remote -v - git add . - git commit -m "Обновление версии до ${{ env.VERSION }}" - git push origin master + make install + + # temporary fix + groupadd wheel + usermod -aG wheel root - name: Build packages run: | - SCRIPT_PATH=/tmp/alr-default/alr-bin/alr.sh + SCRIPT_PATH=alr-default/alr-bin/alr.sh ALR_DISTRO=altlinux ALR_PKG_FORMAT=rpm alr build -s "$SCRIPT_PATH" ALR_PKG_FORMAT=rpm alr build -s "$SCRIPT_PATH" ALR_PKG_FORMAT=deb alr build -s "$SCRIPT_PATH" @@ -102,4 +108,13 @@ jobs: alr-bin+alr-default_${{ env.VERSION }}-1.red80_amd64.deb \ alr-bin+alr-default-${{ env.VERSION }}-1-x86_64.pkg.tar.zst \ alr-bin+alr-default-${{ env.VERSION }}-1.red80.x86_64.rpm \ - alr-bin+alr-default-${{ env.VERSION }}-alt1.x86_64.rpm + alr-bin+alr-default-${{ env.VERSION }}-alt1.x86_64.rpm + + - name: Commit changes + run: | + cd alr-default + git config user.name "gitea" + git config user.email "admin@plemya-x.ru" + git add . + git commit -m "Обновление версии до ${{ env.VERSION }}" + git push diff --git a/Makefile b/Makefile index 09b742b..8b1d5aa 100644 --- a/Makefile +++ b/Makefile @@ -24,7 +24,7 @@ $(BIN): go build -ldflags="-X 'gitea.plemya-x.ru/Plemya-x/ALR/internal/config.Version=$(GIT_VERSION)'" -o $@ check-no-root: - @if [[ "$(IGNORE_ROOT_CHECK)" != "1" ]] && [[ "$$(whoami)" == 'root' ]]; then \ + @if [ "$$IGNORE_ROOT_CHECK" != "1" ] && [ "`whoami`" = "root" ]; then \ echo "This target shouldn't run as root" 1>&2; \ echo "Set IGNORE_ROOT_CHECK=1 to override" 1>&2; \ exit 1; \ @@ -39,6 +39,12 @@ install: \ $(INSTALED_BIN): $(BIN) install -Dm755 $< $@ setcap cap_setuid,cap_setgid+ep $(INSTALED_BIN) + @if id alr >/dev/null 2>&1; then \ + echo "User 'alr' already exists. Skipping."; \ + else \ + useradd -r -s /usr/sbin/nologin alr; \ + fi + install -d -o alr -g alr -m 755 /var/cache/alr /etc/alr $(INSTALLED_BASH_COMPLETION): $(BASH_COMPLETION) install -Dm755 $< $@ diff --git a/README.md b/README.md index 1482ddb..87f514f 100644 --- a/README.md +++ b/README.md @@ -20,10 +20,10 @@ ALR написан на чистом Go и после сборки не имее Установочный скрипт автоматически загрузит и установит соответствующий пакет ALR в вашей системе. Чтобы использовать его, просто выполните следующую команду: ```bash -curl -fsSL plemya-x.ru/alr/install.sh | bash +curl -fsSL https://gitea.plemya-x.ru/Plemya-x/ALR/raw/branch/master/scripts/install.sh | bash ``` -**ВАЖНО**: При этом скрипт будет загружен и запущен с . Пожалуйста, просматривайте любые скрипты, которые вы скачиваете из Интернета (включая этот), прежде чем запускать их. +**ВАЖНО**: При этом скрипт будет загружен и запущен [скрипт](https://gitea.plemya-x.ru/Plemya-x/ALR/src/branch/master/scripts/install.sh). Пожалуйста, просматривайте любые скрипты, которые вы скачиваете из Интернета (включая этот), прежде чем запускать их. ### Сборка из исходного кода diff --git a/e2e-tests/common_test.go b/e2e-tests/common_test.go index 00bfe74..f46753b 100644 --- a/e2e-tests/common_test.go +++ b/e2e-tests/common_test.go @@ -182,7 +182,7 @@ func runTestCommands(t *testing.T, r e2e.Runnable, timeout time.Duration, expect } const REPO_NAME_FOR_E2E_TESTS = "alr-repo" -const REPO_URL_FOR_E2E_TESTS = "https://gitea.plemya-x.ru/Maks1mS/repo-for-tests.git" +const REPO_URL_FOR_E2E_TESTS = "https://gitea.plemya-x.ru/Plemya-x/repo-for-tests.git" func defaultPrepare(t *testing.T, r e2e.Runnable) { execShouldNoError(t, r, diff --git a/scripts/install.sh b/scripts/install.sh index d92b19d..2528408 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -41,10 +41,10 @@ installPkg() { fi case $1 in - pacman) $rootCmd pacman --noconfirm -U ${@:2} ;; - apk) $rootCmd apk add --allow-untrusted ${@:2} ;; - zypper) $rootCmd zypper --no-gpg-checks install ${@:2} ;; - *) $rootCmd $1 install -y ${@:2} ;; + pacman) $rootCmd pacman --noconfirm -U "${@:2}" ;; + apk) $rootCmd apk add --allow-untrusted "${@:2}" ;; + zypper) $rootCmd zypper --no-gpg-checks install "${@:2}" ;; + *) $rootCmd "$1" install -y "${@:2}" ;; esac } @@ -88,60 +88,51 @@ else fi if [ -z "$noPkgMgr" ]; then - info "Получение списка файлов с https://plemya-x.ru/" - pageContent=$(curl -s https://plemya-x.ru/?dir=alr) + info "Получение списка файлов с https://gitea.plemya-x.ru/Plemya-x/ALR/releases" + + # Изменено URL и регулярное выражение для списка файлов + pageContent=$(curl -s https://gitea.plemya-x.ru/Plemya-x/ALR/releases) # Извлечение списка файлов из HTML - fileList=$(echo "$pageContent" | grep -oP '(?<=href=").*?(?=")' | grep -E 'alr-bin-.*.(pkg.tar.zst|rpm|deb)') + fileList=$(echo "$pageContent" | grep -oP '(?<=href=").*?(?=")' | grep -E 'alr-bin.*\.(pkg.tar.zst|rpm|deb)') echo "Полученный список файлов:" echo "$fileList" -if [ "$pkgMgr" == "pacman" ]; then - latestFile=$(echo "$fileList" | grep -E 'alr-bin-.*\.pkg\.tar\.zst' | sort -V | tail -n 1) -elif [ "$pkgMgr" == "apt" ]; then - latestFile=$(echo "$fileList" | grep -E 'alr-bin-.*\.amd64\.deb' | sort -V | tail -n 1) -elif [[ "$pkgMgr" == "dnf" || "$pkgMgr" == "yum" || "$pkgMgr" == "zypper" ]]; then - latestFile=$(echo "$fileList" | grep -E 'alr-bin-.*\.x86_64\.rpm' | grep -v 'alt1' | sort -V | tail -n 1) -elif [ "$pkgMgr" == "apt-get" ]; then - latestFile=$(echo "$fileList" | grep -E 'alr-bin-.*-alt[0-9]+\.x86_64\.rpm' | sort -V | tail -n 1) + + if [ "$pkgMgr" == "pacman" ]; then + latestFile=$(echo "$fileList" | grep -E 'alr-bin-.*\.pkg\.tar\.zst' | sort -V | tail -n 1) + elif [ "$pkgMgr" == "apt" ]; then + latestFile=$(echo "$fileList" | grep -E 'alr-bin-.*\.amd64\.deb' | sort -V | tail -n 1) + elif [[ "$pkgMgr" == "dnf" || "$pkgMgr" == "yum" || "$pkgMgr" == "zypper" ]]; then + latestFile=$(printf "%s\n" "${fileList[@]}" | grep -E 'alr-bin-.*\.x86_64\.rpm' | grep -v 'alt[0-9]*' | sort -V | tail -n 1) + elif [ "$pkgMgr" == "apt-get" ]; then + latestFile=$(echo "$fileList" | grep -E 'alr-bin-.*-alt[0-9]+\.x86_64\.rpm' | sort -V | tail -n 1) + else + error "Не поддерживаемый менеджер пакетов для автоматической установки" + fi + + if [ -z "$latestFile" ]; then + error "Не удалось найти соответствующий пакет для $pkgMgr" + fi + + info "Найдена последняя версия ALR: $latestFile" + + fname="$(mktemp -u -p /tmp "alr.XXXXXXXXXX").${pkgFormat}" + + info "Загрузка пакета ALR" + curl -o $fname -L "$latestFile" + + if [ ! -f "$fname" ]; then + error "Ошибка загрузки пакета ALR" + fi + + info "Установка пакета ALR" + installPkg "$pkgMgr" "$fname" + + info "Очистка" + rm "$fname" + + info "Готово!" else -error "Не поддерживаемый менеджер пакетов для автоматической установки" -fi - -if [ -z "$latestFile" ]; then -error "Не удалось найти соответствующий пакет для $pkgMgr" -fi - -info "Найдена последняя версия ALR: $latestFile" - -url="https://plemya-x.ru/$latestFile" -fname="$(mktemp -u -p /tmp "alr.XXXXXXXXXX").${pkgFormat}" - -info "Загрузка пакета ALR" -curl -L $url -o $fname - -if [ ! -f "$fname" ]; then -error "Ошибка загрузки пакета ALR" -fi - -info "Установка пакета ALR" -installPkg $pkgMgr $fname - -info "Очистка" -rm $fname - -info "Готово!" - -else -info "Клонирование репозитория ALR" -git clone https://gitea.plemya-x.ru/xpamych/ALR.git /tmp/alr - -info "Установка ALR" -cd /tmp/alr -sudo make install - -info "Очистка репозитория ALR" -rm -rf /tmp/alr - -info "Все задачи выполнены!" + echo "Не найден поддерживаемый менеджер пакетов. О_о" fi