Python: Implementeren met GitHub Actions

Hoe u uw Python-code implementeert met GitHub Actions

👋 Welkom bij de Stackhero-documentatie!

Stackhero biedt een kant-en-klare Python cloud oplossing die tal van voordelen biedt, waaronder:

  • Implementeer uw applicatie in seconden met een eenvoudige git push.
  • Gebruik uw eigen domeinnaam en profiteer van de automatische configuratie van HTTPS-certificaten voor verbeterde beveiliging.
  • Geniet van gemoedsrust met automatische back-ups, updates met één klik, en eenvoudige, transparante en voorspelbare prijzen.
  • Krijg optimale prestaties en robuuste beveiliging dankzij een privé en dedicated VM.

Bespaar tijd en vereenvoudig uw leven: het kost slechts 5 minuten om de Python cloud hosting oplossing van Stackhero te proberen!

GitHub Actions stelt u in staat om taken te automatiseren, zoals het implementeren van uw Python-code naar productie-servers.

In deze gids leert u hoe u GitHub Actions veilig en betrouwbaar kunt gebruiken om uw Python-code naar zowel staging- als productieomgevingen te implementeren.

Om dit te bereiken, onderhoudt u twee branches: staging en production. Code die naar deze branches wordt gepusht, wordt automatisch geïmplementeerd naar de overeenkomstige Stackhero-instantie.

Het hebben van een staging-instantie is niet verplicht. U kunt deze gids volgen en slechts één productie-instantie hebben. Echter, om soepele implementaties te garanderen en volledig vertrouwen te hebben bij het implementeren naar productie, wordt sterk aanbevolen om zowel een staging- als een productie-instantie te onderhouden. Deze praktijk is een industriestandaard en een verstandige benadering die u kan helpen om tal van problemen te vermijden.

Voordat u begint, zorg ervoor dat u een GitHub-account heeft met een repository die uw code host.

Bezoek uw Stackhero-dashboard en maak twee Stackhero-services, één voor staging en één voor productie. Voor de duidelijkheid kunt u overwegen deze services te hernoemen naar "Production" en "Staging".

Heeft u nog geen Stackhero-account? U kunt zich in slechts twee minuten gratis aanmelden en vervolgens uw Python-cloudservices met slechts een paar klikken maken.

Voorbeeld van productie- en stagingservicesVoorbeeld van productie- en stagingservices

SSH-sleutels stellen GitHub Actions in staat om veilig verbinding te maken met uw Python-service voor code-implementatie. Deze stap is essentieel voor het beschermen van uw Stackhero-services.

Genereer op uw computer nieuwe SSH-sleutels door het volgende uit te voeren:

ssh-keygen -C "" -f /tmp/ssh_key -N ""

Haal eerst de openbare sleutel op die u zojuist hebt gegenereerd:

cat /tmp/ssh_key.pub

Selecteer vervolgens in het Stackhero-dashboard uw "production" Python-service en klik op de knop "Configure".

Service-instellingen ophalenService-instellingen ophalen

Volg deze stappen:

  1. Klik in SSH public keys op Add a public key.
  2. Voer in Description in GitHub Action.
  3. Plak in Key de openbare sleutel die u van uw computer hebt gekopieerd.

Openbare sleutel toevoegenOpenbare sleutel toevoegen

Navigeer naar uw GitHub-projectpagina en klik op Settings, vervolgens op Environments. Selecteer New environment.

GitHub-omgevingen configurerenGitHub-omgevingen configureren

Typ in het veld Name "production" en bevestig.

De omgeving instellenDe omgeving instellen

Klik op de knop No restriction en kies Selected branches and tags.

Omgevingsbeperkingen instellenOmgevingsbeperkingen instellen

Klik vervolgens op Add deployment branch or tag rule, voer "production" in het veld Name pattern in en klik op Add rule.

Omgevingsbranch instellenOmgevingsbranch instellen Omgevingsbranch instellenOmgevingsbranch instellen

Klik in de sectie Environment secrets op Add secret.

Secret toevoegenSecret toevoegen

Haal nu de privésleutel op die u eerder hebt gegenereerd:

cat /tmp/ssh_key

