refactored landing page, added map page #261
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and Deploy | |
on: | |
push: | |
branches: | |
workflow_dispatch: | |
env: | |
DOCKER_REGISTRY: ghcr.io | |
DOCKER_USERNAME: ${{ github.actor }} | |
DOCKER_PASSWORD: ${{ secrets.GITHUB_TOKEN }} | |
concurrency: production | |
jobs: | |
frontend: | |
runs-on: ubuntu-latest | |
permissions: | |
packages: write | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v1 | |
- name: Setup QEMU | |
uses: docker/setup-qemu-action@v2 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
- name: Login to Github containers | |
uses: docker/login-action@v2 | |
with: | |
registry: ${{ env.DOCKER_REGISTRY }} | |
username: ${{ env.DOCKER_USERNAME }} | |
password: ${{ env.DOCKER_PASSWORD }} | |
- name: Extract metadata for frontend | |
id: meta-frontend | |
uses: docker/metadata-action@v4 | |
with: | |
images: ${{ env.DOCKER_REGISTRY }}/${{ github.repository }}-frontend | |
- name: Build and push frontend | |
uses: docker/build-push-action@v4 | |
with: | |
push: true | |
context: ./frontend | |
build-args: | | |
"PUBLIC_URL=/dev/${{ github.ref_name }}/frontend" | |
file: ./frontend/Dockerfile | |
target: production | |
tags: ${{ steps.meta-frontend.outputs.tags }} | |
labels: ${{ steps.meta-frontend.outputs.labels }} | |
backend: | |
runs-on: ubuntu-latest | |
permissions: | |
packages: write | |
env: | |
DB_HOST: ${{ secrets.DB_HOST }} | |
DB_PASS: ${{ secrets.DB_PASS }} | |
DB_PORT: ${{ secrets.DB_PORT }} | |
DB_USER: ${{ secrets.DB_USER }} | |
DB_DATABASE: ${{ github.ref_name }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v1 | |
- name: Setup QEMU | |
uses: docker/setup-qemu-action@v2 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
- name: Login to Github containers | |
uses: docker/login-action@v2 | |
with: | |
registry: ${{ env.DOCKER_REGISTRY }} | |
username: ${{ env.DOCKER_USERNAME }} | |
password: ${{ env.DOCKER_PASSWORD }} | |
- name: Extract metadata for backend | |
id: meta-backend | |
uses: docker/metadata-action@v4 | |
with: | |
images: ${{ env.DOCKER_REGISTRY }}/${{ github.repository }}-backend | |
- name: Build and push backend | |
uses: docker/build-push-action@v4 | |
with: | |
push: true | |
context: ./backend | |
file: ./backend/Dockerfile | |
target: production | |
tags: ${{ steps.meta-backend.outputs.tags }} | |
labels: ${{ steps.meta-backend.outputs.labels }} | |
cs-http: | |
runs-on: ubuntu-latest | |
permissions: | |
packages: write | |
steps: | |
- name: Setup QEMU | |
uses: docker/setup-qemu-action@v2 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
- name: Login to Github containers | |
uses: docker/login-action@v2 | |
with: | |
registry: ${{ env.DOCKER_REGISTRY }} | |
username: ${{ env.DOCKER_USERNAME }} | |
password: ${{ env.DOCKER_PASSWORD }} | |
- name: Extract metadata for Chirpstack HTTP | |
id: meta-cs | |
uses: docker/metadata-action@v4 | |
with: | |
images: ${{ env.DOCKER_REGISTRY }}/${{ github.repository }}-cs-http | |
- name: Build and push Chirpstack HTTP Integration | |
uses: docker/build-push-action@v3 | |
with: | |
push: true | |
file: cs-http.Dockerfile | |
tags: ${{ steps.meta-cs.outputs.tags }} | |
labels: ${{ steps.meta-cs.outputs.labels }} | |
http-api: | |
runs-on: ubuntu-latest | |
permissions: | |
packages: write | |
steps: | |
- name: Setup QEMU | |
uses: docker/setup-qemu-action@v2 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
- name: Login to Github containers | |
uses: docker/login-action@v2 | |
with: | |
registry: ${{ env.DOCKER_REGISTRY }} | |
username: ${{ env.DOCKER_USERNAME }} | |
password: ${{ env.DOCKER_PASSWORD }} | |
- name: Extract metadata for HTTP API | |
id: meta-http-api | |
uses: docker/metadata-action@v4 | |
with: | |
images: ${{ env.DOCKER_REGISTRY }}/${{ github.repository }}-http-api | |
- name: Build and push HTTP API | |
uses: docker/build-push-action@v3 | |
with: | |
push: true | |
file: http-api.Dockerfile | |
tags: ${{ steps.meta-http-api.outputs.tags }} | |
labels: ${{ steps.meta-http-api.outputs.labels }} | |
deploy: | |
runs-on: ubuntu-latest | |
needs: [frontend, backend, cs-http, http-api] | |
environment: ${{ github.ref_name }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Setup SSH | |
run: | | |
mkdir -p ~/.ssh/ | |
echo "$SERVER_SSH_PRIVATE_KEY" > ~/.ssh/id_rsa | |
chmod 600 ~/.ssh/id_rsa | |
echo "$SERVER_SSH_KNOWN_HOSTS" >> ~/.ssh/known_hosts | |
chmod 600 ~/.ssh/known_hosts | |
env: | |
SERVER_SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} | |
SERVER_SSH_KNOWN_HOSTS: ${{ secrets.SSH_KNOWN_HOSTS }} | |
shell: bash | |
- name: Generate frontend.yaml | |
uses: cuchi/[email protected] | |
with: | |
template: k8s/frontend.yaml.j2 | |
output_file: k8s/frontend.yaml | |
variables: | | |
hostname=${{ secrets.HOSTNAME }} | |
- name: Generate backend.yaml | |
uses: cuchi/[email protected] | |
with: | |
template: k8s/backend.yaml.j2 | |
output_file: k8s/backend.yaml | |
variables: | | |
hostname=${{ secrets.HOSTNAME }} | |
- name: Generate http-api.yaml | |
uses: cuchi/[email protected] | |
with: | |
template: k8s/http-api.yaml.j2 | |
output_file: k8s/http-api.yaml | |
- name: Generate cs-http.yaml | |
uses: cuchi/[email protected] | |
with: | |
template: k8s/cs-http.yaml.j2 | |
output_file: k8s/cs-http.yaml | |
- name: Generate dburl-secret.yaml | |
uses: cuchi/[email protected] | |
with: | |
template: k8s/dburl-secret.yaml.j2 | |
output_file: k8s/dburl-secret.yaml | |
strict: true | |
variables: | | |
user=${{ secrets.DB_USER }} | |
pass=${{ secrets.DB_PASS }} | |
host=${{ secrets.DB_HOST }} | |
port=${{ secrets.DB_PORT }} | |
- name: Apply configurations | |
shell: bash | |
run: cat k8s/*.yaml | ssh ${{ secrets.USER }}@${{ secrets.HOSTNAME }} '/snap/bin/microk8s kubectl apply -f -' | |
apply_db_migrations: | |
runs-on: ubuntu-latest | |
needs: [frontend, backend, cs-http, http-api] | |
environment: ${{ github.ref_name }} | |
env: | |
DB_HOST: ${{ secrets.DB_HOST }} | |
DB_PASS: ${{ secrets.DB_PASS }} | |
DB_PORT: ${{ secrets.DB_PORT }} | |
DB_USER: ${{ secrets.DB_USER }} | |
DB_DATABASE: ${{ github.ref_name }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v1 | |
- name: Setup python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10" | |
cache: "pip" | |
- name: Install dependencies | |
run: pip install -r requirements.txt | |
- name: Run migrations | |
run: flask --app backend.api db upgrade -d ./backend/api/migrations |