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. Πολλά άρθρα έχουν γραφτεί για αυτό. Για παράδειγμα, μπορείτε να κοιτάξετε
Τα κλειδιά που δημιουργούνται μοιάζουν κάπως έτσι:
Επόμενο Το μυστικό κλειδί πρέπει να προστεθεί ως μεταβλητή στο GitLab. Για να το κάνετε αυτό, μεταβείτε στις Ρυθμίσεις > CI/CD > Μεταβλητές περιβάλλοντος. Προσθέστε ΟΛΑ τα περιεχόμενα του αρχείου στο οποίο αποθηκεύσατε το μυστικό κλειδί. Ας καλέσουμε τη μεταβλητή SSH_PRIVATE_KEY.
* αυτό το αρχείο, σε αντίθεση με το αρχείο δημόσιου κλειδιού, δεν θα έχει την επέκταση
Ωραία, στη συνέχεια θα πρέπει να προσθέσετε το δημόσιο κλειδί στο BitBucket. Για να το κάνετε αυτό, ανοίξτε το αποθετήριο και μεταβείτε στις Ρυθμίσεις > Κλειδιά πρόσβασης.
Εδώ κάνουμε κλικ στο Προσθήκη κλειδιού και εισάγουμε τα περιεχόμενα του αρχείου με το δημόσιο κλειδί (αρχείο με κατάληξη .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.
Καθορίστε τη γλώσσα/πλατφόρμα
Στη συνέχεια, μεταβείτε στην ενότητα Δημιουργία της εφαρμογής που δημιουργήθηκε πρόσφατα. Εκεί επιλέγουμε BitBucket και το αποθετήριο που δημιουργήθηκε στο βήμα 1.
Τέλεια, τώρα πρέπει να διαμορφώσουμε την κατασκευή. Για να το κάνετε αυτό, βρείτε το εικονίδιο με το γρανάζι
Κατ 'αρχήν, όλα εκεί είναι διαισθητικά. Επιλέξτε ένα έργο και διαμόρφωση. Εάν είναι απαραίτητο, ενεργοποιήστε την έναρξη των δοκιμών μετά την κατασκευή. Θα ξεκινήσουν αυτόματα.
Βασικά, αυτό είναι όλο. Ακούγεται απλό, αλλά, φυσικά, δεν θα πάνε όλα ομαλά. Επομένως, θα περιγράψω ορισμένα σφάλματα που αντιμετώπισα κατά την εργασία:
Το 'ssh-keygen' δεν αναγνωρίζεται ως εσωτερική ή εξωτερική εντολή.
Παρουσιάζεται επίσης επειδή η διαδρομή προς το ssh-keygen.exe δεν προστίθεται στις μεταβλητές περιβάλλοντος.
Υπάρχουν δύο επιλογές: προσθήκη C:Program FilesGitusrbin στις μεταβλητές περιβάλλοντος (θα εφαρμοστεί μετά την επανεκκίνηση του μηχανήματος) ή εκκίνηση της κονσόλας από αυτόν τον κατάλογο.
Το AppCenter συνδέθηκε σε λάθος λογαριασμό BitBucket;
Για να λύσετε το πρόβλημα, πρέπει να αποσυνδέσετε τον λογαριασμό σας BitBucket από το AppCenter. Συνδεόμαστε σε λάθος λογαριασμό BitBucket και πηγαίνουμε στο προφίλ χρήστη.
Στη συνέχεια, μεταβείτε στις Ρυθμίσεις > Διαχείριση πρόσβασης > OAuth
Κάντε κλικ στην Ανάκληση για να αποσυνδέσετε τον λογαριασμό σας.
Μετά από αυτό, πρέπει να συνδεθείτε με τον απαιτούμενο λογαριασμό BitBucket.
* Ως έσχατη λύση, διαγράψτε επίσης την προσωρινή μνήμη του προγράμματος περιήγησής σας.
Τώρα ας πάμε στο AppCenter. μεταβείτε στην ενότητα Δημιουργία, κάντε κλικ στην Αποσύνδεση λογαριασμού BitBucket
Όταν ο παλιός λογαριασμός αποσυνδεθεί, συνδέουμε ξανά το AppCenter. Τώρα στον επιθυμητό λογαριασμό.
Το 'eval' δεν αναγνωρίζεται ως εσωτερική ή εξωτερική εντολή
Το χρησιμοποιούμε αντί για εντολή
- eval $(ssh-agent -s)
Ομάδα:
- ssh-agent
Σε ορισμένες περιπτώσεις, θα πρέπει είτε να καθορίσετε την πλήρη διαδρομή προς το C:Program FilesGitusrbinssh-agent.exe ή να προσθέσετε αυτήν τη διαδρομή στις μεταβλητές του συστήματος στο μηχάνημα όπου εκτελείται το πρόγραμμα εκτέλεσης
Το AppCenter Build προσπαθεί να ξεκινήσει μια έκδοση για ένα έργο από ένα παλιό αποθετήριο bitBucket
Στην περίπτωσή μου, το πρόβλημα προέκυψε επειδή δούλευα με πολλούς λογαριασμούς. Αποφάσισα να καθαρίσω την προσωρινή μνήμη.
Πηγή: www.habr.com