From 3a1405744923ceaba3591314a1af4312aaa2b119 Mon Sep 17 00:00:00 2001 From: Ludovic <54670129+lbr38@users.noreply.github.com> Date: Tue, 10 Dec 2024 11:48:51 +0100 Subject: [PATCH] 4.14.2 --- .github/workflows/phpcs.yml | 2 +- .github/workflows/tasks.yml | 4 +- .github/workflows/test-ansible-role.yml | 33 +++++ .github/workflows/test-database-update.yml | 135 ++++++++++++++++++ ansible/repomanager-playbook.yml | 11 ++ ansible/roles/repomanager/handlers/main.yml | 5 + ansible/roles/repomanager/tasks/main.yml | 38 +++++ .../templates/repomanager-reverse-proxy.j2 | 60 ++++++++ .../roles/repomanager/vars/repomanager.yml | 15 ++ docker/init | 7 +- www/controllers/App/Config/Notification.php | 2 +- www/controllers/Repo/Mirror/Deb.php | 26 ++-- www/controllers/Repo/Source/Deb.php | 4 +- www/controllers/Repo/Source/Rpm.php | 4 +- www/models/Connection.php | 2 +- .../source-repositories/deb/docker-debian.yml | 32 +++++ .../source-repositories/deb/docker-ubuntu.yml | 32 +++++ .../source-repositories/deb/grafana.yml | 24 ++++ .../deb/sury-php-debian.yml | 24 ++++ .../deb/sury-php-ubuntu.yml | 35 +++++ .../source-repositories/rpm/docker-centos.yml | 32 +++++ .../source-repositories/rpm/docker-redhat.yml | 26 ++++ .../source-repositories/rpm/grafana.yml | 36 +++++ .../source-repositories/rpm/remi-php.yml | 33 +++++ www/version | 2 +- www/views/includes/panels/repos/new.inc.php | 1 + www/views/includes/repos-list.inc.php | 2 + 27 files changed, 604 insertions(+), 23 deletions(-) create mode 100644 .github/workflows/test-ansible-role.yml create mode 100644 .github/workflows/test-database-update.yml create mode 100644 ansible/repomanager-playbook.yml create mode 100644 ansible/roles/repomanager/handlers/main.yml create mode 100644 ansible/roles/repomanager/tasks/main.yml create mode 100644 ansible/roles/repomanager/templates/repomanager-reverse-proxy.j2 create mode 100644 ansible/roles/repomanager/vars/repomanager.yml create mode 100644 www/templates/source-repositories/deb/docker-debian.yml create mode 100644 www/templates/source-repositories/deb/docker-ubuntu.yml create mode 100644 www/templates/source-repositories/deb/grafana.yml create mode 100644 www/templates/source-repositories/deb/sury-php-debian.yml create mode 100644 www/templates/source-repositories/deb/sury-php-ubuntu.yml create mode 100644 www/templates/source-repositories/rpm/docker-centos.yml create mode 100644 www/templates/source-repositories/rpm/docker-redhat.yml create mode 100644 www/templates/source-repositories/rpm/grafana.yml create mode 100644 www/templates/source-repositories/rpm/remi-php.yml diff --git a/.github/workflows/phpcs.yml b/.github/workflows/phpcs.yml index bc4ece4f..9c72f29a 100644 --- a/.github/workflows/phpcs.yml +++ b/.github/workflows/phpcs.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Setup PHP uses: shivammathur/setup-php@v2 diff --git a/.github/workflows/tasks.yml b/.github/workflows/tasks.yml index 575b7bab..bd4f3016 100644 --- a/.github/workflows/tasks.yml +++ b/.github/workflows/tasks.yml @@ -14,7 +14,7 @@ jobs: image: lbr38/repomanager:latest steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Print PHP version run: php --version @@ -83,7 +83,7 @@ jobs: image: lbr38/repomanager:latest steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Print PHP version run: php --version diff --git a/.github/workflows/test-ansible-role.yml b/.github/workflows/test-ansible-role.yml new file mode 100644 index 00000000..69bfc0e0 --- /dev/null +++ b/.github/workflows/test-ansible-role.yml @@ -0,0 +1,33 @@ +name: Test ansible role + +on: + push: + branches: [ devel ] + pull_request: + push: + branches: [ stable ] +jobs: + ansible: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install requirements + run: | + sudo apt update + sudo apt install nginx ansible -y + + - name: Generate self-signed SSL certificate + run: | + sudo mkdir -p /etc/nginx/ssl + sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/private.key -out /etc/nginx/ssl/certificate.crt -subj "/C=DE/ST=NRW/L=Earth/O=Random Company/OU=IT/CN=repomanager.example.com" + + - name: Start nginx + run: sudo systemctl start nginx + + - name: Execute ansible playbook + run: sudo ansible-playbook --connection=local --inventory 127.0.0.1, $GITHUB_WORKSPACE/ansible/repomanager-playbook.yml + + - name: Print docker containers + run: sudo docker ps diff --git a/.github/workflows/test-database-update.yml b/.github/workflows/test-database-update.yml new file mode 100644 index 00000000..8e4c6452 --- /dev/null +++ b/.github/workflows/test-database-update.yml @@ -0,0 +1,135 @@ +name: Database update tests + +on: + push: + branches: [ devel ] + pull_request: + push: + branches: [ stable ] +jobs: + test-database-update: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install docker-compose + run: | + sudo apt-get update + sudo apt-get install -y docker-compose + + # Get all releases + # Format them to a key-value array + # Start from release index which is 4.0.0 + # Pull images starting from release 4.0.0 + # Then pull the next image of the index, etc.. + - name: Test all releases update from lbr38/repomanager + run: | + RELEASES=$(curl -s https://api.github.com/repos/lbr38/repomanager/releases?per_page=10000 | jq -r '.[].name' | tac) + + index="0" + declare -A RELEASES_ARRAY + for release in $RELEASES; do + RELEASES_ARRAY["$index"]="$release" + index=$((index+1)) + done + + for i in "${!RELEASES_ARRAY[@]}"; do + if [[ "${RELEASES_ARRAY[$i]}" == "4.0.0" ]]; then + start_index="$i" + break + fi + done + + for ((i=start_index; i<${#RELEASES_ARRAY[@]}; i++)); do + release="${RELEASES_ARRAY[$i]}" + + docker rm -f repomanager + docker system prune -a -f + + echo -e "\nPulling image for release $release\n" + + docker run -d --restart always --name repomanager \ + -e FQDN=repomanager.test.com \ + -e MAX_UPLOAD_SIZE=32M \ + -p 8080:8080 \ + -v /etc/localtime:/etc/localtime:ro \ + -v /var/lib/docker/volumes/repomanager-data:/var/lib/repomanager \ + -v /var/lib/docker/volumes/repomanager-repo:/home/repo \ + lbr38/repomanager:$release + + if [ $? -ne 0 ]; then + echo "Failed to pull image for release $release" + exit 1 + fi + + # Retrieve and check errors in container logs + while true; do + OUTPUT=$(docker logs repomanager -n10000) + + # Check if the logs contains failed message + if echo "$OUTPUT" | grep -q -i "failed"; then + echo "Database update seems to have failed: $OUTPUT" + exit 1 + fi + + if echo "$OUTPUT" | grep -q -i "error"; then + echo "Database update seems to have failed: $OUTPUT" + exit 1 + fi + + # Quit the loop if the maintenance page is disabled (meaning the update is done) + if echo "$OUTPUT" | grep -q "Disabling maintenance page"; then + break + fi + + sleep 2 + done + done + + # Finally, test the devel image + - name: Test devel image from lbr38/repomanager + run: | + docker rm -f repomanager + docker system prune -a -f + + echo -e "\Build devel image\n" + + cd ${GITHUB_WORKSPACE}/docker + + sed -i 's/env:.*/env: devel/g' docker-compose.yml + sed -i 's/fqdn:.*/fqdn: repomanager.test.com/g' docker-compose.yml + + docker-compose -f docker-compose.yml up -d + + if [ $? -ne 0 ]; then + echo "Failed to build devel image" + exit 1 + fi + + # Retrieve and check errors in container logs + while true; do + OUTPUT=$(docker logs repomanager -n10000) + + # Check if the logs contains failed message + if echo "$OUTPUT" | grep -q -i "failed"; then + echo "Database update seems to have failed: $OUTPUT" + exit 1 + fi + + # Check if the logs contains error message + if echo "$OUTPUT" | grep -q -i "error"; then + echo "Database update seems to have failed: $OUTPUT" + exit 1 + fi + + # Quit the loop if the maintenance page is disabled (meaning the update is done) + if echo "$OUTPUT" | grep -q "Disabling maintenance page"; then + break + fi + + sleep 2 + done + + # Print final container logs output + echo "$OUTPUT" diff --git a/ansible/repomanager-playbook.yml b/ansible/repomanager-playbook.yml new file mode 100644 index 00000000..cfb535bc --- /dev/null +++ b/ansible/repomanager-playbook.yml @@ -0,0 +1,11 @@ +--- +- name: Install or update Repomanager + hosts: all + order: sorted + become: true + become_user: root + + tasks: + - name: Execute repomanager role + ansible.builtin.include_role: + name: repomanager diff --git a/ansible/roles/repomanager/handlers/main.yml b/ansible/roles/repomanager/handlers/main.yml new file mode 100644 index 00000000..7419154d --- /dev/null +++ b/ansible/roles/repomanager/handlers/main.yml @@ -0,0 +1,5 @@ +--- +- name: Reload nginx + ansible.builtin.systemd: + name: nginx + state: reloaded diff --git a/ansible/roles/repomanager/tasks/main.yml b/ansible/roles/repomanager/tasks/main.yml new file mode 100644 index 00000000..e5e15074 --- /dev/null +++ b/ansible/roles/repomanager/tasks/main.yml @@ -0,0 +1,38 @@ +--- +# Requirements: +# - docker installed and service running +# - nginx installed and service running +# - variables in vars/repomanager.yml must be set + +# Include the variables +- name: Include repomanager variables + ansible.builtin.include_vars: repomanager.yml + +# Pull the latest docker image and start the container +# This also works in a case of a new version, the image will be pulled and the container will be restarted +- name: Pull latest docker image + community.docker.docker_container: + name: repomanager + image: lbr38/repomanager:latest + env: + FQDN: "{{ repomanager_fqdn }}" + MAX_UPLOAD_SIZE: "{{ repomanager_vhost_max_upload_size | default('32') }}M" + ports: + - "{{ repomanager_listen_port | default('8080') }}:8080" + volumes: + - /etc/localtime:/etc/localtime:ro + - /var/lib/docker/volumes/repomanager-data:/var/lib/repomanager + - /var/lib/docker/volumes/repomanager-repo:/home/repo + restart_policy: unless-stopped + pull: true + state: started + +# Deploy the reverse-proxy vhost +- name: Deploy reverse-proxy + ansible.builtin.template: + src: repomanager-reverse-proxy.j2 + dest: /etc/nginx/conf.d/repomanager-reverse-proxy.conf + owner: root + group: root + mode: "0600" + notify: Reload nginx diff --git a/ansible/roles/repomanager/templates/repomanager-reverse-proxy.j2 b/ansible/roles/repomanager/templates/repomanager-reverse-proxy.j2 new file mode 100644 index 00000000..c531bec1 --- /dev/null +++ b/ansible/roles/repomanager/templates/repomanager-reverse-proxy.j2 @@ -0,0 +1,60 @@ +upstream repomanager_docker { + server 127.0.0.1:{{ repomanager_listen_port }}; +} + +# Disable some logging +map $request_uri $loggable { + /ajax/controller.php 0; + default 1; +} + +server { + listen {{ ansible_default_ipv4.address }}:80; + server_name {{ repomanager_fqdn }}; + + access_log /var/log/nginx/{{ repomanager_fqdn }}_access.log combined if=$loggable; + error_log /var/log/nginx/{{ repomanager_fqdn }}_error.log; + + return 301 https://$server_name$request_uri; +} + +server { + listen {{ ansible_default_ipv4.address }}:443 ssl; + server_name {{ repomanager_fqdn }}; + + # Path to SSL certificate/key files + ssl_certificate {{ repomanager_vhost_certificate_path }}; + ssl_certificate_key {{ repomanager_vhost_private_key_path }}; + + # Path to log files + access_log /var/log/nginx/{{ repomanager_fqdn }}_ssl_access.log combined if=$loggable; + error_log /var/log/nginx/{{ repomanager_fqdn }}_ssl_error.log; + + # Max upload size + client_max_body_size {{ repomanager_vhost_max_upload_size | default('32') }}M; + + # Security headers + add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always; + add_header Referrer-Policy "no-referrer" always; + add_header X-Content-Type-Options "nosniff" always; + add_header X-Download-Options "noopen" always; + add_header X-Frame-Options "SAMEORIGIN" always; + add_header X-Permitted-Cross-Domain-Policies "none" always; + add_header X-Robots-Tag "none" always; + add_header X-XSS-Protection "1; mode=block" always; + + # Remove X-Powered-By, which is an information leak + fastcgi_hide_header X-Powered-By; + + location / { + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_read_timeout 86400; + proxy_pass http://repomanager_docker; + } +} diff --git a/ansible/roles/repomanager/vars/repomanager.yml b/ansible/roles/repomanager/vars/repomanager.yml new file mode 100644 index 00000000..f7e42573 --- /dev/null +++ b/ansible/roles/repomanager/vars/repomanager.yml @@ -0,0 +1,15 @@ +--- +# The FQDN of Repomanager +repomanager_fqdn: repomanager.example.com + +# The port the container listens on (default: 8080) +repomanager_listen_port: 8080 + +# The maximum upload size in MB (default: 32M) +repomanager_vhost_max_upload_size: 32 + +# Path to the SSL certificate +repomanager_vhost_certificate_path: /etc/nginx/ssl/certificate.crt + +# Path to the SSL private key +repomanager_vhost_private_key_path: /etc/nginx/ssl/private.key diff --git a/docker/init b/docker/init index 8e8692da..ef5ce606 100644 --- a/docker/init +++ b/docker/init @@ -36,9 +36,14 @@ fi /usr/sbin/service postfix start # Initialize and update database (if needed) -/bin/su -s /bin/bash -c "/usr/bin/php $WWW_DIR/tools/database/initialize.php" www-data +/bin/su -s /bin/bash -c "/usr/bin/php $WWW_DIR/tools/database/initialize.php" www-data && /bin/su -s /bin/bash -c "/usr/bin/php $WWW_DIR/tools/database/update.php" www-data +if [ $? -ne 0 ];then + echo "Database initialization failed" + exit 1 +fi + # Start shell service in background /bin/bash "$WWW_DIR/bin/service" & diff --git a/www/controllers/App/Config/Notification.php b/www/controllers/App/Config/Notification.php index 33677d55..bd8193f7 100644 --- a/www/controllers/App/Config/Notification.php +++ b/www/controllers/App/Config/Notification.php @@ -38,7 +38,7 @@ public static function get() $message = 'A new release is available: '; } - $message .= '' . GIT_VERSION . ' '; + $message .= '' . GIT_VERSION . ' '; $message .= '

