fix: prevent for building dependencies twice #99
| @@ -28,6 +28,7 @@ jobs: | |||||||
|  |  | ||||||
|     container: |     container: | ||||||
|       image: altlinux.space/maks1ms/actions-container-runner:latest |       image: altlinux.space/maks1ms/actions-container-runner:latest | ||||||
|  |       privileged: true | ||||||
|  |  | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
| @@ -39,14 +40,15 @@ jobs: | |||||||
|         uses: https://github.com/actions/setup-go@v5 |         uses: https://github.com/actions/setup-go@v5 | ||||||
|         with: |         with: | ||||||
|           go-version: '1.24' |           go-version: '1.24' | ||||||
|  |           cache: false | ||||||
|  |  | ||||||
|       - name: Cache Podman images |       # - name: Cache Podman images | ||||||
|         uses: actions/cache@v4 |       #   uses: actions/cache@v4 | ||||||
|         with: |       #   with: | ||||||
|           path: | |       #     path: | | ||||||
|             ~/.local/share/containers/storage |       #       ~/.local/share/containers/storage | ||||||
|             /var/lib/containers/storage |       #       /var/lib/containers/storage | ||||||
|           key: ${{ runner.os }}-primes             |       #     key: ${{ runner.os }}-primes             | ||||||
|  |  | ||||||
|       - name: Run E2E tests |       - name: Run E2E tests | ||||||
|         env: |         env: | ||||||
|   | |||||||
| @@ -26,6 +26,8 @@ on: | |||||||
| jobs: | jobs: | ||||||
|   pre-commit: |   pre-commit: | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|  |     container: | ||||||
|  |       image: docker.gitea.com/runner-images:ubuntu-latest | ||||||
|  |  | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|   | |||||||
| @@ -45,9 +45,15 @@ jobs: | |||||||
|           echo "Version - $version" |           echo "Version - $version" | ||||||
|           echo "VERSION=$version" >> $GITHUB_ENV |           echo "VERSION=$version" >> $GITHUB_ENV | ||||||
|  |  | ||||||
|       - name: Build alr binary |       - name: Prepare for install | ||||||
|         run: | |         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 |       - name: Create tar.gz | ||||||
|         run: | |         run: | | ||||||
| @@ -65,30 +71,30 @@ jobs: | |||||||
|           files: |- |           files: |- | ||||||
|             alr-${{ env.VERSION }}-linux-x86_64.tar.gz |             alr-${{ env.VERSION }}-linux-x86_64.tar.gz | ||||||
|  |  | ||||||
|       - name: Clone alr-default repository |       - name: Checkout alr-default repository | ||||||
|         run: | |         uses: actions/checkout@v4 | ||||||
|           git clone https://gitea:${{ secrets.GITEAPUBLIC  }}@gitea.plemya-x.ru/Plemya-x/alr-default.git /tmp/alr-default |         with: | ||||||
|  |           repository: Plemya-x/alr-default | ||||||
|  |           token: ${{ secrets.GITEAPUBLIC }} | ||||||
|  |           path: alr-default | ||||||
|  |  | ||||||
|       - name: Update version in alr-bin |       - name: Update version in alr-bin | ||||||
|         run: | |         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/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" /tmp/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: | |         run: | | ||||||
|           cd /tmp/alr-default |           make install | ||||||
|           git config user.name "gitea" |  | ||||||
|           git config user.email "admin@plemya-x.ru" |           # temporary fix | ||||||
|           git remote set-url origin https://gitea:${{ secrets.GITEAPUBLIC }}@gitea.plemya-x.ru/Plemya-x/alr-default.git |           groupadd wheel | ||||||
|           git remote -v |           usermod -aG wheel root | ||||||
|           git add . |  | ||||||
|           git commit -m "Обновление версии до ${{ env.VERSION }}" |  | ||||||
|           git push origin master |  | ||||||
|  |  | ||||||
|       - name: Build packages |       - name: Build packages | ||||||
|         run: | |         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_DISTRO=altlinux ALR_PKG_FORMAT=rpm alr build -s "$SCRIPT_PATH" | ||||||
|           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" |           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.red80_amd64.deb \ | ||||||
|             alr-bin+alr-default-${{ env.VERSION }}-1-x86_64.pkg.tar.zst \ |             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 }}-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 | ||||||
|   | |||||||
							
								
								
									
										8
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								Makefile
									
									
									
									
									
								
							| @@ -24,7 +24,7 @@ $(BIN): | |||||||
