Loading .gitlab-ci.yml +39 −24 Original line number Diff line number Diff line stages: - download # Reusable template for downloading a package and its dependencies .default_download_template: &download_template stage: download image: ubuntu:22.04 # default image, overridden below variables: DEBIAN_FRONTEND: noninteractive DEST_DIR: /tmp/tmp PACKAGE_NAME: google-chrome-stable # Default package, can be overridden PACKAGE_NAME: google-chrome-stable before_script: # Create destination folder - mkdir -p "$DEST_DIR" # Update package list quietly - apt-get update -qq # Install necessary tools quietly - apt-get install -y -qq wget gnupg apt-rdepends script: # Optional: add repository if PACKAGE_NAME is Chrome - if [ "$PACKAGE_NAME" = "google-chrome-stable" ]; then echo "deb [arch=amd64] https://dl.google.com/linux/chrome/deb/ stable main" | tee /etc/apt/sources.list.d/google-chrome.list; wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add -; - | set -e # Add Google Chrome repository if PACKAGE_NAME is Chrome if [ "$PACKAGE_NAME" = "google-chrome-stable" ]; then echo "deb [arch=amd64] https://dl.google.com/linux/chrome/deb/ stable main" \ | tee /etc/apt/sources.list.d/google-chrome.list wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add - fi # Update package list again quietly after adding repo - apt-get update -qq # Update quietly apt-get update -qq echo "📦 Resolving dependencies for $PACKAGE_NAME..." # Get dependencies, filter out virtual packages deps=$(apt-rdepends "$PACKAGE_NAME" \ | grep -v "^ " \ | grep -v "$PACKAGE_NAME" \ | grep -vE '(-2\.0|:|<)') deps="$PACKAGE_NAME $deps" # Get exact dependencies for PACKAGE_NAME - deps=$(apt-rdepends "$PACKAGE_NAME" | grep -v "^ " | grep -v "$PACKAGE_NAME") - deps="$PACKAGE_NAME $deps" echo "✅ Packages to download:" echo "$deps" # Download package and dependencies quietly into DEST_DIR - cd "$DEST_DIR" - for pkg in $deps; do apt-get download -qq "$pkg"; cd "$DEST_DIR" # Download real packages only for pkg in $deps; do if ls "$pkg"_*.deb >/dev/null 2>&1; then echo "Already downloaded: $pkg" elif apt-cache show "$pkg" >/dev/null 2>&1; then echo "Downloading: $pkg" apt-get download -qq "$pkg" else echo "Skipping virtual or missing package: $pkg" fi done - echo "All .deb files for $PACKAGE_NAME and dependencies are in $DEST_DIR" echo "✅ All .deb files for $PACKAGE_NAME and dependencies are in $DEST_DIR" artifacts: paths: - /tmp/tmp # Cache apt downloads to speed up future jobs cache: key: apt-cache paths: - /var/cache/apt/archives # Job for Ubuntu 22.04 # Ubuntu 22.04 job ubuntu_22_04: <<: *download_template stage: download image: ubuntu:22.04 # Job for Ubuntu 24.04 # Ubuntu 24.04 job ubuntu_24_04: <<: *download_template stage: download image: ubuntu:24.04 Loading
.gitlab-ci.yml +39 −24 Original line number Diff line number Diff line stages: - download # Reusable template for downloading a package and its dependencies .default_download_template: &download_template stage: download image: ubuntu:22.04 # default image, overridden below variables: DEBIAN_FRONTEND: noninteractive DEST_DIR: /tmp/tmp PACKAGE_NAME: google-chrome-stable # Default package, can be overridden PACKAGE_NAME: google-chrome-stable before_script: # Create destination folder - mkdir -p "$DEST_DIR" # Update package list quietly - apt-get update -qq # Install necessary tools quietly - apt-get install -y -qq wget gnupg apt-rdepends script: # Optional: add repository if PACKAGE_NAME is Chrome - if [ "$PACKAGE_NAME" = "google-chrome-stable" ]; then echo "deb [arch=amd64] https://dl.google.com/linux/chrome/deb/ stable main" | tee /etc/apt/sources.list.d/google-chrome.list; wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add -; - | set -e # Add Google Chrome repository if PACKAGE_NAME is Chrome if [ "$PACKAGE_NAME" = "google-chrome-stable" ]; then echo "deb [arch=amd64] https://dl.google.com/linux/chrome/deb/ stable main" \ | tee /etc/apt/sources.list.d/google-chrome.list wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add - fi # Update package list again quietly after adding repo - apt-get update -qq # Update quietly apt-get update -qq echo "📦 Resolving dependencies for $PACKAGE_NAME..." # Get dependencies, filter out virtual packages deps=$(apt-rdepends "$PACKAGE_NAME" \ | grep -v "^ " \ | grep -v "$PACKAGE_NAME" \ | grep -vE '(-2\.0|:|<)') deps="$PACKAGE_NAME $deps" # Get exact dependencies for PACKAGE_NAME - deps=$(apt-rdepends "$PACKAGE_NAME" | grep -v "^ " | grep -v "$PACKAGE_NAME") - deps="$PACKAGE_NAME $deps" echo "✅ Packages to download:" echo "$deps" # Download package and dependencies quietly into DEST_DIR - cd "$DEST_DIR" - for pkg in $deps; do apt-get download -qq "$pkg"; cd "$DEST_DIR" # Download real packages only for pkg in $deps; do if ls "$pkg"_*.deb >/dev/null 2>&1; then echo "Already downloaded: $pkg" elif apt-cache show "$pkg" >/dev/null 2>&1; then echo "Downloading: $pkg" apt-get download -qq "$pkg" else echo "Skipping virtual or missing package: $pkg" fi done - echo "All .deb files for $PACKAGE_NAME and dependencies are in $DEST_DIR" echo "✅ All .deb files for $PACKAGE_NAME and dependencies are in $DEST_DIR" artifacts: paths: - /tmp/tmp # Cache apt downloads to speed up future jobs cache: key: apt-cache paths: - /var/cache/apt/archives # Job for Ubuntu 22.04 # Ubuntu 22.04 job ubuntu_22_04: <<: *download_template stage: download image: ubuntu:22.04 # Job for Ubuntu 24.04 # Ubuntu 24.04 job ubuntu_24_04: <<: *download_template stage: download image: ubuntu:24.04