"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > PostgreSQL के साथ GitHub क्रियाओं पर आपके गो एप्लिकेशन के लिए निर्बाध एकीकरण परीक्षण

PostgreSQL के साथ GitHub क्रियाओं पर आपके गो एप्लिकेशन के लिए निर्बाध एकीकरण परीक्षण

2024-11-26 को प्रकाशित
ब्राउज़ करें:684

Seamless Integration Testing for Your Go Application on GitHub Actions with PostgreSQL

परिचय

यह सुनिश्चित करने के लिए एकीकरण परीक्षण महत्वपूर्ण है कि आपका गो एप्लिकेशन डेटाबेस जैसी बाहरी निर्भरता के साथ त्रुटिहीन रूप से काम करता है। इस ब्लॉग में, हम GitHub Actions का उपयोग करके गो एप्लिकेशन के लिए एकीकरण परीक्षण कैसे सेट अप करें और चलाएं, इसका पता लगाएंगे। हम CI पाइपलाइन के भीतर एक PostgreSQL डेटाबेस को कॉन्फ़िगर करेंगे, परीक्षण प्रक्रिया को सुव्यवस्थित करेंगे, और सुनिश्चित करेंगे कि आपका कोडबेस हर पुश के साथ विश्वसनीय और उत्पादन के लिए तैयार हो। आइए गोता लगाएँ!

हमने यहां पिछले लेख में यूनिट परीक्षण और एकीकरण बनाया था! इस लेख में हम इन परीक्षणों को अपने जीथब रिपॉजिटरी के सभी कमिट्स पर चलाना चाहते हैं।

जीथब क्रियाएँ

वे एक सतत एकीकरण और निरंतर वितरण (सीआई/सीडी) प्लेटफॉर्म हैं जो आपको अपने निर्माण, परीक्षण और तैनाती पाइपलाइन को स्वचालित करने की अनुमति देता है।
जब आपके रिपॉजिटरी में अन्य घटनाएँ घटित होती हैं तो Github Actions आपको वर्कफ़्लो चलाने की सुविधा देता है

जीथब वर्कफ़्लोज़

वर्कफ़्लो एक कॉन्फ़िगर करने योग्य स्वचालित प्रक्रिया है जो एक या अधिक कार्य चलाएगी। वर्कफ़्लो को आपके रिपॉजिटरी में चेक की गई YAML फ़ाइल द्वारा परिभाषित किया जाता है और यह आपके रिपॉजिटरी में किसी ईवेंट द्वारा ट्रिगर होने पर चलेगा। वर्कफ़्लोज़ को .github/workfows में परिभाषित किया गया है।

  • इवेंट रिपॉजिटरी में एक विशिष्ट गतिविधि है जो वर्कफ़्लो रन को ट्रिगर करती है। हमारे मामले में यह हमारी शाखा के लिए एक धक्का होगा।
  • Jobs वर्कफ़्लो में चरणों का एक सेट है जिसे एक ही रनर पर निष्पादित किया जाता है।
  • Runners एक सर्वर है जो ट्रिगर होने पर आपके वर्कफ़्लो को चलाता है। प्रत्येक धावक एक समय में एक ही कार्य कर सकता है।

वर्कफ़्लो Yaml

  • पहला कदम .github/workflows फ़ोल्डर बनाना होगा जहां हमारी yaml फ़ाइल स्थित होगी।
  • अगला yaml फ़ाइल बनाना है, इस मामले में हम इसे ci-test.yml नाम देंगे।
name: ci-test

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

env:
  POSTGRES_USER: postgres
  POSTGRES_PASSWORD: Password123
  POSTGRES_DB: crud_db

jobs:
  build:
    name: tests
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres
        env:
          POSTGRES_USER: ${{ env.POSTGRES_USER }}
          POSTGRES_PASSWORD: ${{ env.POSTGRES_PASSWORD }}
          POSTGRES_DB: ${{ env.POSTGRES_DB }}
        ports:
          - 5432:5432
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5

    steps:
      - uses: actions/checkout@v4

      - name: Set up Go
        uses: actions/setup-go@v4
        with:
          go-version: "1.22"

      - name: Install dbmate for golang migrations
        run: |
          sudo curl -fsSL -o /usr/local/bin/dbmate https://github.com/amacneil/dbmate/releases/latest/download/dbmate-linux-amd64
          sudo chmod  x /usr/local/bin/dbmate
          which dbmate

      - name: Construct DB URL
        id: construct_url
        run: echo "DB_URL=postgres://${{ env.POSTGRES_USER }}:${{ env.POSTGRES_PASSWORD }}@localhost:5432/${{ env.POSTGRES_DB }}?sslmode=disable" >> $GITHUB_ENV

      - run: env

      - name: Make Migrations
        run: make migrations URL=${{ env.DB_URL }}

      - name: Seed test DB
        run: go run db/seed.go

      - name: Test
        run: make test

यमल विवरण

  • पहला भाग इस मामले में कार्रवाई का नाम देना है, यह ci-test है।

वर्कफ़्लो ट्रिगर

  • दूसरा खंड ट्रिगर का वर्णन करता है। घटनाएँ जो कार्रवाई को गति प्रदान करती हैं. इस फ़ाइल में हमारे पास दो इवेंट हैं जो इस जॉब को चलाने को ट्रिगर करेंगे, पुश और पुल रिक्वेस्ट जो मुख्य शाखाओं को लक्षित करते हैं। यह सुनिश्चित करता है कि परियोजना की अखंडता को बनाए रखते हुए, उत्पादन के लिए इच्छित प्रत्येक कोड परिवर्तन का विलय से पहले परीक्षण किया जाता है।

पर्यावरण चर

जीथब वर्कफ़्लो वैश्विक और नौकरी-विशिष्ट पर्यावरण चर का समर्थन करता है। यह वेरिएबल पोस्टग्रेज़ क्रेडेंशियल्स का वर्णन करते हैं जिन्हें हम बाद में अपनी yaml फ़ाइल में उपयोग करेंगे।

काम

jobs:
  build:
    name: tests
    runs-on: ubuntu-latest

यहां हमने उस कार्य को एक नाम दिया है जो मुख्य कार्य करेगा, जो हमारे कोड का निर्माण और परीक्षण कर रहे हैं।
रनर - वर्णन करता है कि वर्कफ़्लो कहाँ चलेगा जो एक उबंटू वर्चुअल मशीन होगी।

सेवाएं

जीथब एक्शन वर्कफ़्लो आपको सेवाओं को परिभाषित करने की अनुमति देता है। इस मामले में हमें अपने परीक्षण चलाने के लिए एक पोस्टग्रेज डेटाबेस की आवश्यकता है।

  • एक PostgreSQL कंटेनर आधिकारिक PostgreSQL डॉकर छवि का उपयोग करके बनाया गया है।
  • कंटेनर को हमारे द्वारा पहले घोषित पर्यावरण चर के साथ कॉन्फ़िगर किया गया है

वर्कफ़्लो चरण

  • पहला कदम रिपॉजिटरी कोड को चेकआउट करना है
- uses: actions/checkout@v4

यह लाइन रिपॉजिटरी का नवीनतम संस्करण लाती है, जो सभी स्रोत फ़ाइलों तक पहुंच प्रदान करती है।

  • दूसरा चरण रनर में गोलांग स्थापित करना है।
- name: Set up Go
  uses: actions/setup-go@v4
  with:
    go-version: "1.22"
  • तीसरा चरण हमारे रनर पर dbmate स्थापित करना है। Dbmate एक माइग्रेशन टूल है जो एप्लिकेशन माइग्रेशन का प्रबंधन करेगा।
- name: Install dbmate for golang migrations
  run: |
    sudo curl -fsSL -o /usr/local/bin/dbmate https://github.com/amacneil/dbmate/releases/latest/download/dbmate-linux-amd64
    sudo chmod  x /usr/local/bin/dbmate
    which dbmate

  • चौथा डीबी यूआरएल का निर्माण करना है
- name: Construct DB URL
  id: construct_url
  run: echo "DB_URL=postgres://${{ env.POSTGRES_USER }}:${{ env.POSTGRES_PASSWORD }}@localhost:5432/${{ env.POSTGRES_DB }}?sslmode=disable" >> $GITHUB_ENV

  • पांचवां हमारे संबंधों को स्थापित करने के लिए रननिग डीबी माइग्रेशन है जो तारीख के साथ शुरू होगा
- name: Make Migrations
  run: make migrations URL=${{ env.DB_URL }}
  • दूसरी अंतिम क्रिया डेटाबेस को परीक्षण डेटा के साथ जोड़ना है।
- name: Seed test DB
  run: go run db/seed.go

Seed.go फ़ाइल परीक्षण डेटा के साथ डेटा को बीजित करती है। एक यथार्थवादी परीक्षण वातावरण स्थापित करना। इस फ़ाइल का और अधिक निरीक्षण करने के लिए, यहां जाएं

अंतिम चरण मेक फ़ाइल का उपयोग करके हमारे गो परीक्षण को निष्पादित करना है

- name: Test
  run: make test

यह वर्कफ़्लो अब हर बार चलेगा जब हम अपनी मुख्य शाखा में पुल अनुरोध या पुश कोड करेंगे

जीथब एक्शन अपनाने के कुछ फायदे।

जैसा कि हमने देखा है कि जीथब एक्शन आपको ऐसा करने की अनुमति देता है

  1. स्वचालित परीक्षण - प्रत्येक कोड परिवर्तन पर लगातार परीक्षण चलाएं।
  2. डेटाबेस एकीकरण रखें - परीक्षण, उत्पादन स्थितियों का अनुकरण करने के लिए एक वास्तविक पोस्टग्रेज वातावरण प्रदान करें
  3. पुनरुत्पादित पर्यावरण - जीथब एक्शन सभी रनों में लगातार परिणाम सुनिश्चित करने के लिए कंटेनरीकृत सेवाओं और पूर्वनिर्धारित चरणों का उपयोग करता है।
  4. फास्ट फीडबैक लूप - यदि कुछ टूटता है तो वे डेवलपर्स को त्वरित फीडबैक प्राप्त करने में सक्षम बनाते हैं, जिससे समस्या का तेजी से समाधान संभव हो पाता है।
  5. सरलीकृत सहयोग - वे सुनिश्चित करते हैं कि सभी योगदानकर्ताओं के परिवर्तन उभरने से पहले सत्यापित हों, कोड गुणवत्ता और परियोजना स्थिरता बनाए रखें

निष्कर्ष

गिटहब क्रियाओं का लाभ उठाकर, यह वर्कफ़्लो परीक्षण और डेटाबेस सेटअप को सुव्यवस्थित करता है, जिससे मजबूत और विश्वसनीय सॉफ़्टवेयर विकास सुनिश्चित होता है।
ऊपर वर्णित क्रिया के साथ परीक्षण किए जा रहे कोड को देखने के लिए जीथब रिपॉजिटरी पर जाएं।

विज्ञप्ति वक्तव्य इस लेख को इस पर पुन: प्रस्तुत किया गया है: https://dev.to/sha254/seamless-integration-testing-for-your-go-go-go-github-github-actions-with-postgresql-5dne?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए अध्ययन करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3