Merge pull request #70 from Hoff97/develop #125
This file contains hidden or 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: ci | |
| on: | |
| push: | |
| branches: | |
| - "master" | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: wasm32-unknown-unknown | |
| - name: Install wasm-pack | |
| run: cargo install wasm-pack | |
| - name: Set up Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| cache: npm | |
| cache-dependency-path: frontend/package-lock.json | |
| - name: Install frontend dependencies | |
| run: cd frontend && npm install && npm ci | |
| - name: Run frontend tests | |
| run: cd frontend && npm test | |
| - name: Run backend tests | |
| run: | | |
| cd backend-rust | |
| ./download_test_data.sh | |
| cargo test | |
| docker: | |
| runs-on: ubuntu-latest | |
| needs: test | |
| if: github.event_name == 'push' | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v2 | |
| - name: Login to Docker Hub | |
| uses: docker/login-action@v2 | |
| with: | |
| username: ${{ secrets.DOCKERHUB_USERNAME }} | |
| password: ${{ secrets.DOCKERHUB_TOKEN }} | |
| - name: Build and push | |
| uses: docker/build-push-action@v4 | |
| with: | |
| push: true | |
| tags: hoff97/hikeandfly:latest | |
| cache-from: type=registry,ref=hoff97/hikeandfly:latest | |
| cache-to: type=inline | |
| deploy: | |
| name: "Deploy to server" | |
| runs-on: ubuntu-latest | |
| needs: docker | |
| if: github.event_name == 'push' | |
| steps: | |
| - name: Configure SSH | |
| run: | | |
| mkdir -p ~/.ssh/ | |
| echo "$SSH_KEY" > ~/.ssh/prod.key | |
| chmod 600 ~/.ssh/prod.key | |
| cat >>~/.ssh/config <<END | |
| Host prod | |
| HostName $SSH_HOST | |
| User $SSH_USER | |
| IdentityFile ~/.ssh/prod.key | |
| StrictHostKeyChecking no | |
| END | |
| env: | |
| SSH_USER: ${{ secrets.SSH_USERNAME }} | |
| SSH_KEY: ${{ secrets.SSHKEY }} | |
| SSH_HOST: ${{ secrets.HOST }} | |
| - name: Stop and start the server | |
| run: ssh prod 'docker pull hoff97/hikeandfly:latest && docker stop hoff97hikeandfly && docker rm hoff97hikeandfly && docker image prune -f && docker run -d --restart always --name hoff97hikeandfly -v /root/data:/app/data -p 8080:8080 hoff97/hikeandfly:latest' |