Docker 세계에서 패키지 빌드 테스트
PKGBUILD
파일을 작성하고 빌드하지만 빌드 스크립트가 이식 가능하고 필요한 종속성이 있는 최신 상태인지 확인해야 합니다.이전에 CI를 구축했다면 Docker가 이에 대한 사실상의 솔루션이라는 것을 이미 알고 있을 것입니다. 컨테이너를 생성하고, Arch Linux 패키지를 빌드하기 위해 종속성을 설치한 다음, PKGBUILD를 빌드하여 성공 결과를 확인해야 합니다.
컨테이너 생성
먼저 docker 패키지를 설치하고 서비스를 시작해야 합니다.
sudo pacman -S docker
sudo systemctl start docker.service
그런 다음 Arch Linux 이미지를 기본으로 사용하여 대화형 컨테이너를 시작합니다.
sudo docker run -it archlinux bash
용기 준비
base-devel
패키지 그룹을 컨테이너에 추가해야 합니다. 이러한 패키지는 패키지를 직접 빌드하는 데 필요합니다. Arch Linux 팀은 이것package group pre-installed으로 새로운 도커 이미지archlinux:devel
에서 작업하고 있습니다.그리고 AUR 리포지토리에서 호스팅되는
PKGBUILD
를 테스트하려는 경우 Git.pacman -Sy --noconfirm base-devel git
💡 팁: 지리적 위치를 기반으로 좋은 대역폭을 얻으려면
/etc/pacman.d/mirrorlist
파일을 확인해야 할 수도 있습니다.루트가 아닌 사용자 추가
보안상의 이유로
makepkg
는 root
로 실행할 수 없지만 패키지를 빌드하려면 sudo를 사용하여 사용자를 추가해야 합니다.useradd builduser -m # Create the builduser
passwd -d builduser # Delete the buildusers password
printf 'builduser ALL=(ALL) ALL\n' | tee -a /etc/sudoers # Allow the builduser passwordless sudo
이제 사용자를 변경합니다.
su builduser && cd
AUR 패키지 복제
yay
와 같은 AUR 도우미를 사용하지 않고 AUR 패키지를 복제할 수 있습니다. 에서 방문한 .Net Core 앱을 사용합니다.git clone https://aur.archlinux.org/taskcore.git
패키지 빌드
이제 패키지를 빌드하고 설치할 수 있습니다.
makepkg -si --noconfirm
그런 다음 런타임에 필요하지 않은 고아 패키지를 정리합니다.
pacman -Rns $(pacman -Qtdq)
빌드 프로세스 자동화
대화형 터미널 없이 빌드 단계를 실행하기 위해
Dockerfile
를 생성할 수 있습니다.FROM archlinux
RUN pacman -Sy --noconfirm base-devel git
ARG AUR_PACKAGE=taskcore
RUN useradd builduser -m \
&& passwd -d builduser \
&& cd /home/builduser \
&& git clone "https://aur.archlinux.org/$AUR_PACKAGE.git" target \
&& chown builduser -R target \
&& (printf 'builduser ALL=(ALL) ALL\n' | tee -a /etc/sudoers) \
&& sudo -u builduser bash -c 'cd ~/target && makepkg -si --noconfirm' \
&& pacman -Rns $(pacman -Qtdq)
WORKDIR /home/builduser/target
CMD ["bash"]
--build-arg
인수를 사용하여 다른 패키지를 빌드할 수 있습니다.sudo docker build --build-arg AUR_PACKAGE=git-delta -t git-delta .
패키지를 실행하십시오!
런타임 종속성을 확인하기 위해 패키지를 실행하는 것을 잊지 마십시오.
docker run -it taskcore
taskcore ls
새로운 베이스 레벨 이미지! (업데이트 2020-11-06)
티켓은 closed이었고 새로운
archlinux:base-devel
이미지를 사용할 수 있습니다. 현재 크기는 archlinux:latest
(일명 archlinux:base
)에 대해 700MB 대 467MB입니다.
Reference
이 문제에 관하여(Docker 세계에서 패키지 빌드 테스트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/cloudx/testing-our-package-build-in-the-docker-world-34p0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)