Get support for obazoud/devoxx-tdd-for-devops
If you're new to LTH, please see our FAQ for more information on what it is we do.
Support Options
Unfortunately, there are currently no active helpers for this repository on the platform. Until they become available, we reccomend the following actions:
View Open IssuesTake a look to see if anyone else has experienced the same issue as you and if they managed to solve it.
Open an IssueMake sure to read any relevant guidelines for opening issues on this repo before posting a new issue.
Sponsor directlyCheck out the page and see if there are any options to sponsor this project or it's developers directly.
obazoud/devoxx-tdd-for-devops
Devoxx 2014: Hand's on Labs "TDD for DevOps"
Devoxx 2014 Call for Paper: Test Driven Infrastructure: TDD pour DevOps
Installation des différents logiciels
- Virtual box 4.3.10
- Ruby 1.9.3
- Vagrant 1.4.3
- Git 1.9
- Chef 11.10.4 (option)
Demander aux speakers l'adresse pour downloader les logiciels.
Ajouter la box 'devoxx' à Vagrant situé ici.
% vagrant box add opscode_ubuntu-13.04_devoxx-0.4.0 opscode_ubuntu-13.04_devoxx-0.4.0.box
% vagrant box list
NOTE: La box a été créée à l'aide d'un fork du projet Bento, branche devoxx.
Git
Cloner le repository Git depuis Github.
% git clone http://xxx.xxx.xxx.xxx/devoxx-tdd-for-devops
% cd devoxx-tdd-for-devops
% git checkout step1
NOTE: vous pouvez faire une clone de http://github.com/obazoud/devoxx-tdd-for-devops.git si vous avez accès au net.
Installation des gems
Tous les gems requis sont dans git.
NOTE: ce n'est pas une bonne pratique mais évitons au maximun de dépendre du Wifi de Devoox
% cd site-cookbooks/stack
% bundle install --local
Instructions
Voici la structure du projet utilisé lors de ce hand's on.
.
├── cookbooks
│ └── README.md
├── doc <-- Ensemble des documents des logiciels de tests
│ ├── bats.pdf
│ ├── ChefResourcesandProvidersReference.pdf
│ ├── ChefSpec.pdf
│ ├── serverspec-Home.pdf
│ ├── serverspec-ResourceTypes.pdf
│ └── serverspec-Tutorial.pdf
├── LICENSE
├── metadata.rb
├── README.md <-- Le fichier que vous êtes en train de lire
├── site-cookbooks
│ ├── README.md
│ └── stack <-- Cookbook 'Stack'
│ ├── attributes
│ ├── CHANGELOG.md
│ ├── Gemfile
│ ├── Gemfile.lock
│ ├── metadata.rb
│ ├── Rakefile
│ ├── README.md
│ ├── recipes
│ ├── rubocop-todo.yml
│ ├── spec
│ ├── templates
│ ├── test
│ └── vendor
└── Vagrantfile
Stack
Le cookbook 'Stack', qui est à compléter, va regrouper MySQL, Tomcat et Jhipster.
L'ensemble des commandes seront lancés via Rake.
% cd site-cookbooks/stack
% rake -T
rake integration # Run all integration tests
rake integration:kitchen # Run Test Kitchen with Vagrant (BATS, Serverspec, ...)
rake style # Run all style checks
rake style:foodcritic # Lint Chef cookbooks
rake style:knife # Runs knife cookbook test
rake style:rubocop # Run Ruby static code analyzer
rake unit # Run all unit tests
rake unit:spec # Run ChefSpec examples
NOTE: ce n'est pas une bonne pratique de faire un cookbook "foure tout", mais nous voulons nous focaliser sur les TDD sur le temps imparti.
MySQL
Le serveur mysql est à installer par son paquet Ubuntu.
'Preseeding' est une façon de donner des réponses aux questions posées au cours du processus d'installation, sans avoir à entrer manuellement les réponses alors que l'installation est en cours d'exécution. Cela permet d'automatiser entièrement la plupart des installations.
C'est cette technique que nous allons utiliser ici, en particulier pour renseinger le mot de passe de 'root'. Pour ce faire, le fichier '/var/cache/local/preseeding/mysql-server.seed' sera créé à partir du template 'mysql-server.seed.erb', puis la commande 'debconf-set-selections' sera executée.
MySQL: Tests unitaires
- Vérifier que les tests sont en 'pending'.
% cd site-cookbooks/stack
% rake unit
Pending:
stack::mysql-server set up preseeding data for debian packages
# No reason given
# ./spec/mysql-server_spec.rb:7
stack::mysql-server put mysql-server preseeding file
# No reason given
# ./spec/mysql-server_spec.rb:13
stack::mysql-server installs mysql-server
# No reason given
# ./spec/mysql-server_spec.rb:26
stack::mysql-server service mysql
# No reason given
# ./spec/mysql-server_spec.rb:31
stack::tomcat7 installs tomcat 7
# No reason given
# ./spec/tomcat7_spec.rb:7
stack::tomcat7 put setenv.sh file
# No reason given
# ./spec/tomcat7_spec.rb:12
stack::tomcat7 service tomcat 7
# No reason given
# ./spec/tomcat7_spec.rb:22
stack::tomcat7 copy jhipster war to tomcat
# No reason given
# ./spec/tomcat7_spec.rb:27
Finished in 0.00521 seconds
8 examples, 0 failures, 8 pending
- Editer le fichier site-cookbook/stack/spec/mysql-server_spec.rb pour ajouter les tests indiqués
- Puis, éditer le fichier site-cookbook/stack/recipes/mysql-server.rb pour implementer les ressources manquantes
- Editer le fichier site-cookbook/stack/templates/default/mysql-server.erb pour préciser le bon mot de passe
- Vérfier que les tests passent correctement
Tomcat
Le serveur Java Tomcat7 sera installé son paquet Ubuntu. Nous souhaitons que le context de l'application soit '/'. Nous devons par conséquent supprimer le répertoire ROOT ainsi que le ROOT.war installé par défaut par le paquet système.
L'application sera visualisable en ouvrant votre navigateur avec http://localhost:8080/.
Le fichier WAR de JHipster est déjà présent dans la VM Vagrant fourni à l'emplacement suivant /opt/apps/jhipster.war, il faudra le copier vers /var/lib/tomcat7/webapps/ROOT.war.
Tomcat: Tests unitaires
- Vérifier que les tests sont en 'pending'.
% cd site-cookbooks/stack
% rake unit
Pending:
stack::tomcat7 installs tomcat 7
# No reason given
# ./spec/tomcat7_spec.rb:7
stack::tomcat7 put setenv.sh file
# No reason given
# ./spec/tomcat7_spec.rb:12
stack::tomcat7 service tomcat 7
# No reason given
# ./spec/tomcat7_spec.rb:22
stack::tomcat7 copy jhipster war to tomcat
# No reason given
# ./spec/tomcat7_spec.rb:27
Finished in 0.0938 seconds
8 examples, 0 failures, 4 pending
- Editer le fichier site-cookbook/stack/spec/tomcat7-server_spec.rb pour ajouter les tests indiqués
- Puis, éditer le fichier site-cookbook/stack/recipes/tomcat7.rb pour implementer les ressources manquantes
- Editer le fichier site-cookbook/stack/templates/default/setennv.sh.erb pour préciser le bon profile dans JAVA_OPTS
- Vérfier que les tests passent correctement
% cd site-cookbooks/stack
% rake unit
........
Finished in 0.09749 seconds
8 examples, 0 failures
Tests intégrations
Vous pouvez continuer avec la branche actuelle 'step1', mais vous pouvez faire un git checkout step2' si vous êtes perdu.
- Vérifier que les tests sont en 'pending'.
% cd site-cookbooks/stack
% rake integration
-----> Cleaning up any prior instances of <default-ubuntu-1304>
-----> Destroying <default-ubuntu-1304>...
Finished destroying <default-ubuntu-1304> (0m0.00s).
-----> Testing <default-ubuntu-1304>
-----> Creating <default-ubuntu-1304>...
Bringing machine 'default' up with 'virtualbox' provider...
[default] Importing base box 'opscode_ubuntu-13.04_devoxx-0.4.0'...
...
-----> Converging <default-ubuntu-1304>...
Preparing files for transfer
Preparing current project directory as a cookbook
...
[2014-04-15T09:55:14+00:00] INFO: Forking chef instance to converge...
Starting Chef Client, version 11.10.4
[2014-04-15T09:55:14+00:00] INFO: *** Chef 11.10.4 ***
[2014-04-15T09:55:14+00:00] INFO: Setting the run_list to ["recipe[stack::default]"] from JSON
[2014-04-15T09:55:14+00:00] INFO: Run List is [recipe[stack::default]]
[2014-04-15T09:55:14+00:00] INFO: Run List expands to [stack::default]
...
[2014-04-15T09:57:08+00:00] INFO: Chef Run complete in 113.717653487 seconds
...
-----> Setting up Busser
Creating BUSSER_ROOT in /tmp/busser
Creating busser binstub
Plugin bats already installed
Plugin minitest already installed
Plugin serverspec already installed
Finished setting up <default-ubuntu-1304> (0m9.71s).
-----> Verifying <default-ubuntu-1304>...
Suite path directory /tmp/busser/suites does not exist, skipping.
Uploading /tmp/busser/suites/minitest/test_mysql-server.rb (mode=0644)
...
-----> Running bats test suite
- it creates mysql data directory (skipped)
- it creates mysql user (skipped)
...
15 tests, 0 failures
-----> Running minitest test suite
...
4 tests, 2 assertions, 0 failures, 0 errors, 2 skips
-----> Running serverspec test suite
Package "mysql-server"
example at /tmp/busser/suites/serverspec/localhost/mysql-server_spec.rb:8 (PENDING: No reason given)
...
Pending:
Package "mysql-server"
# No reason given
# /tmp/busser/suites/serverspec/localhost/mysql-server_spec.rb:8
...
Finished in 0.15471 seconds
11 examples, 0 failures, 11 pending
...
-----> Destroying <default-ubuntu-1304>...
...
- Editer le fichier site-cookbook/stack/test/integration/default/bats/mysql-server_installed.bats et tomcat7_installed.bats pour ajouter les tests indiqués
- Editer le fichier site-cookbook/stack/test/integration/default/minitest/test_mysql-server.rb et test_tomcat7.rb pour ajouter les tests indiqués
- Editer le fichier site-cookbook/stack/test/integration/default/serverspec/localhost/mysql-server_spec.rb pour ajouter les tests indiqués
- Vérfier que les tests passent correctement
Style
- Vérifier le style et la qualité de votre code, et si besoin corriger en tenant compte des recommandations.
% cd site-cookbooks/stack
% rake style
Allez plus loin
Si vous êtes en avance, vous pouvez:
- changer les tests et la recette Tomcat pour prendre le WAR en remote via http (deamnder aux speakers le lien)
- faire les tests et les recettes pour installer un serveur Apache devant le Tomcat
Our Mission
We want to make open source more sustainable. The entire platform was born from this and everything we do is in aid of this.
From the Blog
Interesting Articles
-
Generating income from open source
Jun 23 • 8 min read
-
2023 State of OSS
Apr 23 • 45 min read ★
-
A funding experiment...
Aug 19 • 10 min read
-
But You Said I could
Aug 19 • 2 min read
Thank you for checking out LiveTechHelper |
2025 © lth-dev incorporated
p-e622a1a2