Compare commits
	
		
			23 Commits
		
	
	
		
			53ed032c25
			...
			7bc8293c65
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 7bc8293c65 | |||
| 1d9824dfdc | |||
| 08202691f6 | |||
| 188dd50a84 | |||
| 930ecd490b | |||
| 0ea4fef9f7 | |||
| d10b22f145 | |||
| a4945e5972 | |||
| 33a4cc49e1 | |||
| 6c5448c464 | |||
| b4eefb60c4 | |||
| 3c8d240549 | |||
| 262839f276 | |||
| 5cc08d657d | |||
| c0353c0915 | |||
| 67ae4095cb | |||
| 14d82576f8 | |||
| a9b67660b1 | |||
| 34123d9f79 | |||
| 0b1a6acd3a | |||
| c9e47abd8e | |||
| 98b2b3d5f4 | |||
| 0db0a0f590 | 
							
								
								
									
										136
									
								
								.gitea/workflows/action.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										136
									
								
								.gitea/workflows/action.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,136 @@
 | 
			
		||||
name: CI/CD Pipeline
 | 
			
		||||
 | 
			
		||||
on: push
 | 
			
		||||
 | 
			
		||||
env:
 | 
			
		||||
  CARGO_TARGET: x86_64-unknown-linux-musl
 | 
			
		||||
  SSH_HOST: ${{ secrets.SSH_HOST }}
 | 
			
		||||
  SSH_USER: ${{ secrets.SSH_USER }}
 | 
			
		||||
  SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  test:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    container: rust:latest
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Setup Environment
 | 
			
		||||
        run: |
 | 
			
		||||
          apt-get update -qq && apt-get install -y -qq sshpass musl musl-tools sqlite3 curl gnupg && mkdir -p /etc/apt/keyrings | curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_16.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && apt-get update && apt-get install nodejs -y && apt-get install npm -y
 | 
			
		||||
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v3
 | 
			
		||||
 | 
			
		||||
      - name: Run Test DB Script
 | 
			
		||||
        run: ./test_db.sh
 | 
			
		||||
 | 
			
		||||
      - name: Build
 | 
			
		||||
        run: |
 | 
			
		||||
          cargo build 
 | 
			
		||||
          cd frontend && npm install && npm run build
 | 
			
		||||
 | 
			
		||||
      - name: Run Tests
 | 
			
		||||
        run: cargo test --verbose
 | 
			
		||||
 | 
			
		||||
  deploy-staging:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    container: rust:latest
 | 
			
		||||
    needs: [test]
 | 
			
		||||
    if: github.ref == 'refs/heads/staging'
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Setup Environment
 | 
			
		||||
        run: |
 | 
			
		||||
          rustup target add $CARGO_TARGET
 | 
			
		||||
          apt-get update -qq && apt-get install -y -qq sshpass musl musl-tools sqlite3 curl gnupg
 | 
			
		||||
          
 | 
			
		||||
          # Handling NodeSource GPG key
 | 
			
		||||
          curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key -o nodesource.gpg.key
 | 
			
		||||
          if [ -f /etc/apt/keyrings/nodesource.gpg ]; then
 | 
			
		||||
              rm /etc/apt/keyrings/nodesource.gpg
 | 
			
		||||
          fi
 | 
			
		||||
          gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg nodesource.gpg.key
 | 
			
		||||
 | 
			
		||||
          # Adding NodeSource repository
 | 
			
		||||
          echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_16.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list
 | 
			
		||||
          
 | 
			
		||||
          # Installing Node.js and npm
 | 
			
		||||
          apt-get update
 | 
			
		||||
          apt-get install nodejs -y
 | 
			
		||||
          apt-get install npm -y
 | 
			
		||||
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v3
 | 
			
		||||
      
 | 
			
		||||
      - name: Run Test DB Script
 | 
			
		||||
        run: ./test_db.sh
 | 
			
		||||
 | 
			
		||||
      - name: Build
 | 
			
		||||
        run: |
 | 
			
		||||
          cargo build --release --target $CARGO_TARGET
 | 
			
		||||
          strip target/$CARGO_TARGET/release/rot
 | 
			
		||||
          cd frontend && npm install && npm run build
 | 
			
		||||
 | 
			
		||||
      - name: Deploy to Staging
 | 
			
		||||
        run: |
 | 
			
		||||
          mkdir ~/.ssh
 | 
			
		||||
          ssh-keyscan -H $SSH_HOST >> ~/.ssh/known_hosts
 | 
			
		||||
          echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
 | 
			
		||||
          chmod 600 ~/.ssh/id_rsa
 | 
			
		||||
 | 
			
		||||
          scp target/$CARGO_TARGET/release/rot $SSH_USER@$SSH_HOST:/home/k004373/rowing-staging/rot-updating
 | 
			
		||||
    
 | 
			
		||||
          scp staging-diff.sql $SSH_USER@$SSH_HOST:/home/k004373/rowing-staging/
 | 
			
		||||
          scp -r static $SSH_USER@$SSH_HOST:/home/k004373/rowing-staging/
 | 
			
		||||
          scp -r templates $SSH_USER@$SSH_HOST:/home/k004373/rowing-staging/
 | 
			
		||||
          scp -r svelte $SSH_USER@$SSH_HOST:/home/k004373/rowing-staging/
 | 
			
		||||
          ssh $SSH_USER@$SSH_HOST 'sudo systemctl stop rotstaging'
 | 
			
		||||
          ssh $SSH_USER@$SSH_HOST 'rm /home/k004373/rowing-staging/db.sqlite && cp /home/k004373/rowing/db.sqlite /home/k004373/rowing-staging/db.sqlite && mkdir -p /home/k004373/rowing-staging/svelte/build && mkdir -p /home/k004373/rowing-staging/data-ergo/thirty && mkdir -p /home/k004373/rowing-staging/data-ergo/dozen && sqlite3 /home/k004373/rowing-staging/db.sqlite < /home/k004373/rowing-staging/staging-diff.sql'
 | 
			
		||||
          ssh $SSH_USER@$SSH_HOST 'mv  /home/k004373/rowing-staging/rot-updating /home/k004373/rowing-staging/rot'
 | 
			
		||||
          ssh $SSH_USER@$SSH_HOST 'sudo systemctl start rotstaging'
 | 
			
		||||
        env:
 | 
			
		||||
          SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
 | 
			
		||||
          SSH_HOST: ${{ secrets.SSH_HOST }}
 | 
			
		||||
          SSH_USER: ${{ secrets.SSH_USER }}
 | 
			
		||||
 | 
			
		||||
  deploy-main:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    container: rust:latest
 | 
			
		||||
    needs: [test]
 | 
			
		||||
    if: github.ref == 'refs/heads/main'
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Setup Environment
 | 
			
		||||
        run: |
 | 
			
		||||
          rustup target add $CARGO_TARGET
 | 
			
		||||
          apt-get update -qq && apt-get install -y -qq sshpass musl musl-tools sqlite3 curl gnupg && mkdir -p /etc/apt/keyrings | curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_16.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && apt-get update && apt-get install nodejs -y && apt-get install npm -y
 | 
			
		||||
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v3
 | 
			
		||||
      
 | 
			
		||||
      - name: Run Test DB Script
 | 
			
		||||
        run: ./test_db.sh
 | 
			
		||||
 | 
			
		||||
      - name: Build
 | 
			
		||||
        run: |
 | 
			
		||||
          cargo build --release --target $CARGO_TARGET
 | 
			
		||||
          strip target/$CARGO_TARGET/release/rot
 | 
			
		||||
          cd frontend && npm install && npm run build
 | 
			
		||||
 | 
			
		||||
      - name: Deploy to Main
 | 
			
		||||
        run: |
 | 
			
		||||
          mkdir ~/.ssh
 | 
			
		||||
          ssh-keyscan -H $SSH_HOST >> ~/.ssh/known_hosts
 | 
			
		||||
          echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
 | 
			
		||||
          chmod 600 ~/.ssh/id_rsa
 | 
			
		||||
 | 
			
		||||
          scp target/$CARGO_TARGET/release/rot $SSH_USER@$SSH_HOST:/home/k004373/rowing/rot-updating
 | 
			
		||||
          scp -r static $SSH_USER@$SSH_HOST:/home/k004373/rowing/
 | 
			
		||||
          scp -r templates $SSH_USER@$SSH_HOST:/home/k004373/rowing/
 | 
			
		||||
          scp -r svelte $SSH_USER@$SSH_HOST:/home/k004373/rowing/
 | 
			
		||||
          ssh $SSH_USER@$SSH_HOST 'mkdir -p /home/k004373/rowing/svelte/build && mkdir -p /home/k004373/rowing/data-ergo/thirty && mkdir -p /home/k004373/rowing/data-ergo/dozen'
 | 
			
		||||
          ssh $SSH_USER@$SSH_HOST 'sudo systemctl stop rot'
 | 
			
		||||
          ssh $SSH_USER@$SSH_HOST 'mv  /home/k004373/rowing/rot-updating /home/k004373/rowing/rot'
 | 
			
		||||
          ssh $SSH_USER@$SSH_HOST 'sudo systemctl start rot'
 | 
			
		||||
        env:
 | 
			
		||||
          SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
 | 
			
		||||
          SSH_HOST: ${{ secrets.SSH_HOST }}
 | 
			
		||||
          SSH_USER: ${{ secrets.SSH_USER }}
 | 
			
		||||
@@ -1,70 +0,0 @@
 | 
			
		||||
image: rust:latest
 | 
			
		||||
 | 
			
		||||
variables:
 | 
			
		||||
  CARGO_TARGET: x86_64-unknown-linux-musl
 | 
			
		||||
 | 
			
		||||
before_script:
 | 
			
		||||
  - rustup target add $CARGO_TARGET
 | 
			
		||||
  - apt-get update -qq && apt-get install -y -qq sshpass musl musl-tools sqlite3 curl gnupg && mkdir -p /etc/apt/keyrings | curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_16.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && apt-get update && apt-get install nodejs -y && apt-get install npm -y
 | 
			
		||||
  - ./test_db.sh
 | 
			
		||||
 | 
			
		||||
build:
 | 
			
		||||
  stage: build
 | 
			
		||||
  script:
 | 
			
		||||
    - cargo build --release --target $CARGO_TARGET
 | 
			
		||||
    - strip target/$CARGO_TARGET/release/rot
 | 
			
		||||
    - cd frontend && npm install && npm run build
 | 
			
		||||
  artifacts:
 | 
			
		||||
    paths:
 | 
			
		||||
      - target/$CARGO_TARGET/release/rot
 | 
			
		||||
      - static
 | 
			
		||||
    expire_in: 3 hours 
 | 
			
		||||
 | 
			
		||||
test:
 | 
			
		||||
  stage: test 
 | 
			
		||||
  image: rust:latest
 | 
			
		||||
  script:
 | 
			
		||||
    - cargo test --verbose
 | 
			
		||||
 | 
			
		||||
deploy-staging:
 | 
			
		||||
  stage: deploy
 | 
			
		||||
  before_script:
 | 
			
		||||
    - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
 | 
			
		||||
    - eval $(ssh-agent -s)
 | 
			
		||||
    - echo "$SSH_PRIVATE_KEY" | ssh-add -
 | 
			
		||||
    - mkdir -p ~/.ssh
 | 
			
		||||
    - chmod 700 ~/.ssh
 | 
			
		||||
    - ssh-keyscan -H $SSH_HOST > ~/.ssh/known_hosts
 | 
			
		||||
  script:
 | 
			
		||||
    - scp target/$CARGO_TARGET/release/rot $SSH_USER@$SSH_HOST:/home/k004373/rowing-staging/rot-updating
 | 
			
		||||
    - scp staging-diff.sql $SSH_USER@$SSH_HOST:/home/k004373/rowing-staging/
 | 
			
		||||
    - scp -r static $SSH_USER@$SSH_HOST:/home/k004373/rowing-staging/
 | 
			
		||||
    - scp -r templates $SSH_USER@$SSH_HOST:/home/k004373/rowing-staging/
 | 
			
		||||
    - scp -r svelte $SSH_USER@$SSH_HOST:/home/k004373/rowing-staging/
 | 
			
		||||
    - ssh $SSH_USER@$SSH_HOST 'sudo systemctl stop rotstaging'
 | 
			
		||||
    - ssh $SSH_USER@$SSH_HOST 'rm /home/k004373/rowing-staging/db.sqlite && cp /home/k004373/rowing/db.sqlite /home/k004373/rowing-staging/db.sqlite && mkdir -p /home/k004373/rowing-staging/svelte/build && mkdir -p /home/k004373/rowing-staging/data-ergo/thirty && mkdir -p /home/k004373/rowing-staging/data-ergo/dozen && sqlite3 /home/k004373/rowing-staging/db.sqlite < /home/k004373/rowing-staging/staging-diff.sql'
 | 
			
		||||
    - ssh $SSH_USER@$SSH_HOST 'mv  /home/k004373/rowing-staging/rot-updating /home/k004373/rowing-staging/rot'
 | 
			
		||||
    - ssh $SSH_USER@$SSH_HOST 'sudo systemctl start rotstaging'
 | 
			
		||||
  only:
 | 
			
		||||
    - staging 
 | 
			
		||||
 | 
			
		||||
deploy-main:
 | 
			
		||||
  stage: deploy
 | 
			
		||||
  before_script:
 | 
			
		||||
    - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
 | 
			
		||||
    - eval $(ssh-agent -s)
 | 
			
		||||
    - echo "$SSH_PRIVATE_KEY" | ssh-add -
 | 
			
		||||
    - mkdir -p ~/.ssh
 | 
			
		||||
    - chmod 700 ~/.ssh
 | 
			
		||||
    - ssh-keyscan -H $SSH_HOST > ~/.ssh/known_hosts
 | 
			
		||||
  script:
 | 
			
		||||
    - scp target/$CARGO_TARGET/release/rot $SSH_USER@$SSH_HOST:/home/k004373/rowing/rot-updating
 | 
			
		||||
    - scp -r static $SSH_USER@$SSH_HOST:/home/k004373/rowing/
 | 
			
		||||
    - scp -r templates $SSH_USER@$SSH_HOST:/home/k004373/rowing/
 | 
			
		||||
    - scp -r svelte $SSH_USER@$SSH_HOST:/home/k004373/rowing/
 | 
			
		||||
    - ssh $SSH_USER@$SSH_HOST 'mkdir -p /home/k004373/rowing/svelte/build && mkdir -p /home/k004373/rowing/data-ergo/thirty && mkdir -p /home/k004373/rowing/data-ergo/dozen'
 | 
			
		||||
    - ssh $SSH_USER@$SSH_HOST 'sudo systemctl stop rot'
 | 
			
		||||
    - ssh $SSH_USER@$SSH_HOST 'mv  /home/k004373/rowing/rot-updating /home/k004373/rowing/rot'
 | 
			
		||||
    - ssh $SSH_USER@$SSH_HOST 'sudo systemctl start rot'
 | 
			
		||||
  only:
 | 
			
		||||
    - main 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
use chrono::{NaiveDateTime, Utc, Datelike};
 | 
			
		||||
use chrono::{Datelike, NaiveDateTime, Utc};
 | 
			
		||||
use rocket::FromForm;
 | 
			
		||||
use serde::Serialize;
 | 
			
		||||
use sqlx::{FromRow, Sqlite, SqlitePool, Transaction};
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
			{{ macros::alert(message=flash.1, type=flash.0, class="sm:col-span-2 lg:col-span-3") }}
 | 
			
		||||
		{% endif %}
 | 
			
		||||
 | 
			
		||||
		<h1 class="h1 sm:col-span-2 lg:col-span-3">Ausfahrten</h1>
 | 
			
		||||
		<h1 class="h1 sm:col-span-2 lg:col-span-3">Ausfahrten!</h1>
 | 
			
		||||
 | 
			
		||||
		{% include "includes/buttons" %}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user