Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CI/CD Con Gitlab
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
David Padilla
June 22, 2017
Technology
140
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CI/CD Con Gitlab
David Padilla
June 22, 2017
More Decks by David Padilla
See All by David Padilla
Translate Rails apps like a pro
dabit
0
190
Tips and Treats for New Developers
dabit
3
570
Procesando millones de imágenes con Elixir
dabit
0
160
Tus primeros pasos con Elasticsearch
dabit
0
690
Desarrollo Lean: no es un cuento de hadas
dabit
1
110
Web applications with Ruby, not Rails
dabit
1
190
From Rails to the Web Server to The Browser
dabit
2
280
Web Applications With Rails (not Ruby)
dabit
3
230
From Rails to the Webserver to the Browser (Ruby Kaigi)
dabit
2
1.2k
Other Decks in Technology
See All in Technology
AIツールを導入しても生産性はあがらない? カオナビが直面した 3つの壁と乗り越え方。/ Overcoming 3 Barriers to AI-Driven Productivity at kaonavi
kaonavi
0
280
PHPで作って学ぶリアルタイム音声対話AIとWebSocket入門 by ムナカタ
munakata
0
150
SoccerMaster: A Vision Foundation Model for Soccer Understanding
kzykmyzw
0
180
システム監視入門
grimoh
2
520
Vポイント分析基盤におけるデータモデリング20年史
taromatsui_cccmkhd
4
760
データ活用研修 データマネジメント【MIXI 26新卒技術研修】
mixi_engineers
PRO
2
100
テックカンファレンス三大ステークホルダーの文化人類学 ─ 違いを認め合う関係性作り
bash0c7
2
490
OPENLOGI Company Profile for engineer
hr01
1
75k
Playwright × AI Agent でE2Eテストはどう変わるか AI駆動テストの可能性と実用検証の結果
taiga7543
2
870
Git 研修【MIXI 26新卒技術研修】
mixi_engineers
PRO
1
160
現場との対話から始める “作る前に問い直す”業務改善
mochico50
2
290
AI_Dev_Day_製造業領域でのAI活用から見た活用の罠と成功に導く実践知.pdf
kintotechdev
0
200
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
340
58k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
410
Navigating Weather and Climate Data
rabernat
0
400
The browser strikes back
jonoalderson
0
1.4k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
390
First, design no harm
axbom
PRO
2
1.2k
Documentation Writing (for coders)
carmenintech
77
5.4k
The SEO identity crisis: Don't let AI make you average
varn
0
520
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
450
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
56k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Transcript
CI/CD con Gitlab David Padilla @dabit
David Padilla @dabit
@micheladaio
CI/CD con Gitlab
CI/CD
Integración Continua CI
Entrega Continua CD
Despliegue Continuo CD
Pruebas Automatizadas
Test Driven Development
Nuestro proceso
Desarrollo Merge Request Peer Review Review QA Staging Más QA
UAT Producción
Desarrollo Merge Request Peer Review Review QA Staging Más QA
UAT Producción
None
Control de versiones (git) Merge Requests / Retroalimentación Orquesta deploys
Corre pruebas Registry de Docker
None
require 'application_system_test_case' class HomepagesTest < ApplicationSystemTestCase test 'homepage' do visit
root_path assert_content 'SGNext' end end
require 'application_system_test_case' class HomepagesTest < ApplicationSystemTestCase test 'homepage' do visit
root_path assert_content 'SGNext' end end
require 'application_system_test_case' class HomepagesTest < ApplicationSystemTestCase test 'homepage' do visit
root_path assert_content 'SGNext' end end
None
None
Como Usuario cuando voy a la pagina principal quiero ver
el slogan "La mejor conferencia de México"
require 'application_system_test_case' class HomepagesTest < ApplicationSystemTestCase test 'homepage' do visit
root_path assert_content 'SGNext' end end
require 'application_system_test_case' class HomepagesTest < ApplicationSystemTestCase test 'homepage' do visit
root_path assert_content 'SGNext' assert_content 'La mejor conferencia de Mexico' end end
None
None
<div class="row align-items-center"> <div class="col-md-12"> <div class="jumbotron"> <h1 class="display-3">SGNext</h1> <p
class="lead"> La mejor conferencia de Mexico </p> </div> </div> </div>
<div class="row align-items-center"> <div class="col-md-12"> <div class="jumbotron"> <h1 class="display-3">SGNext</h1> <p
class="lead"> La mejor conferencia de Mexico </p> </div> </div> </div>
<div class="row align-items-center"> <div class="col-md-12"> <div class="jumbotron"> <h1 class="display-3">SGNext</h1> <p
class="lead"> La mejor conferencia de Mexico </p> </div> </div> </div>
None
None
$ git checkout -b slogan $ git add . $
git commit -m "Nuevo slogan" [slogan d287522] Nuevo slogan 2 files changed, 2 insertions(+)
None
None
None
None
None
None
None
None
None
None
None
require 'application_system_test_case' class HomepagesTest < ApplicationSystemTestCase test 'homepage' do visit
root_path assert_content 'SGNext' assert_content 'La mejor conferencia de México' end end
<div class="row align-items-center"> <div class="col-md-12"> <div class="jumbotron"> <h1 class="display-3">SGNext</h1> <p
class="lead"> La mejor conferencia de México </p> </div> </div> </div>
None
None
None
None
None
None
None
None
None
None
None
None
None
FROM ruby:2.4.1 ENV PHANTOM_JS="phantomjs-2.1.1-linux-x86_64" RUN apt-get update RUN apt-get install
-y software-properties-common apt-transport-https RUN add-apt-repository "deb https://cli-assets.heroku.com/branches/stable/apt ./" RUN curl -L https://cli-assets.heroku.com/apt/release.key | apt-key add - RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list RUN curl -sL https://deb.nodesource.com/setup_6.x | bash - RUN apt-get update && \ apt-get upgrade -y RUN apt-get install -y build-essential chrpath libssl-dev libxft-dev \ libfreetype6 libfreetype6-dev libfontconfig1 libfontconfig1-dev qt5-default \ libqt5webkit5-dev gstreamer1.0-plugins-base gstreamer1.0-tools \ gstreamer1.0-x imagemagick cmake yarn nodejs RUN apt-get install heroku RUN gem install dpl RUN curl -L -O https://bitbucket.org/ariya/phantomjs/downloads/$PHANTOM_JS.tar.bz2 RUN tar xvjf $PHANTOM_JS.tar.bz2 && \ mv $PHANTOM_JS /usr/local/share && \ ln -sf /usr/local/share/$PHANTOM_JS/bin/phantomjs /usr/local/bin
FROM ruby:2.4.1 ENV PHANTOM_JS="phantomjs-2.1.1-linux-x86_64" RUN apt-get update RUN apt-get install
-y software-properties-common apt-transport-https RUN add-apt-repository "deb https://cli-assets.heroku.com/branches/stable/apt ./" RUN curl -L https://cli-assets.heroku.com/apt/release.key | apt-key add - RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list RUN curl -sL https://deb.nodesource.com/setup_6.x | bash - RUN apt-get update && \ apt-get upgrade -y RUN apt-get install -y build-essential chrpath libssl-dev libxft-dev \ libfreetype6 libfreetype6-dev libfontconfig1 libfontconfig1-dev qt5-default \ libqt5webkit5-dev gstreamer1.0-plugins-base gstreamer1.0-tools \ gstreamer1.0-x imagemagick cmake yarn nodejs RUN apt-get install heroku RUN gem install dpl RUN curl -L -O https://bitbucket.org/ariya/phantomjs/downloads/$PHANTOM_JS.tar.bz2 RUN tar xvjf $PHANTOM_JS.tar.bz2 && \ mv $PHANTOM_JS /usr/local/share && \ ln -sf /usr/local/share/$PHANTOM_JS/bin/phantomjs /usr/local/bin
FROM ruby:2.4.1 ENV PHANTOM_JS="phantomjs-2.1.1-linux-x86_64" RUN apt-get update RUN apt-get install
-y software-properties-common apt-transport-https RUN add-apt-repository "deb https://cli-assets.heroku.com/branches/stable/apt ./" RUN curl -L https://cli-assets.heroku.com/apt/release.key | apt-key add - RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list RUN curl -sL https://deb.nodesource.com/setup_6.x | bash - RUN apt-get update && \ apt-get upgrade -y RUN apt-get install -y build-essential chrpath libssl-dev libxft-dev \ libfreetype6 libfreetype6-dev libfontconfig1 libfontconfig1-dev qt5-default \ libqt5webkit5-dev gstreamer1.0-plugins-base gstreamer1.0-tools \ gstreamer1.0-x imagemagick cmake yarn nodejs RUN apt-get install heroku RUN gem install dpl RUN curl -L -O https://bitbucket.org/ariya/phantomjs/downloads/$PHANTOM_JS.tar.bz2 RUN tar xvjf $PHANTOM_JS.tar.bz2 && \ mv $PHANTOM_JS /usr/local/share && \ ln -sf /usr/local/share/$PHANTOM_JS/bin/phantomjs /usr/local/bin
FROM ruby:2.4.1 ENV PHANTOM_JS="phantomjs-2.1.1-linux-x86_64" RUN apt-get update RUN apt-get install
-y software-properties-common apt-transport-https RUN add-apt-repository "deb https://cli-assets.heroku.com/branches/stable/apt ./" RUN curl -L https://cli-assets.heroku.com/apt/release.key | apt-key add - RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list RUN curl -sL https://deb.nodesource.com/setup_6.x | bash - RUN apt-get update && \ apt-get upgrade -y RUN apt-get install -y build-essential chrpath libssl-dev libxft-dev \ libfreetype6 libfreetype6-dev libfontconfig1 libfontconfig1-dev qt5-default \ libqt5webkit5-dev gstreamer1.0-plugins-base gstreamer1.0-tools \ gstreamer1.0-x imagemagick cmake yarn nodejs RUN apt-get install heroku RUN gem install dpl RUN curl -L -O https://bitbucket.org/ariya/phantomjs/downloads/$PHANTOM_JS.tar.bz2 RUN tar xvjf $PHANTOM_JS.tar.bz2 && \ mv $PHANTOM_JS /usr/local/share && \ ln -sf /usr/local/share/$PHANTOM_JS/bin/phantomjs /usr/local/bin
None
.gitlab-ci.yml
image: registry.michelada.io/demos/sgnext/image services: - postgres stages: - test - review
- staging - production variables: DISABLE_SPRING: 'true' before_script: - gem install bundler --no-ri --no-rdoc - rm -rf vendor/ruby/2.4.0/cache/bundler/git || true - ruby -v cache: paths: - vendor/ruby - node_modules build: stage: test script: - bundle install -j $(nproc) --path vendor --full-index --clean - bin/yarn - cp config/database.ci.yml config/database.yml - bundle exec rails db:create RAILS_ENV=test - bundle exec rails db:test:prepare RAILS_ENV=test - bundle exec rails test - bundle exec rails test:system deploy_review: stage: review script: - gem install dpl - heroku apps:fork --from $HEROKU_STAGING_APP --to $CI_ENVIRONMENT_SLUG || true - dpl --provider=heroku --app=$CI_ENVIRONMENT_SLUG --api-key=$HEROKU_API_KEY - heroku run rake db:migrate --app=$CI_ENVIRONMENT_SLUG environment: name: review/$CI_BUILD_REF_NAME url: https://$CI_ENVIRONMENT_SLUG.herokuapp.com only: - branches except: - master staging: stage: staging environment: staging script: - gem install dpl - dpl --provider=heroku --app=$HEROKU_STAGING_APP --api-key=$HEROKU_API_KEY - heroku run rake db:migrate --app=$HEROKU_STAGING_APP only: - master production: stage: production environment: production script: - gem install dpl - dpl --provider=heroku --app=$HEROKU_PROD_APP --api-key=$HEROKU_API_KEY - heroku run rake db:migrate --app=$HEROKU_PROD_APP only: - master when: manual
image: registry.michelada.io/demos/sgnext/image services: - postgres stages: - test - review
- staging - production variables: DISABLE_SPRING: 'true' before_script: - gem install bundler --no-ri --no-rdoc - rm -rf vendor/ruby/2.4.0/cache/bundler/git || true - ruby -v cache: paths: - vendor/ruby - node_modules build: stage: test script:
image: registry.michelada.io/demos/sgnext/image services: - postgres stages: - test - review
- staging - production variables: DISABLE_SPRING: 'true' before_script: - gem install bundler --no-ri --no-rdoc - rm -rf vendor/ruby/2.4.0/cache/bundler/git || true - ruby -v cache: paths: - vendor/ruby - node_modules build: stage: test script:
image: registry.michelada.io/demos/sgnext/image services: - postgres stages: - test - review
- staging - production variables: DISABLE_SPRING: 'true' before_script: - gem install bundler --no-ri --no-rdoc - rm -rf vendor/ruby/2.4.0/cache/bundler/git || true - ruby -v cache: paths: - vendor/ruby - node_modules build: stage: test script:
image: registry.michelada.io/demos/sgnext/image services: - postgres stages: - test - review
- staging - production variables: DISABLE_SPRING: 'true' before_script: - gem install bundler --no-ri --no-rdoc - rm -rf vendor/ruby/2.4.0/cache/bundler/git || true - ruby -v cache: paths: - vendor/ruby - node_modules build: stage: test script:
- gem install bundler --no-ri --no-rdoc - rm -rf vendor/ruby/2.4.0/cache/bundler/git
|| true - ruby -v cache: paths: - vendor/ruby - node_modules build: stage: test script: - bundle install -j $(nproc) --path vendor --full-index --clean - bin/yarn - cp config/database.ci.yml config/database.yml - bundle exec rails db:create RAILS_ENV=test - bundle exec rails db:test:prepare RAILS_ENV=test - bundle exec rails test - bundle exec rails test:system deploy_review: stage: review script: - gem install dpl - heroku apps:fork --from $HEROKU_STAGING_APP --to $CI_ENVIRONMENT_SLUG || true - dpl --provider=heroku --app=$CI_ENVIRONMENT_SLUG --api-key=$HEROKU_API_KEY - heroku run rake db:migrate --app=$CI_ENVIRONMENT_SLUG environment: name: review/$CI_BUILD_REF_NAME url: https://$CI_ENVIRONMENT_SLUG.herokuapp.com
- gem install bundler --no-ri --no-rdoc - rm -rf vendor/ruby/2.4.0/cache/bundler/git
|| true - ruby -v cache: paths: - vendor/ruby - node_modules build: stage: test script: - bundle install -j $(nproc) --path vendor --full-index --clean - bin/yarn - cp config/database.ci.yml config/database.yml - bundle exec rails db:create RAILS_ENV=test - bundle exec rails db:test:prepare RAILS_ENV=test - bundle exec rails test - bundle exec rails test:system deploy_review: stage: review script: - gem install dpl - heroku apps:fork --from $HEROKU_STAGING_APP --to $CI_ENVIRONMENT_SLUG || true - dpl --provider=heroku --app=$CI_ENVIRONMENT_SLUG --api-key=$HEROKU_API_KEY - heroku run rake db:migrate --app=$CI_ENVIRONMENT_SLUG environment: name: review/$CI_BUILD_REF_NAME url: https://$CI_ENVIRONMENT_SLUG.herokuapp.com
staging: stage: staging environment: staging script: - gem install dpl
- dpl --provider=heroku --app=$HEROKU_STAGING_APP --api-key=$HEROKU_API_KEY - heroku run rake db:migrate --app=$HEROKU_STAGING_APP only: - master production: stage: production environment: production script: - gem install dpl - dpl --provider=heroku --app=$HEROKU_PROD_APP --api-key=$HEROKU_API_KEY - heroku run rake db:migrate --app=$HEROKU_PROD_APP only: - master when: manual rubocop: stage: test script: - bundle install -j $(nproc) --path vendor - bundle exec rubocop
staging: stage: staging environment: staging script: - gem install dpl
- dpl --provider=heroku --app=$HEROKU_STAGING_APP --api-key=$HEROKU_API_KEY - heroku run rake db:migrate --app=$HEROKU_STAGING_APP only: - master production: stage: production environment: production script: - gem install dpl - dpl --provider=heroku --app=$HEROKU_PROD_APP --api-key=$HEROKU_API_KEY - heroku run rake db:migrate --app=$HEROKU_PROD_APP only: - master when: manual rubocop: stage: test script: - bundle install -j $(nproc) --path vendor - bundle exec rubocop
Agnóstico
- gem install bundler --no-ri --no-rdoc - rm -rf vendor/ruby/2.4.0/cache/bundler/git
|| true - ruby -v cache: paths: - vendor/ruby - node_modules build: stage: test script: - bundle install -j $(nproc) --path vendor --full-index --clean - bin/yarn - cp config/database.ci.yml config/database.yml - bundle exec rails db:create RAILS_ENV=test - bundle exec rails db:test:prepare RAILS_ENV=test - bundle exec rails test - bundle exec rails test:system deploy_review: stage: review script: - gem install dpl - heroku apps:fork --from $HEROKU_STAGING_APP --to $CI_ENVIRONMENT_SLUG || true - dpl --provider=heroku --app=$CI_ENVIRONMENT_SLUG --api-key=$HEROKU_API_KEY - heroku run rake db:migrate --app=$CI_ENVIRONMENT_SLUG environment: name: review/$CI_BUILD_REF_NAME url: https://$CI_ENVIRONMENT_SLUG.herokuapp.com
iOS build_project: stage: build script: - xcodebuild clean -project ProjectName.xcodeproj
-scheme SchemeName | xcpretty - xcodebuild test -project ProjectName.xcodeproj -scheme SchemeName -destination 'platform=iOS Simulator,name=iPhone 6s,OS=9.2' | xcpretty -s
php image: php:5.6 before_script: # Install dependencies - bash ci/docker_install.sh
> /dev/null test:app: script: - phpunit --configuration phpunit_myapp.xml
Instalación
gitlab.com
None
None
None
TATFT
Prueba todo el bendito tiempo
Gracias @dabit