| 	go build -ldflags="-X 'gitea.plemya-x.ru/Plemya-x/ALR/internal/config.Version=$(GIT_VERSION)'" -o $@ | 	go build -ldflags="-X 'gitea.plemya-x.ru/Plemya-x/ALR/internal/config.Version=$(GIT_VERSION)'" -o $@ | ||||||
|  |  | ||||||
| check-no-root: | 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 "This target shouldn't run as root" 1>&2; \ | ||||||
| 		echo "Set IGNORE_ROOT_CHECK=1 to override" 1>&2; \ | 		echo "Set IGNORE_ROOT_CHECK=1 to override" 1>&2; \ | ||||||
| 		exit 1; \ | 		exit 1; \ | ||||||
| @@ -39,6 +39,12 @@ install: \ | |||||||
| $(INSTALED_BIN): $(BIN) | $(INSTALED_BIN): $(BIN) | ||||||
| 	install -Dm755 $< $@ | 	install -Dm755 $< $@ | ||||||
| 	setcap cap_setuid,cap_setgid+ep $(INSTALED_BIN) | 	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) | $(INSTALLED_BASH_COMPLETION): $(BASH_COMPLETION) | ||||||
| 	install -Dm755 $< $@ | 	install -Dm755 $< $@ | ||||||
|   | |||||||
| @@ -20,10 +20,10 @@ ALR написан на чистом Go и после сборки не имее | |||||||
| Установочный скрипт автоматически загрузит и установит соответствующий пакет ALR в вашей системе. Чтобы использовать его, просто выполните следующую команду: | Установочный скрипт автоматически загрузит и установит соответствующий пакет ALR в вашей системе. Чтобы использовать его, просто выполните следующую команду: | ||||||
|  |  | ||||||
| ```bash | ```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://plemya-x.ru/alr/install.sh>. Пожалуйста, просматривайте любые скрипты, которые вы скачиваете из Интернета (включая этот), прежде чем запускать их. | **ВАЖНО**: При этом скрипт будет загружен и запущен [скрипт](https://gitea.plemya-x.ru/Plemya-x/ALR/src/branch/master/scripts/install.sh). Пожалуйста, просматривайте любые скрипты, которые вы скачиваете из Интернета (включая этот), прежде чем запускать их. | ||||||
|  |  | ||||||
| ### Сборка из исходного кода | ### Сборка из исходного кода | ||||||
|  |  | ||||||
|   | |||||||
| @@ -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_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) { | func defaultPrepare(t *testing.T, r e2e.Runnable) { | ||||||
| 	execShouldNoError(t, r, | 	execShouldNoError(t, r, | ||||||
|   | |||||||
| @@ -41,10 +41,10 @@ installPkg() { | |||||||
|   fi |   fi | ||||||
|  |  | ||||||
|   case $1 in |   case $1 in | ||||||
|   pacman) $rootCmd pacman --noconfirm -U ${@:2} ;; |   pacman) $rootCmd pacman --noconfirm -U "${@:2}" ;; | ||||||
|   apk) $rootCmd apk add --allow-untrusted ${@:2} ;; |   apk) $rootCmd apk add --allow-untrusted "${@:2}" ;; | ||||||
|   zypper) $rootCmd zypper --no-gpg-checks install ${@:2} ;; |   zypper) $rootCmd zypper --no-gpg-checks install "${@:2}" ;; | ||||||
|   *) $rootCmd $1 install -y ${@:2} ;; |   *) $rootCmd "$1" install -y "${@:2}" ;; | ||||||
|   esac |   esac | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -88,60 +88,51 @@ else | |||||||
| fi | fi | ||||||
|  |  | ||||||
| if [ -z "$noPkgMgr" ]; then | if [ -z "$noPkgMgr" ]; then | ||||||
|   info "Получение списка файлов с https://plemya-x.ru/" |   info "Получение списка файлов с https://gitea.plemya-x.ru/Plemya-x/ALR/releases" | ||||||
|   pageContent=$(curl -s https://plemya-x.ru/?dir=alr) |  | ||||||
|  |   # Изменено URL и регулярное выражение для списка файлов | ||||||
|  |   pageContent=$(curl -s https://gitea.plemya-x.ru/Plemya-x/ALR/releases) | ||||||
|  |  | ||||||
|   # Извлечение списка файлов из HTML |   # Извлечение списка файлов из 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 "Полученный список файлов:" | ||||||
|   echo "$fileList" |   echo "$fileList" | ||||||
| if [ "$pkgMgr" == "pacman" ]; then |  | ||||||
|     latestFile=$(echo "$fileList" | grep -E 'alr-bin-.*\.pkg\.tar\.zst' | sort -V | tail -n 1) |   if [ "$pkgMgr" == "pacman" ]; then | ||||||
| elif [ "$pkgMgr" == "apt" ]; then |       latestFile=$(echo "$fileList" | grep -E 'alr-bin-.*\.pkg\.tar\.zst' | sort -V | tail -n 1) | ||||||
|     latestFile=$(echo "$fileList" | grep -E 'alr-bin-.*\.amd64\.deb' | sort -V | tail -n 1) |   elif [ "$pkgMgr" == "apt" ]; then | ||||||
| elif [[ "$pkgMgr" == "dnf" || "$pkgMgr" == "yum" || "$pkgMgr" == "zypper" ]]; then |       latestFile=$(echo "$fileList" | grep -E 'alr-bin-.*\.amd64\.deb' | sort -V | tail -n 1) | ||||||
|     latestFile=$(echo "$fileList" | grep -E 'alr-bin-.*\.x86_64\.rpm' | grep -v 'alt1' | sort -V | tail -n 1) |   elif [[ "$pkgMgr" == "dnf" || "$pkgMgr" == "yum" || "$pkgMgr" == "zypper" ]]; then | ||||||
| elif [ "$pkgMgr" == "apt-get" ]; then |       latestFile=$(printf "%s\n" "${fileList[@]}" | grep -E 'alr-bin-.*\.x86_64\.rpm' | grep -v 'alt[0-9]*' | sort -V | tail -n 1) | ||||||
|     latestFile=$(echo "$fileList" | grep -E 'alr-bin-.*-alt[0-9]+\.x86_64\.rpm' | 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 | else | ||||||
| error "Не поддерживаемый менеджер пакетов для автоматической установки" |   echo "Не найден поддерживаемый менеджер пакетов. О_о" | ||||||
| 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 "Все задачи выполнены!" |  | ||||||
| fi | fi | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user