Mosquitto: 4. GitHub Actions
Ši dokumentacija yra GitHub Actions ir GitLab CI vadovo dalis. Visą vadovą rasite čia: Paleiskite tikrą Mosquitto paslaugą iš savo GitHub Actions arba GitLab CI pipeline, vykdykite testus ir automatiškai viską uždarykite.
👋 Sveiki atvykę į Stackhero dokumentaciją!
Stackhero suteikia visiškai valdomą Mosquitto MQTT cloud aplinką, sukurtą patikimumui ir lankstumui:
- Neribotas žinučių pralaidumas ir duomenų perdavimas – jūsų darbo procesai niekada nesusidurs su dirbtiniais apribojimais.
- Neribotas įrenginių autentifikavimas per jūsų išorinį API, todėl įrenginių prijungimas ir prieigos valdymas tampa paprastas.
- Išplėstinės ACL (prieigos kontrolės sąrašai) – detaliam temų, naudotojų ir veiksmų valdymui.
- Individualus domeno vardas su integruotu HTTPS – saugiems ir firminiams galiniams taškams (pvz.: https://mqtt.jusu-imone.com).
- Atnaujinimai be rūpesčių: patobulinimus ar saugumo pataisas galite pritaikyti vienu paspaudimu.
- Nuoseklus veikimas ir stipri apsauga – kiekviena instancija veikia privačioje, dedikuotoje infrastruktūroje.
Pagreitinkite savo IoT projektus ir sumažinkite operacinę naštą. Vos per kelias minutes galite paleisti saugią, gamybai paruoštą Mosquitto MQTT cloud hosting instanciją.
Norėdami pradėti, išsaugokite žemiau pateiktą turinį kaip .github/workflows/ci.yml. Nuo šiol kiekvienas push ir pull request vykdys testus prieš tikrą Mosquitto instanciją.
name: CI su Mosquitto
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
env:
STACKHERO_TOKEN: ${{ secrets.STACKHERO_TOKEN }}
STACK_NAME: ci-mosquitto-${{ github.run_id }}-${{ github.run_attempt }}
INSTANCE: "200" # Pakeiskite jei reikia (žr. 3 žingsnį)
REGION: europe
steps:
- uses: actions/checkout@v4
- name: Įdiegti Stackhero CLI ir klientą
run: |
curl -fsSL https://www.stackhero.io/install.sh | sh
apt-get update && apt-get install -y --no-install-recommends jq curl mosquitto-clients
- name: Sukurti Mosquitto paslaugą
run: |
set -euo pipefail
STACK_ID=$(stackhero --format=script stack-create --name="$STACK_NAME")
echo "STACK_ID=$STACK_ID" >> "$GITHUB_ENV"
SERVICE_ID=$(stackhero --format=script service-add \
--stack="$STACK_ID" \
--service-store="mosquitto" \
--instance="$INSTANCE" \
--region="$REGION")
echo "SERVICE_ID=$SERVICE_ID" >> "$GITHUB_ENV"
stackhero service-wait-for --service="$SERVICE_ID"
- name: Vykdyti testus prieš Mosquitto
run: |
set -euo pipefail
config=$(stackhero service-configuration-get --service="$SERVICE_ID" --format=json)
host=$(echo "$config" | jq -r '.configuration.domain')
user=$(echo "$config" | jq -r '.configuration.authenticationUsers[0].login')
password=$(echo "$config" | jq -r '.configuration.authenticationUsers[0].password')
# Publish a test message to a topic.
mosquitto_pub -h "$host" -p 8883 -u "$user" -P "$password" --capath /etc/ssl/certs -t "stackhero/ci" -m "hello"
echo "✅ Mosquitto pasiekiamas iš CI."
# Čia galite paleisti savo testų rinkinį naudodami aukščiau gautus prisijungimo duomenis ...
- name: Išvalymas (visada, net jei įvyksta klaida)
if: always()
run: |
if [ -n "${SERVICE_ID:-}" ]; then
stackhero service-delete --service="$SERVICE_ID" --confirm
stackhero service-wait-for --service="$SERVICE_ID"
fi
if [ -n "${STACK_ID:-}" ]; then
stackhero stack-delete --stack="$STACK_ID" --confirm
fi
Teardown žingsnis naudoja if: always(), todėl jis bus vykdomas visada, užtikrinant, kad jūsų Mosquitto instancija bus ištrinta ir jums nebus skaičiuojami mokesčiai už nenaudojamus resursus.