From 992f6a4fe65ca05a330f3412f40aac01ac3229b6 Mon Sep 17 00:00:00 2001 From: Dionisio Fernandez Date: Wed, 13 Nov 2024 12:22:29 +0100 Subject: [PATCH 1/7] 2.x: Fixed some bits about localgov --- .../drupal10/ce-dev/ansible/deploy.yml.j2 | 2 +- .../localgov/ce-dev/ansible/deploy.yml.j2 | 70 ++++++++++------- .../localgov/ce-dev/ansible/provision.yml.j2 | 78 ++++++++++--------- .../web/sites/default/local.settings.php.j2 | 2 +- 4 files changed, 83 insertions(+), 69 deletions(-) diff --git a/templates/drupal10/ce-dev/ansible/deploy.yml.j2 b/templates/drupal10/ce-dev/ansible/deploy.yml.j2 index 5603b32..2e85f6b 100644 --- a/templates/drupal10/ce-dev/ansible/deploy.yml.j2 +++ b/templates/drupal10/ce-dev/ansible/deploy.yml.j2 @@ -42,7 +42,7 @@ # You can safely remove these steps once you have a working composer.json. - name: Download composer file. ansible.builtin.get_url: - url: https://raw.githubusercontent.com/drupal/recommended-project/10.1.x/composer.json + url: https://raw.githubusercontent.com/drupal/recommended-project/10.3.x/composer.json dest: "{{ deploy_path }}/composer.json" force: false - name: Install drush. diff --git a/templates/localgov/ce-dev/ansible/deploy.yml.j2 b/templates/localgov/ce-dev/ansible/deploy.yml.j2 index cce88a9..45ae505 100644 --- a/templates/localgov/ce-dev/ansible/deploy.yml.j2 +++ b/templates/localgov/ce-dev/ansible/deploy.yml.j2 @@ -2,44 +2,47 @@ # Template playbook for a local Drupal9 codebase. - hosts: {{ project_name }}-web vars: - - project_name: {{ project_name }} - - project_type: drupal8 - - webroot: web - - build_type: local - - _env_type: dev + project_name: {{ project_name }} + project_type: drupal8 + webroot: web + build_type: local + _env_type: dev {% raw %} - - _domain_name: www.{{ project_name }}.local + _domain_name: www.{{ project_name }}.local # Path to your project root. This must match the "volume" set in the docker compose template. - - deploy_path: /home/ce-dev/deploy/live.local + deploy_path: /home/ce-dev/deploy/live.local # This actually does not take any backup, but is needed to populate settings.php. - - mysql_backup: - handling: none - credentials_handling: static + mysql_backup: + handling: none + credentials_handling: static # A list of Drupal sites (for multisites). - - drupal: - sites: - - folder: "default" - public_files: "sites/default/files" - install_command: "-y si localgov" - # Toggle config import on/off. Disabled for initial passes. - config_import_command: "" - # config_import_command: "cim" - config_sync_directory: "config/sync" - sanitize_command: "sql-sanitize" - # Remove after initial pass, to avoid reinstalling Drupal. - force_install: true - base_url: "https://{{ _domain_name }}" + drupal: + sites: + - folder: "default" + public_files: "sites/default/files" + install_command: "-y si localgov" + # Toggle config import on/off. Disabled for initial passes. + config_import_command: "" + # config_import_command: "cim" + config_sync_directory: "config/sync" + sanitize_command: "sql-sanitize" + # Remove after initial pass, to avoid reinstalling Drupal. + force_install: true + base_url: "https://{{ _domain_name }}" # Composer command to run. - - composer: - command: install - no_dev: false - working_dir: "{{ deploy_path }}" - apcu_autoloader: false + composer: + command: install + no_dev: false + working_dir: "{{ deploy_path }}" + apcu_autoloader: false + drush: + use_vendor: true + drush_bin: "{{ deploy_path }}/vendor/drush/drush/drush" pre_tasks: # You can safely remove these steps once you have a working composer.json. - name: Download composer file. ansible.builtin.get_url: - url: https://raw.githubusercontent.com/drupal/recommended-project/9.1.x/composer.json + url: https://raw.githubusercontent.com/drupal/recommended-project/10.3.x/composer.json dest: "{{ deploy_path }}/composer.json" force: false - name: Adding composer/installers plugin to composer config. @@ -70,13 +73,20 @@ - name: Install drush. community.general.composer: command: require - arguments: drush/drush:10.* + arguments: drush/drush:12.* working_dir: "{{ deploy_path }}" - name: Install localgov. community.general.composer: command: require arguments: localgovdrupal/localgov working_dir: "{{ deploy_path }}" + post_tasks: + - name: "Symlink global Drush" + ansible.builtin.file: + src: "{{ drush_bin }}" + dest: "/usr/local/bin/drush" + state: link + become: yes roles: - _init # Sets some variables the deploy scripts rely on. - composer # Composer install step. diff --git a/templates/localgov/ce-dev/ansible/provision.yml.j2 b/templates/localgov/ce-dev/ansible/provision.yml.j2 index 384dfd7..40bed73 100644 --- a/templates/localgov/ce-dev/ansible/provision.yml.j2 +++ b/templates/localgov/ce-dev/ansible/provision.yml.j2 @@ -19,47 +19,49 @@ ce_provision: local_dir: /home/ce-dev/ce-provision {% raw %} - - nginx: - domains: - - server_name: "{{ _domain_name }}" - access_log: "/var/log/nginx-access.log" - error_log: "/var/log/nginx-error.log" - error_log_level: "notice" - webroot: "/home/ce-dev/deploy/live.local/web" - project_type: "drupal8" - ssl: - domain: "{{ _domain_name }}" - cert: "{{ _ce_dev_mkcert_base}}/{{ _domain_name }}.pem" - key: "{{ _ce_dev_mkcert_base}}/{{ _domain_name }}-key.pem" - handling: "unmanaged" - ratelimitingcrawlers: false - is_default: true - servers: - - port: 80 - ssl: false - https_redirect: true - - port: 443 - ssl: true - https_redirect: false - upstreams: [] - - php: - version: - - 8.1 - cli: - memory_limit: -1 - _env_type: dev - fpm: - _env_type: dev - - xdebug: - cli: true - - nodejs: - version: 20.x - - apt_unattended_upgrades: - enable: false + nginx: + domains: + - server_name: "{{ _domain_name }}" + access_log: "/var/log/nginx-access.log" + error_log: "/var/log/nginx-error.log" + error_log_level: "notice" + webroot: "/home/ce-dev/deploy/live.local/web" + project_type: "drupal8" + ssl: + domain: "{{ _domain_name }}" + cert: "{{ _ce_dev_mkcert_base}}/{{ _domain_name }}.pem" + key: "{{ _ce_dev_mkcert_base}}/{{ _domain_name }}-key.pem" + handling: "unmanaged" + ratelimitingcrawlers: false + is_default: true + servers: + - port: 80 + ssl: false + https_redirect: true + - port: 443 + ssl: true + https_redirect: false + upstreams: [] + php: + version: + - 8.1 + cli: + memory_limit: -1 + _env_type: dev + fpm: + _env_type: dev + xdebug: + cli: true + nodejs: + version: 20.x + apt_unattended_upgrades: + enable: false {% endraw %} tasks: - apt: update_cache: true + - import_role: + name: _init - import_role: name: _meta/common_base - import_role: @@ -70,3 +72,5 @@ name: debian/php-fpm - import_role: name: debian/nginx + - import_role: + name: _exit diff --git a/templates/localgov/ce-dev/ansible/web/sites/default/local.settings.php.j2 b/templates/localgov/ce-dev/ansible/web/sites/default/local.settings.php.j2 index 9a0c41c..c98d91a 100644 --- a/templates/localgov/ce-dev/ansible/web/sites/default/local.settings.php.j2 +++ b/templates/localgov/ce-dev/ansible/web/sites/default/local.settings.php.j2 @@ -7,7 +7,7 @@ require __DIR__ . '/default.settings.php'; /** * Include local dev settings. */ -require DRUPAL_ROOT . '/sites/example.settings.local.php' +require DRUPAL_ROOT . '/sites/example.settings.local.php'; $databases['default']['default'] = array ( 'database' => '{{ build_databases[0].name }}', From 0f935e1e4fccb5450c14c4e070579e366336e110 Mon Sep 17 00:00:00 2001 From: Dionisio Fernandez Date: Wed, 13 Nov 2024 15:57:12 +0100 Subject: [PATCH 2/7] 2.x: Getting the latest release available per branch --- install.sh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/install.sh b/install.sh index a357fec..ea9fba5 100644 --- a/install.sh +++ b/install.sh @@ -43,7 +43,15 @@ fi # Version is optional. if [ -z "$VERSION" ]; then - VERSION=$( curl --silent "https://api.github.com/repos/codeenigma/ce-dev/releases/latest" | grep tag_name | cut -d \" -f 4) + API_URL="https://api.github.com/repos/codeenigma/ce-dev/releases" + VERSION=$(curl -s $API_URL | grep -Eo '"tag_name":\s*"2\.[^"]*"' | grep -Eo '2\.[^"]*' | sort -Vr | head -n 1) + + # Check if we found a release + if [ -n "$VERSION" ]; then + echo "Downloading the latest 2.x version: $VERSION" + else + echo "No 2.x release found" + fi fi RELEASE=https://github.com/codeenigma/ce-dev/releases/download/$VERSION/ce-dev-v$VERSION-$PLATFORM-x64.tar.gz From 430595a45c526b2e296c8769e92a0160fedc671d Mon Sep 17 00:00:00 2001 From: Dionisio Fernandez Date: Wed, 15 Jan 2025 12:57:46 +0100 Subject: [PATCH 3/7] 2.x: Removed yarn from doc and other old stuff --- README.md | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 8501db3..47c8d94 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,10 @@ ce-dev 2.x ====== Local Stack wrapper tool -[![2.x: Linux - Build ce_dev binaries, images and templates (test)](https://github.com/codeenigma/ce-dev/actions/workflows/ce-dev-devel-linux.yml/badge.svg?branch=devel-2.x)](https://github.com/codeenigma/ce-dev/actions/workflows/ce-dev-devel-linux.yml) +[![2.x: Ubuntu - Test image builds on PR](https://github.com/codeenigma/ce-dev/actions/workflows/ubuntu-pr.yml/badge.svg)](https://github.com/codeenigma/ce-dev/actions/workflows/ubuntu-pr.yml) + +[![devel-2.x: Ubuntu - Test image builds on PR](https://github.com/codeenigma/ce-dev/actions/workflows/devel-ubuntu-pr.yml/badge.svg)](https://github.com/codeenigma/ce-dev/actions/workflows/devel-ubuntu-pr.yml) + [![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=codeenigma_ce-dev&metric=security_rating)](https://sonarcloud.io/dashboard?id=codeenigma_ce-dev) [![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=codeenigma_ce-dev&metric=reliability_rating)](https://sonarcloud.io/dashboard?id=codeenigma_ce-dev) [![Bugs](https://sonarcloud.io/api/project_badges/measure?project=codeenigma_ce-dev&metric=bugs)](https://sonarcloud.io/dashboard?id=codeenigma_ce-dev) @@ -18,6 +21,7 @@ Local Stack wrapper tool * Removed drupal 8 and drupal 9 templates. * The way to assign IPs have changed. * All the packages used are up to date. +* Removed yarn as dependency. ## Key features - Allows several projects (or the host) to re-use the same ports @@ -48,8 +52,8 @@ Once you make your changes in the source dode ({root}/src folder), you need to c execute the following commands: ``` -yarn clean -yarn build +npm run clean +npm run build ``` This will clean and compile the new js files. A new folder {root}/lib is generated @@ -77,9 +81,6 @@ it means you would need to have the local docker images with tag 2.x dioni@dionice:~/projects/wrap$ docker image ls [sudo] contraseƱa para dioni: REPOSITORY TAG IMAGE ID CREATED SIZE -codeenigma/drupal10-db 2.x 5cae51ec65c0 3 days ago 409MB -codeenigma/drupal10-web 2.x 83cc832fb73d 3 days ago 1.47GB -codeenigma/blank-blank 2.x 5157934972ad 3 days ago 1.26GB codeenigma/ce-dev 2.x 8753195771fc 3 days ago 691MB codeenigma/ce-dev-controller 2.x 5aed115a5e74 3 days ago 1.83GB ``` @@ -95,14 +96,8 @@ If you don't have the local images, you can follow these steps: ```angular2html /bin/sh docker-images/export.sh --version 2.x --image-name ce-dev --dockerfile-path base /bin/sh docker-images/export.sh --version 2.x --image-name ce-dev-controller --dockerfile-path controller -/bin/sh templates/test.sh --template ce-dev.compose.yml ``` -The last step will generate the drupal10-web, drupal10-db and blank docker images. Also, it will create docker containers -with the same name. You can remove these containers because we only need the images. - -Now we can start to test our ce-dev changes as it is described in the previous point 'How to compile' - ### Testing a new ce-dev release locally. @@ -110,7 +105,7 @@ If you need to test the creation of releases locally, we can do it using oclif. oclif is an open source framework for building a command line interface (CLI) in Node.js and Typescript https://oclif.io/ -As part of the command we used ```yarn build```, a folder /lib was generated. This folder contains the javascript code +As part of the command we used ```npm run build```, a folder /lib was generated. This folder contains the javascript code used by oclif. According to your system, your local ce-dev version will be different. Here the list of available targets: @@ -127,7 +122,15 @@ Probably you will use linux-...64 or darwin-...64 version. Use oclif pack to generate a new release for your system: -i.e: yarn oclif pack tarballs --targets=linux-x64 --no-xz +i.e: + + +npm run prepack-oclif + +npx oclif pack tarballs --targets=linux-x64 --no-xz + +npm run postpack-oclif + This will generate a tar.gz file inside a new directory named /dir/ce-dev-xxxxxx You can un-compress and put it where you want. i.e: you can put it in /opt too (where you have the current ce-dev) From d0aad546fae8c19a6b7dd6180e3c0dec7d7933d3 Mon Sep 17 00:00:00 2001 From: Dionisio Fernandez Date: Wed, 15 Jan 2025 15:07:36 +0100 Subject: [PATCH 4/7] 2.x: Fixed devel tag --- src/commands/build.ts | 6 ++++-- src/commands/push.ts | 3 ++- src/controller-manager.ts | 6 ++++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/commands/build.ts b/src/commands/build.ts index 1ad621b..158ffb3 100644 --- a/src/commands/build.ts +++ b/src/commands/build.ts @@ -79,9 +79,10 @@ export default class BuildCmd extends BaseCmd { if (this.composeConfig['x-ce_dev']) { containerName = this.composeConfig['x-ce_dev'].project_name + '-' + name } + let version = AppSettings.ceDevVersion + '.x' if (this.developmentMode) { - version += '-devel' + version = 'devel-' + version } ux.action.start('Committing container ' + containerName + ' as a new image.') @@ -98,8 +99,9 @@ export default class BuildCmd extends BaseCmd { private generateCompose(): void { let version = AppSettings.ceDevVersion + '.x' if (this.developmentMode) { - version += '-devel' + version = 'devel-' + version } + ux.action.start('Generating new compose file ' + this.composeDest + '.') for (const [name, service] of Object.entries(this.composeConfig.services)) { const containerName = this.composeConfig['x-ce_dev'].project_name + '-' + name diff --git a/src/commands/push.ts b/src/commands/push.ts index 034419e..12fc131 100644 --- a/src/commands/push.ts +++ b/src/commands/push.ts @@ -50,8 +50,9 @@ export default class PushCmd extends DockerImagesCmd { private push(): void { let version = AppSettings.ceDevVersion + '.x' if (this.developmentMode) { - version += '-devel' + version = 'devel-' + version } + for (const name of Object.keys(this.composeConfig.services)) { const containerName = this.composeConfig['x-ce_dev'].project_name + '-' + name ux.action.start('Pushing image ' + containerName) diff --git a/src/controller-manager.ts b/src/controller-manager.ts index 2fd6c13..7e9a069 100644 --- a/src/controller-manager.ts +++ b/src/controller-manager.ts @@ -250,8 +250,9 @@ export default class ControllerManager { // If in development mode, we use devel version. let version = AppSettings.ceDevVersion + '.x'; if (this.developmentMode) { - version += '-devel'; + version = 'devel-' + version } + execSync(this.dockerBin + ' pull codeenigma/ce-dev-controller:' + version, { stdio: 'inherit', }) @@ -261,8 +262,9 @@ export default class ControllerManager { const ipManager = new IPManager(this.config, this.dockerBin) let version = AppSettings.ceDevVersion + '.x' if (this.developmentMode) { - version += '-devel' + version = 'devel-' + version } + return { networks: { ce_dev: { From 1761fc6f2e6ebe58805bef39a4c2a086b8a7379b Mon Sep 17 00:00:00 2001 From: Dionisio Fernandez Date: Tue, 11 Feb 2025 10:16:26 +0100 Subject: [PATCH 5/7] 2.x: Using ce-dev-ce-provision-config 2.x --- RELEASE | 7 ++++--- docker-images/controller-ci/provision.yml | 2 +- docker-images/controller-devel/provision.yml | 2 +- docker-images/controller/provision.yml | 2 +- package.json | 2 +- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/RELEASE b/RELEASE index 4486da8..ee26e61 100644 --- a/RELEASE +++ b/RELEASE @@ -1,6 +1,7 @@ -2.0.1 +2.0.2 -## Changes since 2.0.0 +## Changes since 2.0.1 -* Added Drupal 11 template +* Using https://github.com/codeenigma/ce-dev-ce-provision-config 2.x +* Removed yarn as dependency, using only npm * Updated references to 2.x-devel with devel-2.x diff --git a/docker-images/controller-ci/provision.yml b/docker-images/controller-ci/provision.yml index a21802f..f469508 100644 --- a/docker-images/controller-ci/provision.yml +++ b/docker-images/controller-ci/provision.yml @@ -19,7 +19,7 @@ own_repository_branch: 2.x own_repository_skip_checkout: false config_repository: https://github.com/codeenigma/ce-dev-ce-provision-config.git - config_repository_branch: 1.x + config_repository_branch: 2.x config_repository_skip_checkout: false username: "{{ _ce_provision_username }}" install_username: "{{ _ce_provision_username }}" diff --git a/docker-images/controller-devel/provision.yml b/docker-images/controller-devel/provision.yml index 4dc6a47..16fcfed 100644 --- a/docker-images/controller-devel/provision.yml +++ b/docker-images/controller-devel/provision.yml @@ -42,7 +42,7 @@ own_repository_branch: 2.x own_repository_skip_checkout: false config_repository: https://github.com/codeenigma/ce-dev-ce-provision-config.git - config_repository_branch: 1.x + config_repository_branch: 2.x config_repository_skip_checkout: false username: "{{ _ce_provision_username }}" install_username: "{{ _ce_provision_username }}" diff --git a/docker-images/controller/provision.yml b/docker-images/controller/provision.yml index 4dc6a47..16fcfed 100644 --- a/docker-images/controller/provision.yml +++ b/docker-images/controller/provision.yml @@ -42,7 +42,7 @@ own_repository_branch: 2.x own_repository_skip_checkout: false config_repository: https://github.com/codeenigma/ce-dev-ce-provision-config.git - config_repository_branch: 1.x + config_repository_branch: 2.x config_repository_skip_checkout: false username: "{{ _ce_provision_username }}" install_username: "{{ _ce_provision_username }}" diff --git a/package.json b/package.json index 5877ec1..59fcb3e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ce-dev", "description": "Local Stack wrapper tool", - "version": "2.0.1", + "version": "2.0.2", "author": "Codeenigma", "bin": "./bin/run.js", "bugs": "https://github.com/codeenigma/ce-dev/issues", From b490297f5003d2835a5fd61794fd99949cf4b847 Mon Sep 17 00:00:00 2001 From: Dionisio Fernandez Date: Tue, 11 Feb 2025 10:44:37 +0100 Subject: [PATCH 6/7] 2.x: Added new param ansible_collection_dir --- docker-images/controller-ci/provision.yml | 1 + docker-images/controller-devel/provision.yml | 1 + docker-images/controller/provision.yml | 1 + 3 files changed, 3 insertions(+) diff --git a/docker-images/controller-ci/provision.yml b/docker-images/controller-ci/provision.yml index f469508..3d644ba 100644 --- a/docker-images/controller-ci/provision.yml +++ b/docker-images/controller-ci/provision.yml @@ -30,6 +30,7 @@ ssh_key_type: rsa aws_support: true local_dir: /home/controller/ce-provision + ansible_collections_dir: "/home/ce-dev/ce-deploy/galaxy/ansible_collections" groups: [] contrib_roles: - directory: wazuh diff --git a/docker-images/controller-devel/provision.yml b/docker-images/controller-devel/provision.yml index 16fcfed..536abc4 100644 --- a/docker-images/controller-devel/provision.yml +++ b/docker-images/controller-devel/provision.yml @@ -53,6 +53,7 @@ ssh_key_type: rsa aws_support: true local_dir: /home/ce-dev/ce-provision + ansible_collections_dir: "/home/ce-dev/ce-deploy/galaxy/ansible_collections" groups: [] contrib_roles: - directory: wazuh diff --git a/docker-images/controller/provision.yml b/docker-images/controller/provision.yml index 16fcfed..536abc4 100644 --- a/docker-images/controller/provision.yml +++ b/docker-images/controller/provision.yml @@ -53,6 +53,7 @@ ssh_key_type: rsa aws_support: true local_dir: /home/ce-dev/ce-provision + ansible_collections_dir: "/home/ce-dev/ce-deploy/galaxy/ansible_collections" groups: [] contrib_roles: - directory: wazuh From 039a7336e806bbbdbdef34b1125ec4ece0822633 Mon Sep 17 00:00:00 2001 From: Dionisio Fernandez Date: Tue, 11 Feb 2025 11:02:47 +0100 Subject: [PATCH 7/7] 2.x: Added missing var to ce_deploy too --- docker-images/controller-devel/provision.yml | 1 + docker-images/controller/provision.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/docker-images/controller-devel/provision.yml b/docker-images/controller-devel/provision.yml index 536abc4..1cb13e0 100644 --- a/docker-images/controller-devel/provision.yml +++ b/docker-images/controller-devel/provision.yml @@ -25,6 +25,7 @@ new_user: true key_name: id_rsa.pub local_dir: /home/ce-dev/ce-deploy + ansible_collections_dir: "/home/ce-dev/ce-deploy/galaxy/ansible_collections" ce_provision_dir: "/home/ce-dev/ce-provision" groups: [] galaxy_custom_requirements_file: "" diff --git a/docker-images/controller/provision.yml b/docker-images/controller/provision.yml index 536abc4..1cb13e0 100644 --- a/docker-images/controller/provision.yml +++ b/docker-images/controller/provision.yml @@ -25,6 +25,7 @@ new_user: true key_name: id_rsa.pub local_dir: /home/ce-dev/ce-deploy + ansible_collections_dir: "/home/ce-dev/ce-deploy/galaxy/ansible_collections" ce_provision_dir: "/home/ce-dev/ce-provision" groups: [] galaxy_custom_requirements_file: ""