{"id":14235795,"url":"https://github.com/jenkinsci/packaging","last_synced_at":"2025-04-04T22:05:47.709Z","repository":{"id":29840806,"uuid":"33385555","full_name":"jenkinsci/packaging","owner":"jenkinsci","description":"Native packaging for Jenkins","archived":false,"fork":false,"pushed_at":"2025-03-24T17:32:33.000Z","size":5162,"stargazers_count":41,"open_issues_count":20,"forks_count":82,"subscribers_count":112,"default_branch":"master","last_synced_at":"2025-03-28T21:05:44.110Z","etag":null,"topics":["deb","installers","macos","native-packages","rpm","windows"],"latest_commit_sha":null,"homepage":"https://jenkins.io","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jenkinsci.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-04-03T22:22:28.000Z","updated_at":"2025-03-24T17:32:36.000Z","dependencies_parsed_at":"2023-01-16T22:30:45.333Z","dependency_job_id":"64461479-1bbb-4435-a12b-ee8ee0bf7d14","html_url":"https://github.com/jenkinsci/packaging","commit_stats":{"total_commits":1466,"total_committers":119,"mean_commits":"12.319327731092438","dds":0.6984993178717599,"last_synced_commit":"c04268d5fc5f0809cd89c28453df80e85b49f251"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jenkinsci%2Fpackaging","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jenkinsci%2Fpackaging/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jenkinsci%2Fpackaging/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jenkinsci%2Fpackaging/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jenkinsci","download_url":"https://codeload.github.com/jenkinsci/packaging/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247256110,"owners_count":20909240,"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","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":["deb","installers","macos","native-packages","rpm","windows"],"created_at":"2024-08-20T21:02:21.814Z","updated_at":"2025-04-04T22:05:47.685Z","avatar_url":"https://github.com/jenkinsci.png","language":"Shell","funding_links":[],"categories":["Shell"],"sub_categories":[],"readme":"# Native package script for Jenkins\n\nThis repository contains scripts for packaging `jenkins.war` into various platform-specific native packages.\nThe following platforms are currently supported:\n\n  * Windows MSI: `msi/`\n  * RedHat/CentOS RPM: `rpm/`\n  * Debian/Ubuntu DEB: `deb/`\n  * OpenSUSE RPM: `suse/`\n\n# Pre-requisites\nRunning the main package script requires a Linux environment (currently Ubuntu, see [JENKINS-27744](https://issues.jenkins-ci.org/browse/JENKINS-27744).)\nRun `make setup` to install (most of the) necessary tools.  Alternatively you can manually install the following onto a base install of Ubuntu:\n* make\n* unzip\n* devscripts\n* debhelper\n* rpm\n* expect\n* createrepo-c\n* ruby\n  * net-sftp  (`gem install net-sftp`)\n* maven\n* java\n\nYou also need a Jenkins instance with [dist-fork plugin](https://wiki.jenkins-ci.org/display/JENKINS/DistFork+Plugin)\ninstalled. URL of this Jenkins can be fed into `make` via the `JENKINS_URL` variable.\nThis Jenkins needs to have a Windows build agent that has [WiX Toolset](http://wixtoolset.org/) (currently 3.5), msbuild, [cygwin](https://www.cygwin.com/) and .net 2.0. This build agent is used to build MSI packages, which\ncan be only built on Windows.\n\nYou'll also need a `jenkins.war` file that you are packaging, which comes from the release process.\nThe location of this file is set via the `WAR` variable.\n\nRemark:\n\nA docker image is available to run following script\n\n[![logo](https://img.shields.io/docker/pulls/jenkinsciinfra/packaging?label=jenkinsciinfra%2Fpackaging\u0026logo=docker\u0026logoColor=white)](https://hub.docker.com/r/jenkinsciinfra/packaging)\n\nRun `docker-compose run --rm packaging bash` to get a shell in the official Docker image for this repository.\n\n# Generating packages\nRun `./prep.sh` to perform the preparatory actions of downloading the WAR and importing the GPG key.\nRun `make package` to build all the native packages.\nAt minimum, you have to specify the `WAR` variable that points to the war file to be packaged and a branding file (for licensing and package descriptions).\nYou will probably need to pass in the build environment and credentials.\n\nFor example:\n```shell\nmake package BRAND=./branding/jenkins.mk BUILDENV=./env/test.mk CREDENTIAL=./credentials/test.mk\n```\n\nPackages will be placed into `target/` directory.\nSee the definition of the `package` goal for how to build individual packages selectively.\n\n# Running functional tests\n\nThe functional tests require Python 3 and Docker.\nHaving built the packages as described above, run the functional tests with:\n\n```shell\npython3 -m venv venv\nsource venv/bin/activate\npip install -r requirements.txt\nmolecule test\ndeactivate\n```\n\n# Publishing packages\nThis repository contains scripts for copying packages over to a remote web server to publish them.\nRun `make publish` to publish all native packages.\n\nSee the definition of the `publish` goal for individual package publishment.\n\n## Running local tests\nThese tests install packages from a web server where they are published. So if you want to\nrun tests prior to publishing them, you need to create a temporary web server that you can mess up.\n\nThe default branding \u0026 environment (`branding/test.mk` and `env/test.mk`) are designed to support\nthis scenario. To make local testing work, you also need to have `/etc/hosts` entry that maps\n`test.pkg.jenkins.io` hostname to `127.0.0.1`, and your computer has to be running ssh that\nlets you login as you.\n\nOnce you verified the above prerequisites, open another terminal and run `make test.local.setup`\nThis will run a docker container that acts as your throw-away package web server. When done, Ctrl+C\nto kill it.\n\n# Branding\n`branding/` directory contains `*.mk` files that control the branding of the generated packages.\nIt also include text files which are used for large, branded text blocks (license and descriptions).\nSpecify the branding file via the `BRAND` variable.\n\nYou can create your own branding definition to customize the package generation process.\nSee [branding readme](branding/README.md) for more details. In the rest of the packaging script files,\nthese branding parameters are referenced via `@@NAME@@` and get substituted by `bin/branding.py`.\nTo escape a string normally like @@VALUE@@, add an additional two @@ symbols as a prefix: @@@@VALUE@@.\n\n# Environment\n`env/` directory contains `*.mk` files that control the environment into which\nyou publish packages.  Specify the environment file via the `BUILDENV` variable.\n\nYou can create your own environment definition to customize the package generation process.\nSee [environment readme](env/README.md) for more details.\n\n# Credentials\n`credentials/` directory contains `test.mk` file that controls the locations of code-signing keys,\ntheir passwords, and certificates. Specify the credentials file via the `CREDENTIAL` variable.\n\nFor production use, you need to create your own credentials file. See [credentials readme](credentials/README.md)\nfor more details.\n\n# TODO (mostly note to myself)\n* Split resource templates to enable customization\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjenkinsci%2Fpackaging","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjenkinsci%2Fpackaging","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjenkinsci%2Fpackaging/lists"}