Gebruik in de secret-instelling STACKHERO_SSH_PRIVATE_KEY als de Naam en plak de privésleutel als de Waarde.

De SSH-privesleutel secret instellenDe SSH-privesleutel secret instellen

Klik vervolgens in de sectie Environment variables op Add variable.

Variabelen instellenVariabelen instellen

Voer STACKHERO_ENDPOINT in als de Naam en plak uw Python-service endpoint als de Waarde. U kunt dit endpoint vinden in uw Stackhero-dashboard.

De endpointvariabele instellenDe endpointvariabele instellen

Als u de domeinnaam van uw service hebt aangepast, gebruik dan de aangepaste versie in plaats van xxxxxx.stackhero-network.com.

Verwijder om veiligheidsredenen de SSH-sleutels van uw computer omdat u ze niet meer nodig zult hebben:

rm /tmp/ssh_key /tmp/ssh_key.pub

Maak in uw Git-repository een directory genaamd .github/workflows als deze nog niet bestaat. Maak vervolgens een bestand genaamd deploy-to-stackhero.yml in die directory.

# Bestand: .github/workflows/deploy-to-stackhero.yml

name: Deploy to Stackhero
run-name: Deploy branch "${{ github.ref_name }}" to Stackhero

on:
  push:
    # Lijst van branches die de implementatieactie zullen activeren na een git push.
    # Vergeet niet om een omgeving te maken die overeenkomt met de branchnaam in GitHub (in "Settings"/"Environments").
    # Voeg vervolgens de overeenkomstige secret "STACKHERO_SSH_PRIVATE_KEY" en variabele "STACKHERO_ENDPOINT" toe in deze omgeving.
    branches: [ "production", "staging" ]

jobs:
  Deploy:
    environment: ${{ github.ref_name }}
    runs-on: ubuntu-latest
    steps:
    - uses: stackhero-io/github-actions-deploy-to-stackhero@v1
      with:
        # De secret "STACKHERO_SSH_PRIVATE_KEY" en de variabele "STACKHERO_ENDPOINT" moeten worden gedefinieerd in de overeenkomstige branchomgeving op GitHub onder "Settings"/"Environments".
        ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
        endpoint: ${{ vars.STACKHERO_ENDPOINT }}

Commit deze wijzigingen door het volgende uit te voeren:

git add -A .
git commit -m "Add GitHub Actions to deploy to Stackhero"

Maak vervolgens een productiebranch:

git checkout -b production

Duw ten slotte uw wijzigingen naar GitHub:

git push --set-upstream origin production

Deze opdracht pusht uw code naar de GitHub production branch en activeert GitHub Actions om de code naar uw Stackhero-instantie te implementeren.

Om de implementatie te controleren, bezoekt u de GitHub-projectpagina en klikt u op Actions.

GitHub Actions die naar productie hebben geïmplementeerdGitHub Actions die naar productie hebben geïmplementeerd

Gefeliciteerd, u kunt nu automatisch uw code naar productie implementeren met behulp van GitHub Actions!

Het instellen van de stagingomgeving is zeer vergelijkbaar met het configureren van de productieomgeving. Herhaal eenvoudig de bovenstaande stappen, waarbij u production vervangt door staging.

Nadat u de omgeving hebt ingesteld, maakt u een stagingbranch:

git checkout -b staging

Duw vervolgens uw stagingbranch naar GitHub:

git push --set-upstream origin staging

GitHub Actions zal automatisch uw stagingbranch implementeren naar de Python-instantie die is aangewezen voor staging.

Het is een goede gewoonte om de production en staging branches te beschermen om directe pushes te voorkomen. Met deze configuratie moeten pull requests worden gemaakt voor de staging branch en worden samengevoegd door teamleden met de juiste rechten. Zodra ze zijn gevalideerd op het stagingplatform, kan de pull request worden samengevoegd in de production branch door dezelfde geautoriseerde personen.

Deze aanpak verbetert de beveiliging door ervoor te zorgen dat alleen goedgekeurde wijzigingen worden geïmplementeerd en verbetert de betrouwbaarheid door nieuwe functies te testen op het stagingplatform voordat ze de productie bereiken.