Ενσωμάτωση AppCenter και GitLab

Tryam, γεια!

Θα ήθελα να μιλήσω για την εμπειρία μου στη ρύθμιση της ενοποίησης GitLab και AppCenter μέσω του BitBucket.

Η ανάγκη για μια τέτοια ενσωμάτωση προέκυψε κατά τη ρύθμιση της αυτόματης εκκίνησης δοκιμών διεπαφής χρήστη για ένα έργο cross-platform στο Xamarin. Αναλυτικό tutorial κάτω από το κόψιμο!

* Θα κάνω ένα ξεχωριστό άρθρο σχετικά με την αυτοματοποίηση των δοκιμών διεπαφής χρήστη σε συνθήκες πολλαπλών πλατφορμών, εάν το κοινό ενδιαφέρεται.

Έσκαψα μόνο ένα τέτοιο υλικό ένα άρθρο. Επομένως, το άρθρο μου μπορεί να βοηθήσει κάποιον.

Έργο: Ρυθμίστε την αυτόματη εκκίνηση των δοκιμών διεπαφής χρήστη στο AppCenter, δεδομένου ότι η ομάδα μας χρησιμοποιεί το GitLab ως σύστημα ελέγχου έκδοσης.

πρόβλημα Αποδείχθηκε ότι το AppCenter δεν ενσωματώνεται απευθείας με το GitLab. Ως μία από τις λύσεις επιλέχθηκε η παράκαμψη μέσω BitBucket.

Βήματα

1. Δημιουργήστε ένα κενό αποθετήριο στο BitBucket

Δεν βλέπω την ανάγκη να το περιγράψω με περισσότερες λεπτομέρειες :)

2. Ρύθμιση του GitLab

Χρειαζόμαστε ότι κατά την ώθηση/συγχώνευση στο αποθετήριο, οι αλλαγές μεταφορτώνονται επίσης στο BitBucket. Για να το κάνετε αυτό, προσθέστε ένα runner (ή επεξεργαστείτε το υπάρχον αρχείο .gitlab-ci.yml).

Πρώτα προσθέτουμε εντολές στην ενότητα before_scripts

 - git config --global user.email "user@email"
 - git config --global user.name "username"

Στη συνέχεια προσθέστε την ακόλουθη εντολή στο επιθυμητό στάδιο:

- git push --mirror https://username:[email protected]/username/projectname.git

Στην περίπτωσή μου, αυτό είναι το αρχείο που πήρα:

before_script:
 - git config --global user.email "user@email"
 - git config --global user.name "username"

stages:
  - mirror
mirror:
  stage: mirror
  script:
    - git push --mirror https://****:*****@bitbucket.org/****/testapp.git

Εκκινούμε την κατασκευή, ελέγχουμε ότι οι αλλαγές/αρχεία μας βρίσκονται στο BitBucket.
* Όπως έχει δείξει η πρακτική, η ρύθμιση των κλειδιών SSH είναι προαιρετική. Αλλά, για κάθε περίπτωση, θα παράσχω έναν αλγόριθμο για τη ρύθμιση μιας σύνδεσης μέσω SSH παρακάτω

Σύνδεση μέσω SSH

Πρώτα πρέπει να δημιουργήσετε ένα κλειδί SSH. Πολλά άρθρα έχουν γραφτεί για αυτό. Για παράδειγμα, μπορείτε να κοιτάξετε εδώ.
Τα κλειδιά που δημιουργούνται μοιάζουν κάπως έτσι:
Ενσωμάτωση AppCenter και GitLab

Επόμενο Το μυστικό κλειδί πρέπει να προστεθεί ως μεταβλητή στο GitLab. Για να το κάνετε αυτό, μεταβείτε στις Ρυθμίσεις > CI/CD > Μεταβλητές περιβάλλοντος. Προσθέστε ΟΛΑ τα περιεχόμενα του αρχείου στο οποίο αποθηκεύσατε το μυστικό κλειδί. Ας καλέσουμε τη μεταβλητή SSH_PRIVATE_KEY.
* αυτό το αρχείο, σε αντίθεση με το αρχείο δημόσιου κλειδιού, δεν θα έχει την επέκταση
Ενσωμάτωση AppCenter και GitLab

Ωραία, στη συνέχεια θα πρέπει να προσθέσετε το δημόσιο κλειδί στο BitBucket. Για να το κάνετε αυτό, ανοίξτε το αποθετήριο και μεταβείτε στις Ρυθμίσεις > Κλειδιά πρόσβασης.

Ενσωμάτωση AppCenter και GitLab

Εδώ κάνουμε κλικ στο Προσθήκη κλειδιού και εισάγουμε τα περιεχόμενα του αρχείου με το δημόσιο κλειδί (αρχείο με κατάληξη .pub).

Το επόμενο βήμα είναι να χρησιμοποιήσετε τα κλειδιά στο gitlab-runner. Χρησιμοποιήστε αυτές τις εντολές, αλλά αντικαταστήστε τους αστερίσκους με τα στοιχεία σας

image: timbru31/node-alpine-git:latest

stages:
  - mirror

before_script:
  - eval $(ssh-agent -s)
  - echo "$SSH_PRIVATE_KEY" | tr -d 'r' | ssh-add - > /dev/null
  - mkdir -p ~/.ssh
  - chmod 700 ~/.ssh
  - ssh-keyscan bitbucket.org >> ~/.ssh/known_hosts
  - chmod 644 ~/.ssh/known_hosts
  - git config --global user.email "*****@***"
  - git config --global user.name "****"
  - ssh -T [email protected]

mirror:
  stage: mirror
  script:
    - git push --mirror https://****:****@bitbucket.org/*****/*****.git

3. Ρύθμιση του AppCenter

Δημιουργούμε μια νέα εφαρμογή στο AppCenter.

Ενσωμάτωση AppCenter και GitLab

Καθορίστε τη γλώσσα/πλατφόρμα

Ενσωμάτωση AppCenter και GitLab

Στη συνέχεια, μεταβείτε στην ενότητα Δημιουργία της εφαρμογής που δημιουργήθηκε πρόσφατα. Εκεί επιλέγουμε BitBucket και το αποθετήριο που δημιουργήθηκε στο βήμα 1.

Τέλεια, τώρα πρέπει να διαμορφώσουμε την κατασκευή. Για να το κάνετε αυτό, βρείτε το εικονίδιο με το γρανάζι

Ενσωμάτωση AppCenter και GitLab

Κατ 'αρχήν, όλα εκεί είναι διαισθητικά. Επιλέξτε ένα έργο και διαμόρφωση. Εάν είναι απαραίτητο, ενεργοποιήστε την έναρξη των δοκιμών μετά την κατασκευή. Θα ξεκινήσουν αυτόματα.

Βασικά, αυτό είναι όλο. Ακούγεται απλό, αλλά, φυσικά, δεν θα πάνε όλα ομαλά. Επομένως, θα περιγράψω ορισμένα σφάλματα που αντιμετώπισα κατά την εργασία:

Το 'ssh-keygen' δεν αναγνωρίζεται ως εσωτερική ή εξωτερική εντολή.

Παρουσιάζεται επίσης επειδή η διαδρομή προς το ssh-keygen.exe δεν προστίθεται στις μεταβλητές περιβάλλοντος.
Υπάρχουν δύο επιλογές: προσθήκη C:Program FilesGitusrbin στις μεταβλητές περιβάλλοντος (θα εφαρμοστεί μετά την επανεκκίνηση του μηχανήματος) ή εκκίνηση της κονσόλας από αυτόν τον κατάλογο.

Το AppCenter συνδέθηκε σε λάθος λογαριασμό BitBucket;

Για να λύσετε το πρόβλημα, πρέπει να αποσυνδέσετε τον λογαριασμό σας BitBucket από το AppCenter. Συνδεόμαστε σε λάθος λογαριασμό BitBucket και πηγαίνουμε στο προφίλ χρήστη.

Ενσωμάτωση AppCenter και GitLab

Στη συνέχεια, μεταβείτε στις Ρυθμίσεις > Διαχείριση πρόσβασης > OAuth

Ενσωμάτωση AppCenter και GitLab

Κάντε κλικ στην Ανάκληση για να αποσυνδέσετε τον λογαριασμό σας.

Ενσωμάτωση AppCenter και GitLab

Μετά από αυτό, πρέπει να συνδεθείτε με τον απαιτούμενο λογαριασμό BitBucket.
* Ως έσχατη λύση, διαγράψτε επίσης την προσωρινή μνήμη του προγράμματος περιήγησής σας.

Τώρα ας πάμε στο AppCenter. μεταβείτε στην ενότητα Δημιουργία, κάντε κλικ στην Αποσύνδεση λογαριασμού BitBucket

Ενσωμάτωση AppCenter και GitLab

Όταν ο παλιός λογαριασμός αποσυνδεθεί, συνδέουμε ξανά το AppCenter. Τώρα στον επιθυμητό λογαριασμό.

Το 'eval' δεν αναγνωρίζεται ως εσωτερική ή εξωτερική εντολή

Το χρησιμοποιούμε αντί για εντολή

  - eval $(ssh-agent -s)

Ομάδα:

  - ssh-agent

Σε ορισμένες περιπτώσεις, θα πρέπει είτε να καθορίσετε την πλήρη διαδρομή προς το C:Program FilesGitusrbinssh-agent.exe ή να προσθέσετε αυτήν τη διαδρομή στις μεταβλητές του συστήματος στο μηχάνημα όπου εκτελείται το πρόγραμμα εκτέλεσης

Το AppCenter Build προσπαθεί να ξεκινήσει μια έκδοση για ένα έργο από ένα παλιό αποθετήριο bitBucket

Στην περίπτωσή μου, το πρόβλημα προέκυψε επειδή δούλευα με πολλούς λογαριασμούς. Αποφάσισα να καθαρίσω την προσωρινή μνήμη.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο