Add firebase deploy
This commit is contained in:
parent
da9e1eed50
commit
cd680078e7
6 changed files with 37 additions and 148 deletions
5
.firebaserc
Normal file
5
.firebaserc
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"projects": {
|
||||||
|
"default": "schmelczer-dev"
|
||||||
|
}
|
||||||
|
}
|
||||||
52
.github/workflows/main.yaml
vendored
52
.github/workflows/main.yaml
vendored
|
|
@ -1,49 +1,21 @@
|
||||||
name: Deploy everything
|
name: Deploy site
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
env:
|
|
||||||
CONTAINER_REGISTRY: schmelczera
|
|
||||||
DOMAIN: "161.35.71.163"
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
firebase-deploy:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout current branch with lfs
|
- name: Checkout current branch with lfs
|
||||||
uses: actions/checkout@main
|
uses: actions/checkout@master
|
||||||
|
- name: Build site
|
||||||
|
run: |
|
||||||
|
npm install
|
||||||
|
npm run build
|
||||||
|
- name: Deploy html
|
||||||
|
uses: w9jds/firebase-action@master
|
||||||
with:
|
with:
|
||||||
lfs: true
|
args: deploy --only hosting:schmelczer-dev --project schmelczer-dev
|
||||||
|
env:
|
||||||
- name: Setup auth tokens
|
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
|
||||||
run: |
|
|
||||||
docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASSWORD }}
|
|
||||||
|
|
||||||
- name: Build and push job
|
|
||||||
run: |
|
|
||||||
docker build . -t $CONTAINER_REGISTRY/timeline
|
|
||||||
docker push $CONTAINER_REGISTRY/timeline
|
|
||||||
|
|
||||||
push:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs:
|
|
||||||
- build
|
|
||||||
steps:
|
|
||||||
- name: Checkout current branch with lfs
|
|
||||||
uses: actions/checkout@main
|
|
||||||
with:
|
|
||||||
lfs: true
|
|
||||||
|
|
||||||
- name: Setup auth tokens
|
|
||||||
run: |
|
|
||||||
# SSH key
|
|
||||||
mkdir ~/.ssh
|
|
||||||
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_ed25519
|
|
||||||
chmod 400 ~/.ssh/id_ed25519
|
|
||||||
ssh -o StrictHostKeyChecking=no root@$DOMAIN uptime
|
|
||||||
|
|
||||||
- name: Stack deploy
|
|
||||||
run: |
|
|
||||||
DOCKER_HOST=ssh://root@$DOMAIN docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASSWORD }}
|
|
||||||
DOCKER_HOST=ssh://root@$DOMAIN docker stack deploy timeline -c docker-compose.yml --with-registry-auth
|
|
||||||
|
|
|
||||||
25
Dockerfile
25
Dockerfile
|
|
@ -1,25 +0,0 @@
|
||||||
FROM schmelczera/error-pages as build-error-pages
|
|
||||||
RUN python build.py 403 404 50x
|
|
||||||
|
|
||||||
FROM node:latest as build-webpage
|
|
||||||
WORKDIR /home/node
|
|
||||||
|
|
||||||
COPY src src
|
|
||||||
COPY package.json custom.d.ts tsconfig.json webpack.config.js ./
|
|
||||||
|
|
||||||
RUN npm install
|
|
||||||
RUN npm run build
|
|
||||||
|
|
||||||
FROM nginx:alpine
|
|
||||||
|
|
||||||
HEALTHCHECK --interval=1m --timeout=10s CMD curl --fail http://localhost/ || exit 1
|
|
||||||
|
|
||||||
WORKDIR /usr/share/nginx/html
|
|
||||||
|
|
||||||
RUN rm -rf *
|
|
||||||
COPY --from=build-webpage /home/node/dist .
|
|
||||||
COPY --from=build-error-pages /home/python/built errors
|
|
||||||
RUN find . -type f | xargs gzip -k9 &&\
|
|
||||||
chmod -R 555 .
|
|
||||||
|
|
||||||
COPY nginx-config /etc/nginx/
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
||||||
version: '3.8'
|
|
||||||
|
|
||||||
services:
|
|
||||||
timeline:
|
|
||||||
init: true
|
|
||||||
image: schmelczera/timeline
|
|
||||||
networks:
|
|
||||||
- network
|
|
||||||
deploy:
|
|
||||||
replicas: 3
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
# no cpu limit
|
|
||||||
memory: 16M
|
|
||||||
reservations:
|
|
||||||
cpus: '0.2'
|
|
||||||
memory: 16M
|
|
||||||
placement:
|
|
||||||
max_replicas_per_node: 1
|
|
||||||
update_config:
|
|
||||||
parallelism: 1
|
|
||||||
failure_action: rollback
|
|
||||||
delay: 10s
|
|
||||||
monitor: 10s
|
|
||||||
restart_policy:
|
|
||||||
condition: on-failure
|
|
||||||
window: 30s
|
|
||||||
|
|
||||||
networks:
|
|
||||||
network:
|
|
||||||
20
firebase.json
Normal file
20
firebase.json
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"hosting": {
|
||||||
|
"public": "dist",
|
||||||
|
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
|
||||||
|
"site": "schmelczer-dev",
|
||||||
|
"rewrites": [
|
||||||
|
{
|
||||||
|
"source": "**",
|
||||||
|
"destination": "/index.html"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"redirects": [
|
||||||
|
{
|
||||||
|
"source": "/fizika",
|
||||||
|
"destination": "https://fizika.schmelczer.dev",
|
||||||
|
"type": 301
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,53 +0,0 @@
|
||||||
user nginx;
|
|
||||||
worker_processes auto;
|
|
||||||
|
|
||||||
error_log /var/log/nginx/error.log warn;
|
|
||||||
|
|
||||||
pid /var/run/nginx.pid;
|
|
||||||
|
|
||||||
events {
|
|
||||||
worker_connections 1024;
|
|
||||||
}
|
|
||||||
|
|
||||||
http {
|
|
||||||
server_tokens off;
|
|
||||||
|
|
||||||
include /etc/nginx/mime.types;
|
|
||||||
default_type application/octet-stream;
|
|
||||||
|
|
||||||
access_log off;
|
|
||||||
|
|
||||||
sendfile on;
|
|
||||||
sendfile_max_chunk 1m;
|
|
||||||
tcp_nopush on;
|
|
||||||
|
|
||||||
keepalive_timeout 65;
|
|
||||||
|
|
||||||
gzip on;
|
|
||||||
gzip_static on;
|
|
||||||
gzip_vary on;
|
|
||||||
gzip_min_length 10240;
|
|
||||||
gzip_proxied any;
|
|
||||||
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
|
|
||||||
|
|
||||||
server {
|
|
||||||
listen 80;
|
|
||||||
server_name localhost;
|
|
||||||
|
|
||||||
root /usr/share/nginx/html;
|
|
||||||
index index.html;
|
|
||||||
|
|
||||||
location ~* \.(jpg|jpeg|png|ico)$ {
|
|
||||||
expires 30d;
|
|
||||||
}
|
|
||||||
|
|
||||||
error_page 403 /403.html;
|
|
||||||
error_page 404 /404.html;
|
|
||||||
error_page 500 501 502 503 504 /50x.html;
|
|
||||||
|
|
||||||
location ~ ^/(403|404|50x).html$ {
|
|
||||||
root /usr/share/nginx/html/errors;
|
|
||||||
internal;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue