{"id":29702613,"url":"https://github.com/devgateway/amp-offline","last_synced_at":"2025-07-23T12:39:49.127Z","repository":{"id":47031747,"uuid":"196635682","full_name":"devgateway/amp-offline","owner":"devgateway","description":"AMP Offline","archived":false,"fork":false,"pushed_at":"2024-03-29T15:28:44.000Z","size":23259,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":15,"default_branch":"develop","last_synced_at":"2024-04-14T18:06:22.873Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devgateway.png","metadata":{"files":{"readme":"README-CI.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-12T19:37:30.000Z","updated_at":"2024-05-02T15:35:17.466Z","dependencies_parsed_at":"2023-11-08T04:10:16.250Z","dependency_job_id":"3f7a2ed1-4e94-46c9-874b-b19893980d92","html_url":"https://github.com/devgateway/amp-offline","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/devgateway/amp-offline","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devgateway%2Famp-offline","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devgateway%2Famp-offline/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devgateway%2Famp-offline/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devgateway%2Famp-offline/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devgateway","download_url":"https://codeload.github.com/devgateway/amp-offline/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devgateway%2Famp-offline/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266680696,"owners_count":23967795,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-23T02:00:09.312Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-23T12:39:48.460Z","updated_at":"2025-07-23T12:39:49.112Z","avatar_url":"https://github.com/devgateway.png","language":"JavaScript","readme":"The new workflow uses Docker-based build, managed by a declarative pipeline in Jenkins. All images and volumes are unique per Git branch to avoid contamination. The declarative pipeline consists of four major _sequential_ phases:\n1. Filter and preinstall dependencies into **Deps** image.\n2. Build the **Builder** image.\n3. Run the application build and QA.\n4. Package the application for each platform.\n\n### Dependencies\n\nProcess `packages.json` with `jq` to extract and presort only the crucial package information and dependencies, when building the Deps image. This allows skipping rebuilds completely, even if other members in `package.json` change. Also, it ensures the image layers are as small as possible to increase container launch speed. This phase Node 16.\n\n### Build the Builder\n\nUse Node 16 to build the DLL, then use Electron to prebuild the Main module.\nBoth builds depend on code that changes infrequently, allowing CI to cache and skip steps in future. Steps are ordered from least to most likely to change, in order to increase chance of cache hit. Output is produced outside of the `app` tree, in order to keep the latter unmodified for the upcoming phases.\n\n### Build Renderer and Run QA\n\nThis phase entirely consists of stages running _in parallel_, using the Builder image:\n* Run Mocha test\n* Run ESLint\n* Build the Renderer module; output directed outside the `app` tree, onto a Docker volume for upcoming phases\n\nAll stages use read-only bind mounts of source code and tests into their containers, in order to guarantee code staying unmodified, to avoid sending unnecessary data into Docker context (faster builds) during all earlier phases, and increase container launch speed in later phases.\n\n### Package Per Platform and Save Artifacts\n\nLaunch containers per each platform _in parallel_ to package the Electron app. Stages matrix is defined by Carthesian product of package type (win, deb) by CPU arch (32, 64). The containers are completely independent, and each uses its own Docker volume to cache web downloads between builds, and its own output directory that is bind-mounted from the Jenkins workdir.\n\nWhen packaging completes, Jenkins picks up the packaged artifacts and stores them for the last 5 successful builds of each branch. Finally, the CI cleans up the intermediate artifact directories and Docker volumes, and posts an update to Slack.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevgateway%2Famp-offline","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevgateway%2Famp-offline","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevgateway%2Famp-offline/lists"}