From 6ab64b6fcdca327f9a98b0fcde1ee28681596a85 Mon Sep 17 00:00:00 2001 From: Florian Rey Date: Wed, 3 Jul 2024 09:18:49 +0200 Subject: [PATCH] [Apt] Nodejs 22 support --- .github/workflows/molecule.nodejs.yaml | 2 +- CHANGELOG.md | 2 ++ molecule/apt/converge.yml | 24 +++++++------- molecule/apt/goss/preferences.yaml.j2 | 12 +++---- .../apt/goss/repositories.default.yaml.j2 | 22 ++++++------- molecule/nodejs.22/converge.yml | 20 ++++++++++++ molecule/nodejs.22/goss/default.yaml.j2 | 15 +++++++++ molecule/nodejs.22/molecule.yml | 0 molecule/nodejs.22/prepare.yml | 12 +++++++ roles/apt/README.md | 1 + roles/apt/vars/main.yaml | 31 ++++++++++++------- 11 files changed, 99 insertions(+), 42 deletions(-) create mode 100644 molecule/nodejs.22/converge.yml create mode 100644 molecule/nodejs.22/goss/default.yaml.j2 create mode 100644 molecule/nodejs.22/molecule.yml create mode 100644 molecule/nodejs.22/prepare.yml diff --git a/.github/workflows/molecule.nodejs.yaml b/.github/workflows/molecule.nodejs.yaml index 88b9300b8..7366a7331 100644 --- a/.github/workflows/molecule.nodejs.yaml +++ b/.github/workflows/molecule.nodejs.yaml @@ -23,4 +23,4 @@ jobs: with: debug: ${{ inputs.debug == true }} scenario: nodejs - versions: '[4, 6, 7, 8, 9, 10, 12, 14, 16, 18, 20]' + versions: '[4, 6, 7, 8, 9, 10, 12, 14, 16, 18, 20, 22]' diff --git a/CHANGELOG.md b/CHANGELOG.md index 9bcc30749..8548e5c78 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased] +### Added +- [Apt] Nodejs 22 support ## [4.0.0] - 2024-04-12 ### Changed diff --git a/molecule/apt/converge.yml b/molecule/apt/converge.yml index 85c0b4ca4..c17145356 100644 --- a/molecule/apt/converge.yml +++ b/molecule/apt/converge.yml @@ -178,9 +178,9 @@ # Short syntax - git@backports - libssl1.0.0@backports - - php@sury_php:300 - - sury_php:100 - - sury_php:200 + - nginx-dbg@nginx:300 + - nginx:100 + - nginx:200 # Pattern syntax - preference: ansible@ansible - preference: ansible@ansible @@ -308,7 +308,7 @@ tasks_from: repositories vars: manala_apt_preferences: - - sury_php:100 + - nginx:100 manala_apt_repositories: # Short syntax - matomo @@ -327,41 +327,41 @@ signed_by: https://www.postgresql.org/media/keys/ACCC4CF8.asc # Flatten - - - nginx + - aptly # State # Implicit present - name: nodesource_12 uris: https://deb.nodesource.com/node_12.x suites: "{{ ansible_facts.distribution_release }}" components: main - key: nodesource + key: nodesource_legacy # Explicit absent - name: nodesource_14 uris: https://deb.nodesource.com/node_14.x suites: "{{ ansible_facts.distribution_release }}" components: main - key: nodesource + key: nodesource_legacy state: absent # Explicit Present - name: nodesource_16 uris: https://deb.nodesource.com/node_16.x suites: "{{ ansible_facts.distribution_release }}" components: main - key: nodesource + key: nodesource_legacy state: present # Existing Ignore - name: nodesource_18 uris: https://deb.nodesource.com/node_18.x suites: "{{ ansible_facts.distribution_release }}" components: main - key: nodesource + key: nodesource_legacy state: ignore # Not existing Ignore - name: nodesource_20 uris: https://deb.nodesource.com/node_20.x suites: "{{ ansible_facts.distribution_release }}" components: main - key: nodesource + key: nodesource_legacy state: ignore always: - name: Goss @@ -416,7 +416,7 @@ uris: https://deb.nodesource.com/node_14.x suites: "{{ ansible_facts.distribution_release }}" components: main - key: nodesource + key: nodesource_legacy # Existing ignore - name: nodesource_18 state: ignore @@ -425,7 +425,7 @@ uris: https://deb.nodesource.com/node_20.x suites: "{{ ansible_facts.distribution_release }}" components: main - key: nodesource + key: nodesource_legacy state: ignore always: - name: Goss diff --git a/molecule/apt/goss/preferences.yaml.j2 b/molecule/apt/goss/preferences.yaml.j2 index c1e253bbe..604b287de 100644 --- a/molecule/apt/goss/preferences.yaml.j2 +++ b/molecule/apt/goss/preferences.yaml.j2 @@ -23,25 +23,25 @@ file: Package: libssl1.0.0 Pin: release n={{ ansible_facts.distribution_release }}-backports Pin-Priority: 1000 - {{ tests_dir }}/default/php: + {{ tests_dir }}/default/nginx-dbg: exists: true filetype: file owner: root group: root mode: "0644" contents: | - Package: php php-* /^php[1-9]+/ - Pin: origin packages.sury.org + Package: nginx-dbg + Pin: origin nginx.org Pin-Priority: 300 - {{ tests_dir }}/default/sury_php: + {{ tests_dir }}/default/nginx: exists: true filetype: file owner: root group: root mode: "0644" contents: | - Package: * - Pin: origin packages.sury.org + Package: nginx* + Pin: origin nginx.org Pin-Priority: 200 # Default - Pattern syntax {{ tests_dir }}/default/ansible: diff --git a/molecule/apt/goss/repositories.default.yaml.j2 b/molecule/apt/goss/repositories.default.yaml.j2 index d9da39ef3..a8eb85289 100644 --- a/molecule/apt/goss/repositories.default.yaml.j2 +++ b/molecule/apt/goss/repositories.default.yaml.j2 @@ -2,18 +2,18 @@ file: # Default - From preferences - {{ manala_apt_repositories_dir }}/sury-php.sources: + {{ manala_apt_repositories_dir }}/nginx.sources: exists: true filetype: file owner: root group: root mode: "0644" contents: | - X-Repolib-Name: sury_php - URIs: https://packages.sury.org/php/ + X-Repolib-Name: nginx + URIs: http://nginx.org/packages/debian Suites: {{ ansible_facts.distribution_release }} - Components: main - Signed-By: /etc/apt/keyrings/sury-php.gpg + Components: nginx + Signed-By: /etc/apt/keyrings/nginx.asc Types: deb # Default - Short syntax {{ manala_apt_repositories_dir }}/matomo.sources: @@ -71,18 +71,18 @@ file: Signed-By: /etc/apt/keyrings/postgresql.asc Types: deb # Default - Flatten - {{ manala_apt_repositories_dir }}/nginx.sources: + {{ manala_apt_repositories_dir }}/aptly.sources: exists: true filetype: file owner: root group: root mode: "0644" contents: | - X-Repolib-Name: nginx - URIs: http://nginx.org/packages/debian - Suites: {{ ansible_facts.distribution_release }} - Components: nginx - Signed-By: /etc/apt/keyrings/nginx.asc + X-Repolib-Name: aptly + URIs: http://repo.aptly.info/ + Suites: squeeze + Components: main + Signed-By: /etc/apt/keyrings/aptly.asc Types: deb # Default - State {{ manala_apt_repositories_dir }}/nodesource-12.sources: diff --git a/molecule/nodejs.22/converge.yml b/molecule/nodejs.22/converge.yml new file mode 100644 index 000000000..d8953e085 --- /dev/null +++ b/molecule/nodejs.22/converge.yml @@ -0,0 +1,20 @@ +--- + +########### +# Default # +########### + +- name: Default + tags: [default] + hosts: debian + tasks: + - block: # noqa: name[missing] + - name: Role + ansible.builtin.import_role: + name: manala.roles.nodejs + always: + - name: Goss + ansible.builtin.command: + cmd: goss --gossfile - validate + stdin: "{{ lookup('ansible.builtin.template', 'goss/default.yaml.j2') }}" + changed_when: false diff --git a/molecule/nodejs.22/goss/default.yaml.j2 b/molecule/nodejs.22/goss/default.yaml.j2 new file mode 100644 index 000000000..a26c0d165 --- /dev/null +++ b/molecule/nodejs.22/goss/default.yaml.j2 @@ -0,0 +1,15 @@ +--- + +package: + nodejs: + installed: true + +command: + node --version: + exit-status: 0 + stdout: + - "/^v22.\\d+\\.\\d+$/" + npm --version: + exit-status: 0 + stdout: + - "/^10.\\d+\\.\\d+$/" diff --git a/molecule/nodejs.22/molecule.yml b/molecule/nodejs.22/molecule.yml new file mode 100644 index 000000000..e69de29bb diff --git a/molecule/nodejs.22/prepare.yml b/molecule/nodejs.22/prepare.yml new file mode 100644 index 000000000..5fc7e6f9f --- /dev/null +++ b/molecule/nodejs.22/prepare.yml @@ -0,0 +1,12 @@ +--- + +- name: Prepare + tags: [always] + hosts: debian + tasks: + - name: Apt + ansible.builtin.import_role: + name: manala.roles.apt + vars: + manala_apt_preferences: + - nodejs@nodesource_22 diff --git a/roles/apt/README.md b/roles/apt/README.md index 76616c363..1a4fc8710 100644 --- a/roles/apt/README.md +++ b/roles/apt/README.md @@ -134,6 +134,7 @@ manala_apt_repositories: - nodesource_16 - nodesource_18 - nodesource_20 + - nodesource_22 - postgresql - mongodb_4_2 - mongodb_4_4 diff --git a/roles/apt/vars/main.yaml b/roles/apt/vars/main.yaml index 30750d260..846919dbc 100644 --- a/roles/apt/vars/main.yaml +++ b/roles/apt/vars/main.yaml @@ -81,68 +81,73 @@ manala_apt_repositories_patterns: uris: https://deb.nodesource.com/node_4.x suites: "{{ ansible_facts.distribution_release }}" components: main - key: nodesource + key: nodesource_legacy legacy_file: deb_nodesource_com_node_4_x.list nodesource_6: uris: https://deb.nodesource.com/node_6.x suites: "{{ ansible_facts.distribution_release }}" components: main - key: nodesource + key: nodesource_legacy legacy_file: deb_nodesource_com_node_6_x.list nodesource_7: uris: https://deb.nodesource.com/node_7.x suites: "{{ ansible_facts.distribution_release }}" components: main - key: nodesource + key: nodesource_legacy legacy_file: deb_nodesource_com_node_7_x.list nodesource_8: uris: https://deb.nodesource.com/node_8.x suites: "{{ ansible_facts.distribution_release }}" components: main - key: nodesource + key: nodesource_legacy legacy_file: deb_nodesource_com_node_8_x.list nodesource_9: uris: https://deb.nodesource.com/node_9.x suites: "{{ ansible_facts.distribution_release }}" components: main - key: nodesource + key: nodesource_legacy legacy_file: deb_nodesource_com_node_9_x.list nodesource_10: uris: https://deb.nodesource.com/node_10.x suites: "{{ ansible_facts.distribution_release }}" components: main - key: nodesource + key: nodesource_legacy legacy_file: deb_nodesource_com_node_10_x.list nodesource_12: uris: https://deb.nodesource.com/node_12.x suites: "{{ ansible_facts.distribution_release }}" components: main - key: nodesource + key: nodesource_legacy legacy_file: deb_nodesource_com_node_12_x.list nodesource_14: uris: https://deb.nodesource.com/node_14.x suites: "{{ ansible_facts.distribution_release }}" components: main - key: nodesource + key: nodesource_legacy legacy_file: deb_nodesource_com_node_14_x.list nodesource_16: uris: https://deb.nodesource.com/node_16.x suites: "{{ ansible_facts.distribution_release }}" components: main - key: nodesource + key: nodesource_legacy legacy_file: deb_nodesource_com_node_16_x.list nodesource_18: uris: https://deb.nodesource.com/node_18.x suites: "{{ ansible_facts.distribution_release }}" components: main - key: nodesource + key: nodesource_legacy legacy_file: deb_nodesource_com_node_18_x.list nodesource_20: uris: https://deb.nodesource.com/node_20.x suites: "{{ ansible_facts.distribution_release }}" components: main - key: nodesource + key: nodesource_legacy legacy_file: deb_nodesource_com_node_20_x.list + nodesource_22: + uris: https://deb.nodesource.com/node_22.x + suites: nodistro + components: main + key: nodesource mysql_5_7: uris: http://repo.mysql.com/apt/{{ ansible_facts.distribution | lower }}/ suites: "{{ ansible_facts.distribution_release }}" @@ -564,8 +569,10 @@ manala_apt_keys_patterns: signed_by: https://nginx.org/keys/nginx_signing.key bearstech: signed_by: http://deb.bearstech.com/bearstech-archive.gpg - nodesource: + nodesource_legacy: signed_by: http://deb.nodesource.com/gpgkey/nodesource.gpg.key + nodesource: + signed_by: https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key mysql: signed_by: https://repo.mysql.com/RPM-GPG-KEY-mysql-2023 mariadb: