Skip to content

ZCICD-103:Design CircleCI pipeline (config.yml + supporting scripts) and validate against Simple complexity most-frequently updated Third-party packages - #237

Draft
chetanlanje74 wants to merge 18 commits into
feature/third-party-pkg-integrationfrom
ZCICD-103
Draft

chetanlanje74 wants to merge 18 commits into
feature/third-party-pkg-integrationfrom
ZCICD-103

Conversation

@chetanlanje74

Copy link
Copy Markdown
Contributor

config.yml

  1. Split the pipeline into clear separate steps: checkout code, configure repo, build packages, print build summary.
  2. Created one shared repo-setup step and used it in all platform jobs (u24, u22, u20, c9, c8) instead of repeating the same code.
  3. Repo release order is fixed as 87 → 1000 → 1010, passed as environment variables so it's easy to change later.

configure-package-repos.sh

  1. Adds Zimbra's package repo to the build machine, trying release lines 87, 1000, 1010 one by one.
  2. Before adding any repo link, it checks (probes) if that URL is actually reachable — dead links are skipped automatically.
  3. If no repo is reachable, it does not fail the build — it just prints a clear warning that things may fail later.
  4. After setup, it checks if required packages (like zimbra-base) are actually available and warns if any are missing.

resolve-package-build-order.sh

  1. Takes the list of changed packages and puts them in the correct build order, based on a master build-order file.
  2. This makes sure a package always builds after any other package it depends on (e.g. a package depending on httpd builds after httpd).
  3. Validates each package — checks it exists in the build-order file and has a valid folder with a Makefile; stops early with a clear error if not.
  4. After sorting, it prints a dry-run summary showing the final build plan and order, so it's easy to review what will be built before the real build starts.

build-packages.sh

  1. Installs only the basic build tools needed (like gcc, make, rpmbuild) and skips installing if they're already present.
  2. Before building a package, it checks whether its required internal dependencies are available (built earlier, already installed, or in repo).
  3. Skips installing dependencies again if the package's own Makefile already installs them, avoiding duplicate work.
  4. After building a package, it adds the new file to a local repo so the next package in the same run can use it, then copies the final build output to the results folder.

pkg-build-summary.sh

  1. Runs automatically right after the build step finishes successfully, no manual step needed.
  2. Reads the same package list file used during build to know what was built.
  3. Prints a summary table showing the platform name and total number of packages built.
  4. Lists every package that was built with its number (e.g. [1/5], [2/5]) so it's easy to scan.
  5. If the input file is empty, it just says nothing was built instead of throwing an error.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant