Jak wykorzystać Gitlab CI/CD do wdrożenia projektu meteor?

Jak twierdzi ich strona Gitlab może być używany do automatycznego wdrażania projektów po wepchnięciu kodu do repozytorium, ale nie jestem w stanie dowiedzieć się, jak. Istnieje wiele samouczków ruby, ale żadnych dla meteor lub node.

W zasadzie muszę tylko przebudować kontener Dockera na moim serwerze, po tym jak kod zostanie wepchnięty do mojej gałęzi master. Czy ktoś wie jak to osiągnąć? Jestem zupełnie nowy w ... gitlab-ci.YML rzeczy i doceniam pomoc dość dużo.

Author: user1255102, 2016-03-30

1 answers

krótko: używam aplikacji Meteor 1.3.2, hostowanej na Digital Ocean (Ubuntu 14.04) od 4 miesięcy. Korzystam z Gitlab V. 8.3.4 działającego na tej samej cyfrowej kropli Oceanu co aplikacja Meteor. Jest to kropla procesora 2 GB / 2 ($20 miesięcznie). Korzystanie z wbudowanego Gitlab CI dla CI / CD. Ta konfiguracja działa pomyślnie do tej pory. (Obecnie nie używamy Dockera, jednak nie powinno to mieć znaczenia.)

Nasza strategia CI / CD:

  1. sprawdzamy Master branch na nasz lokalny laptop. Oddział zawiera cały projekt Meteor, jak pokazano poniżej:

Tutaj wpisz opis obrazka

Używamy narzędzia git CLI w systemie Windows, aby połączyć się z naszym serwerem Gitlab. (do ciągnięcia, pchania itp. podobne regularne działania git)

  1. Otwórz wybrany projekt w edytorze Atom. Zintegrowaliśmy również Atom z Gitlab. To pomaga w szybkim git status/pull / push itp. w samym edytorze Atom. Wykonuj regularne prace meteorytowe. naprawiać błędy itp.

  2. Post testujemy na lokalnym laptopie, następnie wykonujemy git push & commit NA master. To uruchamia automatyczne budowanie przy użyciu Gitlab CI, a wyniki (w tym dzienniki budowania) można zobaczyć w samym Gitlab, jak pokazano poniżej:

Tutaj wpisz opis obrazka

Poniższy obrazek pokazuje wszystkie poprzednie dzienniki budowy:

Tutaj wpisz opis obrazka

Wykonaj poniższe kroki:

  1. Zainstaluj meteor na kropli DO.

  2. Zainstaluj Gitlab na DO (używając 1-click deploy if możliwe) lub montaż ręczny. Upewnij się, że instalujesz Gitlab w wersji 8.3.4 lub nowszej. Zrobiłem jedno kliknięcie wdrożyć na mojej kropli. Uruchom serwer gitlab i zaloguj się do gitlab z przeglądarki. Otwórz swój projekt i przejdź do Ustawienia projektu - > biegacze z lewego menu

Tutaj wpisz opis obrazka

  1. SSH do serwera DO & skonfiguruj nową usługę upstart na kropli jako root:

    vi /etc/init/meteor-service.conf
    

Próbka plik:

#upstart service file at /etc/init/meteor-service.conf
description "Meteor.js (NodeJS) application for eaxmple.com:3000"
author "[email protected]"

# When to start the service
start on runlevel [2345]

# When to stop the service
stop on shutdown

# Automatically restart process if crashed
respawn
respawn limit 10 5

script
    export PORT=3000
    # this allows Meteor to figure out correct IP address of visitors
    export HTTP_FORWARDED_COUNT=1
    export MONGO_URL=mongodb://xxxxxx:[email protected]:59672/meteor-db
    export ROOT_URL=http://<droplet_ip>:3000
    exec /home/gitlab-runner/.meteor/packages/meteor-tool/1.1.10/mt-os.linux.x86_64/dev_bundle/bin/node /home/gitlab-runner/erecaho-build/server-alpha-running/bundle/main.js >> /home/gitlab-runner/erecaho-build/server-alpha-running/meteor.log
end script
  1. Zainstaluj gitlab-ci-multi-runner stąd: https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/blob/master/docs/install/linux-repository.md zgodnie z instrukcją Cheatsheet:

    curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.deb.sh | sudo bash
    sudo apt-get install gitlab-ci-multi-runner
    sudo gitlab-ci-multi-runner register
    

    Wprowadź szczegóły z kroku 2

  2. Teraz nowy biegacz powinien być zielony lub aktywować biegacza w razie potrzeby

  3. Utwórz .gitlab-ci.yml w katalogu projektu meteor

    Próbka plik:

    before_script:
      - echo "======================================"
      - echo "==== START auto full script v0.1 ====="
      - echo "======================================"
    
    types:
      - cleanup
      - build
      - test
      - deploy
    
    job_cleanup:
      type: cleanup
      script:
      - cd /home/gitlab-runner/erecaho-build
      - echo "cleaning up existing bundle folder"
      - echo "cleaning up current server-running folder"
      - rm -fr ./server-alpha-running
      - mkdir ./server-alpha-running
      only:
      - master
      tags:
      - master
    
    job_build:
      type: build
      script:
      - pwd
      - meteor build /home/gitlab-runner/erecaho-build/server-alpha-running --directory --server=http://example.org:3000 --verbose
      only:
      - master
      tags:
      - master
    
    job_test:
      type: test
      script:
      - echo "testing ----"
      - cd /home/gitlab-runner/erecaho-build/server-alpha-running/bundle
      - ls -la main.js
      only:
      - master
      tags:
      - master
    
    job_deploy:
      type: deploy
      script:
      - echo "deploying ----"
      - cd /home/gitlab-runner/erecaho-build/server-alpha-running/bundle/programs/server/ && /home/gitlab-runner/.meteor/packages/meteor-tool/1.1.10/mt-os.linux.x86_64/dev_bundle/bin/npm install
      - cd ../..
      - sudo restart meteor-service
      - sudo status meteor-service
      only:
      - master
      tags:
      - master
    
  4. Sprawdź powyższy plik w gitlab. Powinno to uruchomić Gitlab CI i po zakończeniu procesu budowania, nowa aplikacja będzie dostępna pod adresem example. net:3000

Uwaga : aplikacja nie będzie dostępna po zameldowaniu .gitlab-ci.yml po raz pierwszy, ponieważ restart meteor-service spowoduje, że usługa nie zostanie znaleziona. Ręcznie uruchom sudo start meteor-service raz na konsoli DO SSH. Post this wszelkie nowe check - in do gitlab master uruchomi auto CI / CD i nowa wersja aplikacji będą dostępne na przykład. com: 3000 po pomyślnym zakończeniu kompilacji.

P. S.: gitlab ci yaml docs można znaleźć na http://doc.gitlab.com/ee/ci/yaml/README.html aby dostosować i zrozumieć przykładowy plik yaml powyżej. Aby dowiedzieć się więcej o Docker specific runner, zobacz https://gitlab.com/gitlab-org/gitlab-ci-multi-runner

 25
Author: roray,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-12 13:34:58