2015-06-13 11 views
12

Czy istnieje sposób ograniczenia wdrażania circleci w przypadku sprawdzeń, które mają konkretny tag git?Circleci: jak wdrożyć w zależności od tagu git

Obecnie używam tego

... 
deployment: 
    dockerhub: 
    branch: master 
    commands: 
     - docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS 
     - docker push abcdef 

Zamiast branch: master Chciałbym napisać coś jak tag: /release_.*/

Tło: Chciałbym, aby ustawić znaczniki Döcker zależności tagów git. Tak więc, na przykład, gdy coś jest zobowiązane do opanowania, nowe obrazy w doku z tagiem latest zostaną utworzone i pchnięte. Za każdym razem, gdy zostanie ustawiony specjalny znacznik git (na przykład release_1.0_2015-06-13), zostanie utworzony i przesłany nowy obraz dokowanego ze znacznikiem 1.0.

Alternatywą jest używanie tylko różnych gałęzi zgodnie z różnymi znacznikami. Ale chciałbym użyć znaczników do oznaczenia konkretnego wydania.

Odpowiedz

16

It looks like this was added od Kim odpowiedział.

Normalnie naciśnięcie znacznika nie spowoduje uruchomienia kompilacji. Jeśli istnieje konfiguracja wdrożenia z właściwością tag, która pasuje do nazwy utworzonego znacznika, uruchomimy pasującą do niego sekcję kompilacji i instalacji.

W poniższym przykładzie naciśnięcie znacznika o nazwie release-v1.05 spowoduje wyzwolenie wdrożenia wersji &. Przesunięcie tagu qa-9502 nie uruchomiłoby kompilacji.

deployment: 
    release: 
    tag: /release-.*/ 
    owner: circleci 
    commands: 
     - ./deploy_master.sh 
+0

Czy istnieje sposób, aby uzyskać nazwę znacznika w kompilacji? Dla środowiska CIRCLE_BRANCH jest zmienne środowiskowe, ale nie widziałem jednego dla CIRCLE_TAG – sthomps

+3

Zamiast CIRCLE_BRANCH istnieje CIRCLE_TAG, jeśli kompilacja zostanie wywołana przez naciśnięcie nowego znacznika. – stmllr

+1

To nie wydaje się działać w sekcji "wdrożenie".Mam sekcję 's3_location' z' key_pattern: builds/{TAG} - {BUILD_NUM} .zip' i 'key_pattern: builds/{CIRCLE_TAG} - {BUILD_NUM} .zip'. Żadne z nich nie wypełni {tag} – sthomps

4

To jest Kim z CircleCI.

Aby zarchiwizować, co chcesz zrobić, myślę, że musisz być w stanie uruchomić kompilację, gdy nowy znacznik zostanie wysłany do Github. Jednak tylko nowe zatwierdzenie uruchomi kompilację, więc wydaje się, że nie jest to możliwe od teraz. Przepraszam!

UPDATE: Funkcja ta została obecnie realizowane: https://circleci.com/docs/configuration/#tags

+0

Czy to jest regresja? Oparte na tagach kompilacje były wyraźnie wspierane w niedawnej przeszłości, a użytkownicy dzielili się swoimi doświadczeniami. – Tom

+0

Funkcja została dodana po tym, jak Kim udzielił tej odpowiedzi. @ Odpowiedź Dean'a łączy się z odpowiednim zasobem. – keybits

3

Kładę to tutaj dla osób, które nastąpiły po documentation ale nie dostał tę pracę. CircleCI wydaje się ignorować znaczniki w ogóle, jeśli masz konfigurację branchonly w ustawieniach ogólnych. Tagged commit wyświetli się w ten sposób jako "Not run".

Aby zbudować tylko na konkretnych oddziałów i rozmieścić na określonym znacznikiem, należy wybrać opcję branch i ignore wraz z ujemnym uprzedzona regex:

# circle.yml 
general: 
    branches: 
    ignore: 
     - /^(?!master).*$/ 
deployment: 
    beta: 
    tag: /v[0-9]+(\.[0-9]+)*(-.*)*/ 
    owner: mediafreakch 
    commands: 
     - deploy.sh 

To zbuduje każdy zobowiązać się do master i wdrażać jeśli jest to oznaczone popełnić. Aby oznaczyć commit, używam npm version.

+0

Co jest warte, jeśli aktualnie używasz wersji beta bitbucket, to nie wygląda na to, że tagi działają w każdych okolicznościach. Próbowałem tego samego podejścia tutaj, ale w bitbucket, a Circle nie wykonuje żadnych poleceń wdrażania. – Jack

+0

@Jack Jak nazywasz swoje tagi? Czy robisz znaczniki z adnotacjami za pomocą flagi 'git tag -a' (tak właśnie robi' npm version')? – mediafreakch

+0

Nie, przy użyciu flag bez adnotacji. Czy wpływa to na wartość $ CIRCLE_TAG, czy nie? Podam tag z adnotacjami i zobaczę, czy to ma znaczenie, a następnie zgłoś się tutaj. Dobry telefon @mediafreakch – Jack

Powiązane problemy