Ruby: Implementeren met GitHub Actions

Hoe uw Ruby-code te implementeren met behulp van GitHub Actions

👋 Welkom bij de Stackhero-documentatie!

Stackhero biedt een kant-en-klare Ruby 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 Ruby cloud hosting oplossing van Stackhero te proberen!

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

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

Om dit te bereiken, onderhoudt u twee branches: staging en production, waarbij code die naar deze branches wordt gepusht automatisch wordt 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 zeker te zijn 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 goede praktijk, die u helpt om tal van problemen te vermijden.

Om deze gids te volgen, heeft u een GitHub-account nodig met een repository die uw code host.

Ga naar uw Stackhero-dashboard en maak twee Stackhero-services, één voor staging en één voor productie. Om verwarring te voorkomen, raden we aan deze services te hernoemen naar "Production" en "Staging".

Heeft u nog geen Stackhero-account? U kunt er in slechts twee minuten gratis een aanmaken en vervolgens uw Ruby-cloudservices met slechts een paar klikken creëren.

Voorbeeld van productie- en staging-servicesVoorbeeld van productie- en staging-services

SSH-sleutels geven GitHub Actions het recht om verbinding te maken met uw Ruby-service om uw code te implementeren. Dit is een essentieel onderdeel van het beveiligen van uw Stackhero-services.

Maak op uw computer nieuwe SSH-sleutels aan:

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

Haal de publieke sleutel op die u zojuist heeft gegenereerd:

cat /tmp/ssh_key.pub

Selecteer in het Stackhero-dashboard uw "production" Ruby-service en klik op de knop "Configure". Service-instellingen ophalenService-instellingen ophalen

Vervolgens:

  1. Klik in SSH public keys op Add a public key.
  2. Zet in Description GitHub Action.
  3. Plak in Key de inhoud van de publieke sleutel die u op uw computer heeft.

Service-instellingen ophalenService-instellingen ophalen

Ga naar de GitHub-website en selecteer uw project.

Klik op Settings/Environments en vervolgens op New environment. GitHub-omgevingen configurerenGitHub-omgevingen configureren

Zet in Name "production" en bevestig. De omgeving instellenDe omgeving instellen

Klik op de knop No restriction en selecteer Selected branches and tags. Omgevingsbeperkingen instellenOmgevingsbeperkingen instellen

Klik op Add deployment branch or tag rule, voer "production" in bij Name pattern, en klik op Add rule. Omgevingsbranch instellenOmgevingsbranch instellen Omgevingsbranch instellenOmgevingsbranch instellen

Klik in Environment secrets op Add secret. Secret toevoegenSecret toevoegen

Haal de private sleutel op die u eerder op uw computer heeft gegenereerd:

cat /tmp/ssh_key

Zet in Name STACKHERO_SSH_PRIVATE_KEY. Plak in Value uw private sleutel. De SSH-private sleutel secret instellenDe SSH-private sleutel secret instellen

Klik in Environment variables op Add variable. Variabelen instellenVariabelen instellen

Zet in Name STACKHERO_ENDPOINT. Plak in Value uw Ruby-service endpoint. U vindt deze in uw Stackhero-dashboard. De endpoint-variabele instellenDe endpoint-variabele instellen

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

Aangezien u de eerder gegenereerde SSH-sleutels niet meer nodig heeft, kunt u ze van uw computer verwijderen om veiligheidsredenen:

rm /tmp/ssh_key /tmp/ssh_key.pub

Maak in uw Git-repository op uw computer een directory genaamd .github/workflows. Maak in deze directory een bestand genaamd deploy-to-stackhero.yml.

# 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 implementatie-actie zullen activeren na een git push.
    # Vergeet niet om een omgeving te creëren 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 uw wijzigingen:

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

Maak vervolgens een productiebranch aan:

git checkout -b production

Duw ten slotte uw wijzigingen naar GitHub:

git push --set-upstream origin production

Deze laatste git push-opdracht zal de code van uw computer naar de GitHub-branch production pushen. GitHub Actions zal automatisch draaien en deze code naar uw Stackhero-instantie implementeren.

Om deze actie te controleren, gaat u naar de GitHub-website, selecteert u uw project en klikt u op Actions. GitHub Actions die naar productie heeft geïmplementeerdGitHub Actions die naar productie heeft geïmplementeerd

Gefeliciteerd, u kunt nu automatisch uw code naar productie implementeren via GitHub Actions!

Het creëren van de staging-omgeving is vergelijkbaar met het instellen van de productieomgeving. Om het te creëren, herhaalt u de stappen uit de vorige secties van deze gids, waarbij u eenvoudig production vervangt door staging.

Maak vervolgens een staging-branch aan:

git checkout -b staging

Duw ten slotte uw wijzigingen naar GitHub:

git push --set-upstream origin staging

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

Een goede praktijk is om de production en staging branches te beschermen om directe pushes naar hen te voorkomen. In dit geval moet er een pull request worden gemaakt voor de staging branch en vervolgens worden samengevoegd door mensen met de rechten om code naar staging te pushen. Zodra gevalideerd op het staging-platform, kan de pull request worden samengevoegd in de production branch door dezelfde mensen die de rechten hebben.

Deze aanpak zorgt voor veiligheid (alleen geautoriseerde personen kunnen naar staging en production pushen) en betrouwbaarheid (nieuwe functies worden eerst getest op een staging platform voordat ze naar de production branch worden gepusht).