Please update your docker image by following the steps documented here '; $NOTIFICATION_MESSAGES[] = array('Title' => 'Update available', 'Message' => $message); diff --git a/www/controllers/Repo/Mirror/Deb.php b/www/controllers/Repo/Mirror/Deb.php index 2a35ea77..4a84fea1 100644 --- a/www/controllers/Repo/Mirror/Deb.php +++ b/www/controllers/Repo/Mirror/Deb.php @@ -723,18 +723,20 @@ private function downloadDebPackages($url) /** * Rename package if arch is not correctly specified in its name - */ - $debPackageName = preg_replace('/-amd64.deb$/', '_amd64.deb', $debPackageName); - $debPackageName = preg_replace('/-arm64.deb$/', '_arm64.deb', $debPackageName); - $debPackageName = preg_replace('/-armel.deb$/', '_armel.deb', $debPackageName); - $debPackageName = preg_replace('/-armhf.deb$/', '_armhf.deb', $debPackageName); - $debPackageName = preg_replace('/-i386.deb$/', '_i386.deb', $debPackageName); - $debPackageName = preg_replace('/-mips.deb$/', '_mips.deb', $debPackageName); - $debPackageName = preg_replace('/-mips64el.deb$/', '_mips64el.deb', $debPackageName); - $debPackageName = preg_replace('/-mipsel.deb$/', '_mipsel.deb', $debPackageName); - $debPackageName = preg_replace('/-ppc64el.deb$/', '_ppc64el.deb', $debPackageName); - $debPackageName = preg_replace('/-s390x.deb$/', '_s390x.deb', $debPackageName); - $debPackageName = preg_replace('/-all.deb$/', '_all.deb', $debPackageName); + * e.g. filebeat-8.0.0-amd64.deb -> filebeat-8.0.0_amd64.deb + * e.g. filebeat-8.0.0.amd64.deb -> filebeat-8.0.0_amd64.deb + */ + $debPackageName = preg_replace('/[-.]amd64.deb$/', '_amd64.deb', $debPackageName); + $debPackageName = preg_replace('/[-.]arm64.deb$/', '_arm64.deb', $debPackageName); + $debPackageName = preg_replace('/[-.]armel.deb$/', '_armel.deb', $debPackageName); + $debPackageName = preg_replace('/[-.]armhf.deb$/', '_armhf.deb', $debPackageName); + $debPackageName = preg_replace('/[-.]i386.deb$/', '_i386.deb', $debPackageName); + $debPackageName = preg_replace('/[-.]mips.deb$/', '_mips.deb', $debPackageName); + $debPackageName = preg_replace('/[-.]mips64el.deb$/', '_mips64el.deb', $debPackageName); + $debPackageName = preg_replace('/[-.]mipsel.deb$/', '_mipsel.deb', $debPackageName); + $debPackageName = preg_replace('/[-.]ppc64el.deb$/', '_ppc64el.deb', $debPackageName); + $debPackageName = preg_replace('/[-.]s390x.deb$/', '_s390x.deb', $debPackageName); + $debPackageName = preg_replace('/[-.]all.deb$/', '_all.deb', $debPackageName); /** * Check if file does not already exists before downloading it (e.g. copied from a previously snapshot) diff --git a/www/controllers/Repo/Source/Deb.php b/www/controllers/Repo/Source/Deb.php index 10702670..4a4d1470 100644 --- a/www/controllers/Repo/Source/Deb.php +++ b/www/controllers/Repo/Source/Deb.php @@ -346,12 +346,12 @@ public function getPredefinedDistributions(string $source) $name = $distribution['name']; } if (!empty($distribution['description'])) { - $description = $distribution['description']; + $description = '(' . $distribution['description'] . ')'; } $predefinedDistributions[] = [ 'id' => $name, - 'text' => $name . ' (' . $description . ')', + 'text' => $name . ' ' . $description ]; } } diff --git a/www/controllers/Repo/Source/Rpm.php b/www/controllers/Repo/Source/Rpm.php index 9b2c2f90..0314ad37 100644 --- a/www/controllers/Repo/Source/Rpm.php +++ b/www/controllers/Repo/Source/Rpm.php @@ -262,12 +262,12 @@ public function getPredefinedReleasever(string $source) $name = $releasever['name']; } if (!empty($releasever['description'])) { - $description = $releasever['description']; + $description = '(' . $releasever['description'] . ')'; } $predefinedReleaseVersions[] = [ 'id' => $name, - 'text' => $name . ' (' . $description . ')' + 'text' => $name . ' ' . $description ]; } } diff --git a/www/models/Connection.php b/www/models/Connection.php index 9a6f5d1e..c181b411 100644 --- a/www/models/Connection.php +++ b/www/models/Connection.php @@ -946,7 +946,7 @@ public function generateHostTables() /** * Generate tables in the ws database */ - public function generateWsTables() + private function generateWsTables() { /** * ws_connections table diff --git a/www/templates/source-repositories/deb/docker-debian.yml b/www/templates/source-repositories/deb/docker-debian.yml new file mode 100644 index 00000000..e41956c6 --- /dev/null +++ b/www/templates/source-repositories/deb/docker-debian.yml @@ -0,0 +1,32 @@ +--- +description: Docker repositories for Debian +type: deb +repositories: + - name: docker-debian + type: deb + description: Docker repository + url: https://download.docker.com/linux/debian + distributions: + # Debian 12 + - name: bookworm + description: Debian 12 + components: + - name: stable + gpgkeys: + - link: https://download.docker.com/linux/debian/gpg + + # Debian 11 + - name: bullseye + description: Debian 11 + components: + - name: stable + gpgkeys: + - link: https://download.docker.com/linux/debian/gpg + + # Debian 10 + - name: buster + description: Debian 10 + components: + - name: stable + gpgkeys: + - link: https://download.docker.com/linux/debian/gpg diff --git a/www/templates/source-repositories/deb/docker-ubuntu.yml b/www/templates/source-repositories/deb/docker-ubuntu.yml new file mode 100644 index 00000000..ce2ea2b7 --- /dev/null +++ b/www/templates/source-repositories/deb/docker-ubuntu.yml @@ -0,0 +1,32 @@ +--- +description: Docker repositories for Ubuntu +type: deb +repositories: + - name: docker-ubuntu + type: deb + description: Docker repository + url: https://download.docker.com/linux/ubuntu + distributions: + # Ubuntu 24.04 + - name: noble + description: Ubuntu 24.04 + components: + - name: stable + gpgkeys: + - link: https://download.docker.com/linux/ubuntu/gpg + + # Ubuntu 22.04 + - name: jammy + description: Ubuntu 22.04 + components: + - name: stable + gpgkeys: + - link: https://download.docker.com/linux/ubuntu/gpg + + # Ubuntu 20.04 + - name: focal + description: Ubuntu 20.04 + components: + - name: stable + gpgkeys: + - link: https://download.docker.com/linux/ubuntu/gpg diff --git a/www/templates/source-repositories/deb/grafana.yml b/www/templates/source-repositories/deb/grafana.yml new file mode 100644 index 00000000..7ebb8a27 --- /dev/null +++ b/www/templates/source-repositories/deb/grafana.yml @@ -0,0 +1,24 @@ +--- +description: Grafana repositories +type: deb +repositories: + - name: grafana + type: deb + description: Grafana repository + url: https://apt.grafana.com + distributions: + # Stable + - name: stable + description: Stable releases of Grafana + components: + - name: main + gpgkeys: + - link: https://apt.grafana.com/gpg.key + + # Beta + - name: beta + description: Beta releases of Grafana + components: + - name: main + gpgkeys: + - link: https://apt.grafana.com/gpg.key diff --git a/www/templates/source-repositories/deb/sury-php-debian.yml b/www/templates/source-repositories/deb/sury-php-debian.yml new file mode 100644 index 00000000..c68fef38 --- /dev/null +++ b/www/templates/source-repositories/deb/sury-php-debian.yml @@ -0,0 +1,24 @@ +--- +description: Ondrej Sury's Debian PHP repositories +type: deb +repositories: + - name: sury-php-debian + type: deb + description: Ondrej Sury's PHP packages repository for Debian + url: https://packages.sury.org/php + distributions: + # Debian 12 + - name: bookworm + description: Debian 12 + components: + - name: main + gpgkeys: + - fingerprint: 15058500A0235D97F5D10063B188E2B695BD4743 + + # Debian 11 + - name: bullseye + description: Debian 11 + components: + - name: main + gpgkeys: + - fingerprint: 15058500A0235D97F5D10063B188E2B695BD4743 diff --git a/www/templates/source-repositories/deb/sury-php-ubuntu.yml b/www/templates/source-repositories/deb/sury-php-ubuntu.yml new file mode 100644 index 00000000..24c9eceb --- /dev/null +++ b/www/templates/source-repositories/deb/sury-php-ubuntu.yml @@ -0,0 +1,35 @@ +--- +description: Ondrej Sury's Ubuntu PHP repositories +type: deb +repositories: + - name: sury-php-ubuntu + type: deb + description: Ondrej Sury's PHP packages repository for Ubuntu + url: http://ppa.launchpad.net/ondrej/php/ubuntu + distributions: + # Ubuntu 24.04 + - name: noble + description: Ubuntu 24.04 + components: + - name: main + gpgkeys: + - fingerprint: B8DC7E53946656EFBCE4C1DD71DAEAAB4AD4CAB6 + - fingerprint: 14AA40EC0831756756D7F66C4F4EA0AAE5267A6C + + # Ubuntu 22.04 + - name: jammy + description: Ubuntu 22.04 + components: + - name: main + gpgkeys: + - fingerprint: B8DC7E53946656EFBCE4C1DD71DAEAAB4AD4CAB6 + - fingerprint: 14AA40EC0831756756D7F66C4F4EA0AAE5267A6C + + # Ubuntu 20.04 + - name: focal + description: Ubuntu 20.04 + components: + - name: main + gpgkeys: + - fingerprint: B8DC7E53946656EFBCE4C1DD71DAEAAB4AD4CAB6 + - fingerprint: 14AA40EC0831756756D7F66C4F4EA0AAE5267A6C diff --git a/www/templates/source-repositories/rpm/docker-centos.yml b/www/templates/source-repositories/rpm/docker-centos.yml new file mode 100644 index 00000000..7afc0ba4 --- /dev/null +++ b/www/templates/source-repositories/rpm/docker-centos.yml @@ -0,0 +1,32 @@ +--- +description: Docker repositories for CentOS +type: rpm +repositories: + - name: docker-centos + type: rpm + description: Docker stable repository + url: https://download.docker.com/linux/centos/$releasever/$basearch/stable + releasever: + # CentOS 10 + - name: 10 + description: CentOS 10 + gpgkeys: + - link: https://download.docker.com/linux/centos/gpg + + # CentOS 9 + - name: 9 + description: CentOS 9 + gpgkeys: + - link: https://download.docker.com/linux/centos/gpg + + # CentOS 8 + - name: 8 + description: CentOS 8 + gpgkeys: + - link: https://download.docker.com/linux/centos/gpg + + # CentOS 7 + - name: 7 + description: CentOS 7 + gpgkeys: + - link: https://download.docker.com/linux/centos/gpg diff --git a/www/templates/source-repositories/rpm/docker-redhat.yml b/www/templates/source-repositories/rpm/docker-redhat.yml new file mode 100644 index 00000000..0aac7dad --- /dev/null +++ b/www/templates/source-repositories/rpm/docker-redhat.yml @@ -0,0 +1,26 @@ +--- +description: Docker repositories for Redhat +type: rpm +repositories: + - name: docker-redhat + type: rpm + description: Docker stable repository + url: https://download.docker.com/linux/rhel/$releasever/$basearch/stable + releasever: + # Redhat 9 + - name: 9 + description: Redhat 9 + gpgkeys: + - link: https://download.docker.com/linux/rhel/gpg + + # Redhat 8 + - name: 8 + description: Redhat 8 + gpgkeys: + - link: https://download.docker.com/linux/rhel/gpg + + # Redhat 7 + - name: 7 + description: Redhat 7 + gpgkeys: + - link: https://download.docker.com/linux/rhel/gpg diff --git a/www/templates/source-repositories/rpm/grafana.yml b/www/templates/source-repositories/rpm/grafana.yml new file mode 100644 index 00000000..07245fd4 --- /dev/null +++ b/www/templates/source-repositories/rpm/grafana.yml @@ -0,0 +1,36 @@ +--- +description: Grafana repositories +type: rpm +repositories: + # Stable + - name: grafana + type: rpm + description: Grafana stable repository for RHEL and derivatives + url: https://rpm.grafana.com + releasever: + - name: 9 + description: RHEL 9 and derivatives + gpgkeys: + - link: https://rpm.grafana.com/gpg.key + + - name: 8 + description: RHEL 8 and derivatives + gpgkeys: + - link: https://rpm.grafana.com/gpg.key + + # Beta + - name: grafana-beta + type: rpm + description: Grafana beta repository for RHEL and derivatives + url: https://rpm-beta.grafana.com + releasever: + # RHEL/CentOS 9 + - name: 9 + description: RHEL 9 and derivatives + gpgkeys: + - link: https://rpm-beta.grafana.com/gpg.key + + - name: 8 + description: RHEL 8 and derivatives + gpgkeys: + - link: https://rpm-beta.grafana.com/gpg.key diff --git a/www/templates/source-repositories/rpm/remi-php.yml b/www/templates/source-repositories/rpm/remi-php.yml new file mode 100644 index 00000000..c0c0b561 --- /dev/null +++ b/www/templates/source-repositories/rpm/remi-php.yml @@ -0,0 +1,33 @@ +--- +description: Remi Collet's PHP repositories +type: rpm +repositories: + - name: remi-php + type: rpm + description: Remi Collet's PHP packages repository for RHEL and derivatives + url: http://rpms.remirepo.net/enterprise/$releasever/remi/$basearch/ + releasever: + # RHEL/CentOS 10 + - name: 10 + description: RHEL 10 and derivatives + gpgkeys: + - link: https://rpms.remirepo.net/enterprise/10.0/RPM-GPG-KEY-remi + + # RHEL/CentOS 9 + - name: 9 + description: RHEL 9 and derivatives + gpgkeys: + - link: https://rpms.remirepo.net/RPM-GPG-KEY-remi2021 + + # RHEL/CentOS 8 + - name: 8 + description: RHEL 8 and derivatives + gpgkeys: + - link: https://rpms.remirepo.net/RPM-GPG-KEY-remi2018 + + # RHEL/CentOS 7 + - name: 7 + description: RHEL 7 and derivatives + gpgkeys: + - link: https://rpms.remirepo.net/RPM-GPG-KEY-remi + diff --git a/www/version b/www/version index 5704b893..ba121e29 100644 --- a/www/version +++ b/www/version @@ -1 +1 @@ -4.14.1 \ No newline at end of file +4.14.2 \ No newline at end of file diff --git a/www/views/includes/panels/repos/new.inc.php b/www/views/includes/panels/repos/new.inc.php index d10edb46..ff622bc6 100644 --- a/www/views/includes/panels/repos/new.inc.php +++ b/www/views/includes/panels/repos/new.inc.php @@ -88,6 +88,7 @@
REPOSITORY NAME
+

The name of the local repository.

diff --git a/www/views/includes/repos-list.inc.php b/www/views/includes/repos-list.inc.php index df6dba8d..91ce1f25 100644 --- a/www/views/includes/repos-list.inc.php +++ b/www/views/includes/repos-list.inc.php @@ -411,5 +411,7 @@ } ?> \ No newline at end of file