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.
Het maken van de Python-services
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 stagingservices
SSH-sleutels configureren
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 ""
De openbare sleutel instellen
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 ophalen
Volg deze stappen:
- Klik in
SSH public keysopAdd a public key. - Voer in
DescriptioninGitHub Action. - Plak in
Keyde openbare sleutel die u van uw computer hebt gekopieerd.
Openbare sleutel toevoegen
De privésleutel instellen
Navigeer naar uw GitHub-projectpagina en klik op Settings, vervolgens op Environments. Selecteer New environment.
GitHub-omgevingen configureren
Typ in het veld Name "production" en bevestig.
De omgeving instellen
Klik op de knop No restriction en kies Selected branches and tags.
Omgevingsbeperkingen instellen
Klik vervolgens op Add deployment branch or tag rule, voer "production" in het veld Name pattern in en klik op Add rule.
Omgevingsbranch instellen
Omgevingsbranch instellen
Klik in de sectie Environment secrets op Add secret.
Secret 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 instellen
Klik vervolgens in de sectie Environment variables op Add variable.
Variabelen 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 instellen
Als u de domeinnaam van uw service hebt aangepast, gebruik dan de aangepaste versie in plaats van xxxxxx.stackhero-network.com.
De gegenereerde sleutels verwijderen
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
De GitHub Actions workflow configureren
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ïmplementeerd
Gefeliciteerd, u kunt nu automatisch uw code naar productie implementeren met behulp van GitHub Actions!
Het maken van de stagingomgeving
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.
Verder gaan
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.