├── .github
├── CODEOWNERS
├── dependabot.yml
└── renovate.json
├── bin
├── branding-files.list
├── branding.list
├── test_branding.py
├── branding.py
└── indexGenerator.py
├── credentials
├── test.pkcs12.password.txt
├── test.gpg.password.txt
├── test.keychain.password.txt
├── test.gpg
├── sandbox.gpg
├── test.pkcs12
├── test.keychain
├── test.secret.gpg
├── apple.conf
├── ssh
│ ├── id_rsa.pub
│ ├── known_hosts
│ └── id_rsa
├── Makefile
├── test.mk
├── test.csr
├── test.crt
├── test.key
├── README.md
└── test.ascii.key
├── deb
├── build
│ ├── debian
│ │ ├── source
│ │ │ └── format
│ │ ├── jenkins.install
│ │ ├── rules
│ │ ├── jenkins.logrotate
│ │ ├── copyright
│ │ ├── control
│ │ ├── jenkins.dirs
│ │ ├── jenkins.postrm
│ │ ├── jenkins.postinst
│ │ ├── jenkins.default
│ │ └── jenkins.init
│ └── build.sh
├── publish
│ ├── contents
│ │ └── binary
│ │ │ └── .htaccess
│ ├── release.conf
│ └── publish.sh
└── setup.sh
├── systemd
├── jenkins.conf
├── jenkins.sh
├── jenkins.service
└── migrate.sh
├── branding
├── jenkins-rc.mk
├── jenkins-stable.mk
├── jenkins-stable-rc.mk
├── jenkins.mk
├── jenkins-experimental.mk
├── description-file
├── common
├── test.mk
├── license-mit
└── README.md
├── templates
├── index.html
├── header.root.html
├── header.msi.html
├── footer.html
├── header.war.html
├── header.rpm.html
├── header.debian.html
└── base.html
├── msi
├── build
│ ├── nuget.exe
│ ├── .gitignore
│ ├── banner.bmp
│ ├── jenkins.bmp
│ ├── jenkins.ico
│ ├── packages.config
│ ├── jenkins.exe.config
│ ├── License.rtf
│ ├── jenkins_en-US.wxl
│ ├── build.ps1
│ ├── jenkins.wixproj
│ └── Update-JenkinsVersion.ps1
├── publish
│ ├── publish.sh
│ └── publish.ps1
└── docs
│ └── build-msi-locally.md
├── requirements.txt
├── rpm
├── setup.sh
├── build
│ ├── build.sh
│ └── SPECS
│ │ └── jenkins.spec
└── publish
│ └── publish.sh
├── .gitignore
├── molecule
├── servlet
│ ├── converge.yml
│ ├── molecule.yml
│ ├── configure-tomcat.yml
│ ├── Dockerfile.j2
│ └── verify.yml
└── default
│ ├── converge.yml
│ ├── install-deb.yml
│ ├── install-suse.yml
│ ├── install-rpm.yml
│ ├── Dockerfile.j2
│ ├── verify.yml
│ └── molecule.yml
├── prep.sh
├── env
└── test.mk
├── .gitattributes
├── war
└── publish
│ └── publish.sh
├── docker-compose.yaml
├── setup.mk
├── Makefile
├── Jenkinsfile
├── make.ps1
├── README.md
└── pkgConfig
└── httpd.conf
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | * @jenkinsci/core
2 |
--------------------------------------------------------------------------------
/bin/branding-files.list:
--------------------------------------------------------------------------------
1 | DESCRIPTION_FILE
--------------------------------------------------------------------------------
/credentials/test.pkcs12.password.txt:
--------------------------------------------------------------------------------
1 | s3cr3t
--------------------------------------------------------------------------------
/credentials/test.gpg.password.txt:
--------------------------------------------------------------------------------
1 | s3cr3t
2 |
--------------------------------------------------------------------------------
/credentials/test.keychain.password.txt:
--------------------------------------------------------------------------------
1 | s3cr3t
--------------------------------------------------------------------------------
/deb/build/debian/source/format:
--------------------------------------------------------------------------------
1 | 3.0 (native)
2 |
--------------------------------------------------------------------------------
/deb/publish/contents/binary/.htaccess:
--------------------------------------------------------------------------------
1 | Options -Indexes
2 |
--------------------------------------------------------------------------------
/systemd/jenkins.conf:
--------------------------------------------------------------------------------
1 | D /run/jenkins 0770 jenkins jenkins -
2 |
--------------------------------------------------------------------------------
/branding/jenkins-rc.mk:
--------------------------------------------------------------------------------
1 | export RELEASELINE=-rc
2 | include branding/common
3 |
--------------------------------------------------------------------------------
/templates/index.html:
--------------------------------------------------------------------------------
1 | {% include header %}
2 | {% include "footer.html" %}
3 |
--------------------------------------------------------------------------------
/branding/jenkins-stable.mk:
--------------------------------------------------------------------------------
1 | export RELEASELINE=-stable
2 | include branding/common
3 |
--------------------------------------------------------------------------------
/branding/jenkins-stable-rc.mk:
--------------------------------------------------------------------------------
1 | export RELEASELINE=-stable-rc
2 | include branding/common
3 |
--------------------------------------------------------------------------------
/msi/build/nuget.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/packaging/HEAD/msi/build/nuget.exe
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | ansible==10.7.0
2 | jinja2==3.1.6
3 | molecule-plugins[docker]==23.7.0
4 |
--------------------------------------------------------------------------------
/credentials/test.gpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/packaging/HEAD/credentials/test.gpg
--------------------------------------------------------------------------------
/msi/build/.gitignore:
--------------------------------------------------------------------------------
1 | msiext-1.5/
2 | msiext-1.5.zip
3 | packages/
4 | tmp/
5 | bin/
6 | obj/
7 |
--------------------------------------------------------------------------------
/msi/build/banner.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/packaging/HEAD/msi/build/banner.bmp
--------------------------------------------------------------------------------
/msi/build/jenkins.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/packaging/HEAD/msi/build/jenkins.bmp
--------------------------------------------------------------------------------
/msi/build/jenkins.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/packaging/HEAD/msi/build/jenkins.ico
--------------------------------------------------------------------------------
/credentials/sandbox.gpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/packaging/HEAD/credentials/sandbox.gpg
--------------------------------------------------------------------------------
/credentials/test.pkcs12:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/packaging/HEAD/credentials/test.pkcs12
--------------------------------------------------------------------------------
/rpm/setup.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -eux
2 |
3 | sudo apt-get install -y rpm expect || true
4 |
5 | exit 0
6 |
--------------------------------------------------------------------------------
/branding/jenkins.mk:
--------------------------------------------------------------------------------
1 | export RELEASELINE=
2 | export ORGANIZATION=jenkins.io
3 | include branding/common
4 |
--------------------------------------------------------------------------------
/credentials/test.keychain:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/packaging/HEAD/credentials/test.keychain
--------------------------------------------------------------------------------
/credentials/test.secret.gpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/packaging/HEAD/credentials/test.secret.gpg
--------------------------------------------------------------------------------
/deb/setup.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -eux
2 |
3 | sudo apt-get install -y devscripts apt-utils || true
4 |
5 | exit 0
6 |
--------------------------------------------------------------------------------
/branding/jenkins-experimental.mk:
--------------------------------------------------------------------------------
1 | export RELEASELINE=-experimental
2 | export ORGANIZATION=jenkins.io
3 | include branding/common
4 |
--------------------------------------------------------------------------------
/deb/build/debian/jenkins.install:
--------------------------------------------------------------------------------
1 | @@ARTIFACTNAME@@ usr/bin
2 | @@ARTIFACTNAME@@.war usr/share/java
3 | migrate usr/share/@@ARTIFACTNAME@@
4 |
--------------------------------------------------------------------------------
/msi/build/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
6 | This is the MSI package repository of {{product_name}} for installation. 7 |
8 | {% endblock %}
9 |
10 | {% block individual_package_instruction %}{% endblock %}
11 | {% block java_instructions %}{% endblock %}
12 |
--------------------------------------------------------------------------------
/bin/branding.list:
--------------------------------------------------------------------------------
1 | PRODUCTNAME
2 | ARTIFACTNAME
3 | CAMELARTIFACTNAME
4 | VENDOR
5 | SUMMARY
6 | PORT
7 | MSI_PRODUCTCODE
8 | AUTHOR
9 | LICENSE
10 | HOMEPAGE
11 | CHANGELOG_PAGE
12 | ORGANIZATION
13 | ----------------------------------
14 | RELEASELINE
15 | RPM_URL
16 | DEB_URL
17 | LICENSE_TEXT
18 | LICENSE_TEXT_DEB
19 | LICENSE_TEXT_COMMENTED
20 |
--------------------------------------------------------------------------------
/molecule/servlet/molecule.yml:
--------------------------------------------------------------------------------
1 | ---
2 | dependency:
3 | name: galaxy
4 | driver:
5 | name: docker
6 | platforms:
7 | - name: tomcat-10
8 | image: tomcat:10-jdk21-temurin
9 | volumes:
10 | - ${MOLECULE_PROJECT_DIRECTORY}/jenkins.war:/usr/local/tomcat/webapps/jenkins.war
11 | provisioner:
12 | name: ansible
13 | verifier:
14 | name: ansible
15 |
--------------------------------------------------------------------------------
/molecule/default/converge.yml:
--------------------------------------------------------------------------------
1 | ---
2 | - name: Converge
3 | hosts: all
4 | become: true
5 | tasks:
6 | - include_tasks: install-deb.yml
7 | when: ansible_os_family == 'Debian'
8 | - include_tasks: install-rpm.yml
9 | when: ansible_os_family == 'RedHat'
10 | - include_tasks: install-suse.yml
11 | when: ansible_os_family == 'Suse'
12 |
--------------------------------------------------------------------------------
/deb/build/debian/copyright:
--------------------------------------------------------------------------------
1 | Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
2 | Upstream-Name: Jenkins
3 | Upstream-Contact: http://jenkins.io/
4 | Source: https://github.com/jenkinsci/jenkins
5 |
6 | Files: *
7 | Copyright: 2004-, @@AUTHOR@@, Sun Microsystems, Inc., and a number of other of contributors
8 | License: @@LICENSE@@
9 | @@LICENSE_TEXT_DEB@@
10 |
--------------------------------------------------------------------------------
/credentials/ssh/id_rsa.pub:
--------------------------------------------------------------------------------
1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDDptAk3xx4vlPsVo2zZB1IScaAsrLnO+m45EMkt3RD/BObkNUxXGonNPyEK0vtrgPU0E9oGbqkC+XEKcoyF1nBKL57bO7NGiQ66K+UAfKJXuV70ufUr+kqQNyEAjPw/dhYu3VhkkRENQjyddb0wLxk4S38i52YtOxlBxKvyVc4UjA1l7hv81Kv/2zG9KdhCrDmrqPVnF2Nb8q1c9BqlT485tn/fWPNMf1b3roumgXxdijTFECEm/Ld/43FtJU+GMfjbbAcJ57J8j/4H/FiVU0LfJhHg429dsBex7AHRpGGc5+H6xKTOi04IMwFkc6MquDbswuzR1+uaPEZ98XZWr4l olblak@winterfell
2 |
--------------------------------------------------------------------------------
/deb/build/debian/control:
--------------------------------------------------------------------------------
1 | Source: @@ARTIFACTNAME@@
2 | Section: devel
3 | Priority: optional
4 | Maintainer: @@AUTHOR@@
5 | Build-Depends: debhelper-compat (= 13)
6 | Standards-Version: 4.6.0
7 | Homepage: @@HOMEPAGE@@
8 |
9 | Package: @@ARTIFACTNAME@@
10 | Architecture: all
11 | Depends: ${misc:Depends}, adduser, lsb-base (>= 3.2-14), net-tools, sysvinit-utils (>= 2.88dsf-50)
12 | Pre-Depends: ${misc:Pre-Depends}
13 | Description: @@DESCRIPTION_FILE@@
14 |
--------------------------------------------------------------------------------
/credentials/ssh/known_hosts:
--------------------------------------------------------------------------------
1 | |1|3Ao1unSiaoLJcBH+jj4LxlUJvU8=|9VCo6soeOkBokfDfbckMBvnE/6k= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFnJjx5araEbR3BvluFk5ONHqZSVZW1osdn4NuC/UBFPxwcEkkECK0EHR+WTxfTLGybJCTh3H5hTDady7W0EyIs=
2 | |1|Orovxffw11DXksUZda8iwv3XcME=|OIrRb9oqBvY2esPMc+I0K70HLSs= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFnJjx5araEbR3BvluFk5ONHqZSVZW1osdn4NuC/UBFPxwcEkkECK0EHR+WTxfTLGybJCTh3H5hTDady7W0EyIs=
3 |
--------------------------------------------------------------------------------
/deb/build/debian/jenkins.dirs:
--------------------------------------------------------------------------------
1 | # moved from rules install
2 | usr/share/@@ARTIFACTNAME@@
3 |
4 | # this is where JENKINS_HOME is stored, so let's leave it as is for now
5 | var/lib/@@ARTIFACTNAME@@
6 |
7 | # Store jenkins log file in it's own directory since they can become rather large and in the future
8 | # rotating logs can be easily added.
9 | var/log/@@ARTIFACTNAME@@
10 |
11 | # Cache directory for the unpacked jenkins.war file.
12 | var/cache/@@ARTIFACTNAME@@
13 |
--------------------------------------------------------------------------------
/branding/description-file:
--------------------------------------------------------------------------------
1 | Jenkins is the leading open source automation server supported by a large and growing community of developers, testers, designers and other people interested in continuous integration, continuous delivery and modern software delivery practices. Built on the Java Virtual Machine (JVM), it provides more than 2,000 plugins that extend Jenkins to automate with practically any technology software delivery teams use. In 2022, Jenkins reached 300,000 known installations making it the most widely deployed automation server.
2 |
3 | For more information, see https://www.jenkins.io.
4 |
--------------------------------------------------------------------------------
/credentials/Makefile:
--------------------------------------------------------------------------------
1 | test.crt: test.key test.csr apple.conf
2 | openssl x509 -in test.csr -out test.crt -req -signkey test.key -days 36500 -extfile apple.conf -extensions extensions
3 |
4 | test.pkcs12: test.key test.crt
5 | openssl pkcs12 -export -inkey test.key -in test.crt -out test.pkcs12 -password pass:s3cr3t
6 |
7 | # generate keychain file to go through the signing process
8 | test.keychain: test.pkcs12
9 | @rm $@ 2>&1 > /dev/null || true
10 | security create-keychain -p s3cr3t `pwd`/test.keychain
11 | security import test.pkcs12 -k `pwd`/test.keychain -t agg -f pkcs12 -A -P s3cr3t
12 |
13 |
--------------------------------------------------------------------------------
/prep.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -eux
2 | set -o pipefail
3 | cd "$(dirname "$0")"
4 |
5 | # TODO jenkins-infra/release performs similar preparatory actions: downloading
6 | # the WAR and importing the GPG key. A common interface for the preparatory
7 | # actions should be designed that meets the needs of both local testing and
8 | # releases, ideally implemented in the Makefile. Then both this repository and
9 | # jenkins-infra/release should be refactored to consume the new functionality.
10 |
11 | if [[ ! -f $WAR ]]; then
12 | jv download
13 | fi
14 |
15 | if ! gpg --fingerprint "${GPG_KEYNAME}"; then
16 | gpg --import --batch "${GPG_FILE}"
17 | fi
18 |
19 | # produces: jenkins.war
20 | exit 0
21 |
--------------------------------------------------------------------------------
/molecule/default/install-deb.yml:
--------------------------------------------------------------------------------
1 | ---
2 | - package:
3 | name:
4 | - fontconfig
5 | state: present
6 | update_cache: true
7 | - package:
8 | name:
9 | - openjdk-17-jre
10 | state: present
11 | when: ansible_distribution == "Debian" and ansible_distribution_major_version < "13"
12 | - package:
13 | name:
14 | - openjdk-21-jre
15 | state: present
16 | when: (ansible_distribution == "Debian" and ansible_distribution_major_version == "13") or ansible_distribution == "Ubuntu"
17 | - find:
18 | paths: /var/tmp/target/debian
19 | file_type: file
20 | patterns: "*.deb"
21 | register: package_list
22 | - assert:
23 | that:
24 | - package_list.matched == 1
25 | - apt:
26 | deb: "{{ package_list.files[0].path }}"
27 |
--------------------------------------------------------------------------------
/env/test.mk:
--------------------------------------------------------------------------------
1 | #
2 | # Environment definition for dry-run of the packaging process
3 | #
4 |
5 | # where to put binary files
6 | export TESTDIR=$(realpath .)/pkg.jenkins.io
7 | export WARDIR=${TESTDIR}/war${RELEASELINE}
8 | export MSIDIR=${TESTDIR}/windows${RELEASELINE}
9 | export DEBDIR=${TESTDIR}/debian${RELEASELINE}/binary
10 | export RPMDIR=${TESTDIR}/rpm${RELEASELINE}
11 |
12 | # where to put repository index and other web contents
13 | export RPM_WEBDIR=${TESTDIR}/rpm${RELEASELINE}
14 | export DEB_WEBDIR=${TESTDIR}/debian${RELEASELINE}
15 | export MSI_WEBDIR=${TESTDIR}/windows${RELEASELINE}
16 |
17 | # URL to the aforementioned webdir.
18 | WEBSERVER=https://pkg.jenkins.io
19 | export RPM_URL=${WEBSERVER}/rpm${RELEASELINE}
20 | export DEB_URL=${WEBSERVER}/debian${RELEASELINE}
21 |
--------------------------------------------------------------------------------
/molecule/servlet/configure-tomcat.yml:
--------------------------------------------------------------------------------
1 | ---
2 | - copy:
3 | dest: "/usr/local/tomcat/bin/setenv.sh"
4 | content: "export CATALINA_OPTS=-DJENKINS_HOME=/var/tmp/jenkins_home"
5 | mode: "0755"
6 | - xml:
7 | path: "/usr/local/tomcat/conf/server.xml"
8 | xpath: "/Server/Service/Engine/Host"
9 | set_children:
10 | - Valve:
11 | className: "org.apache.catalina.valves.AccessLogValve"
12 | directory: "logs"
13 | prefix: "localhost_access_log"
14 | suffix: ".txt"
15 | pattern: '%h %l %u %t "%r" %s %b'
16 | - Valve:
17 | className: "org.apache.catalina.valves.RemoteIpValve"
18 | remoteIpHeader: "X-Forwarded-For"
19 | proxiesHeader: "X-Forwarded-By"
20 | protocolHeader: "X-Forwarded-Proto"
21 |
--------------------------------------------------------------------------------
/branding/common:
--------------------------------------------------------------------------------
1 | # this isn't a release line by itself but instead defines the commonality of the all OSS release lines.
2 |
3 | export PRODUCTNAME=Jenkins
4 | export ARTIFACTNAME=jenkins
5 | export CAMELARTIFACTNAME=Jenkins
6 | export VENDOR=Jenkins project
7 | export SUMMARY=Jenkins Automation Server
8 | export PORT=8080
9 |
10 | export MSI_PRODUCTCODE=415933d8-4104-47c3-aee9-66b31de07a57
11 | export AUTHOR=Kohsuke Kawaguchi