remove deploy
This commit is contained in:
@@ -1,86 +0,0 @@
|
|||||||
name: Deploy Backend to Docker
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
paths:
|
|
||||||
- 'backend/**'
|
|
||||||
- 'docker-compose.yml'
|
|
||||||
- '.gitea/workflows/deploy.yml'
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
deploy:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v3
|
|
||||||
|
|
||||||
- name: Build backend image
|
|
||||||
working-directory: backend
|
|
||||||
run: docker build -t rmtpocketwatcher-backend:latest .
|
|
||||||
|
|
||||||
- name: Save image to tar
|
|
||||||
run: docker save rmtpocketwatcher-backend:latest -o backend-image.tar
|
|
||||||
|
|
||||||
- name: Deploy via SSH to Docker host
|
|
||||||
env:
|
|
||||||
DOCKER_HOST: ${{ secrets.DOCKER_HOST }}
|
|
||||||
DOCKER_SSH_KEY: ${{ secrets.DOCKER_SSH_KEY }}
|
|
||||||
DOCKER_USER: ${{ secrets.DOCKER_USER }}
|
|
||||||
run: |
|
|
||||||
# Setup SSH
|
|
||||||
mkdir -p ~/.ssh
|
|
||||||
echo "$DOCKER_SSH_KEY" > ~/.ssh/deploy_key
|
|
||||||
chmod 600 ~/.ssh/deploy_key
|
|
||||||
|
|
||||||
# Copy image to remote host
|
|
||||||
scp -i ~/.ssh/deploy_key -o StrictHostKeyChecking=no \
|
|
||||||
backend-image.tar ${DOCKER_USER}@${DOCKER_HOST}:/tmp/
|
|
||||||
|
|
||||||
# Copy docker-compose to remote host
|
|
||||||
scp -i ~/.ssh/deploy_key -o StrictHostKeyChecking=no \
|
|
||||||
docker-compose.yml ${DOCKER_USER}@${DOCKER_HOST}:/opt/rmtpocketwatcher/
|
|
||||||
|
|
||||||
# Load image and restart services
|
|
||||||
ssh -i ~/.ssh/deploy_key -o StrictHostKeyChecking=no \
|
|
||||||
${DOCKER_USER}@${DOCKER_HOST} << 'EOF'
|
|
||||||
cd /opt/rmtpocketwatcher
|
|
||||||
docker load -i /tmp/backend-image.tar
|
|
||||||
docker-compose down backend
|
|
||||||
docker-compose up -d backend
|
|
||||||
rm /tmp/backend-image.tar
|
|
||||||
EOF
|
|
||||||
|
|
||||||
deploy-portainer:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
if: github.event_name == 'workflow_dispatch'
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Deploy via Portainer Webhook
|
|
||||||
env:
|
|
||||||
PORTAINER_WEBHOOK_URL: ${{ secrets.PORTAINER_WEBHOOK_URL }}
|
|
||||||
run: |
|
|
||||||
curl -X POST "$PORTAINER_WEBHOOK_URL"
|
|
||||||
|
|
||||||
- name: Deploy via Portainer API
|
|
||||||
env:
|
|
||||||
PORTAINER_URL: ${{ secrets.PORTAINER_URL }}
|
|
||||||
PORTAINER_API_KEY: ${{ secrets.PORTAINER_API_KEY }}
|
|
||||||
PORTAINER_STACK_ID: ${{ secrets.PORTAINER_STACK_ID }}
|
|
||||||
run: |
|
|
||||||
# Pull latest from git and redeploy stack
|
|
||||||
curl -X PUT \
|
|
||||||
"${PORTAINER_URL}/api/stacks/${PORTAINER_STACK_ID}/git/redeploy" \
|
|
||||||
-H "X-API-Key: ${PORTAINER_API_KEY}" \
|
|
||||||
-H "Content-Type: application/json" \
|
|
||||||
-d '{
|
|
||||||
"pullImage": true,
|
|
||||||
"prune": true
|
|
||||||
}'
|
|
||||||
BIN
electron-app/src/assets/logo.png
Normal file
BIN
electron-app/src/assets/logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.5 KiB |
@@ -20,6 +20,14 @@ let mainWindow: BrowserWindow | null = null;
|
|||||||
let tray: Tray | null = null;
|
let tray: Tray | null = null;
|
||||||
|
|
||||||
function createWindow(): void {
|
function createWindow(): void {
|
||||||
|
// In dev: __dirname = dist/main, logo is at root
|
||||||
|
// In prod: __dirname = resources/app.asar/dist/main
|
||||||
|
const iconPath = process.env.NODE_ENV === 'development'
|
||||||
|
? path.join(__dirname, '../../logo.png')
|
||||||
|
: path.join(__dirname, '../assets/logo.png');
|
||||||
|
|
||||||
|
console.log('Window icon path:', iconPath);
|
||||||
|
|
||||||
mainWindow = new BrowserWindow({
|
mainWindow = new BrowserWindow({
|
||||||
width: 1400,
|
width: 1400,
|
||||||
height: 900,
|
height: 900,
|
||||||
@@ -27,6 +35,7 @@ function createWindow(): void {
|
|||||||
minHeight: 700,
|
minHeight: 700,
|
||||||
frame: false,
|
frame: false,
|
||||||
backgroundColor: '#0a0e27',
|
backgroundColor: '#0a0e27',
|
||||||
|
icon: iconPath,
|
||||||
webPreferences: {
|
webPreferences: {
|
||||||
preload: path.join(__dirname, 'preload.js'),
|
preload: path.join(__dirname, 'preload.js'),
|
||||||
nodeIntegration: false,
|
nodeIntegration: false,
|
||||||
@@ -54,10 +63,15 @@ function createWindow(): void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function createTray(): void {
|
function createTray(): void {
|
||||||
// Create a simple icon for the tray (16x16 cyan square)
|
// In dev: __dirname = dist/main, logo is at root
|
||||||
const icon = nativeImage.createFromDataURL(
|
// In prod: __dirname = resources/app.asar/dist/main
|
||||||
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAdgAAAHYBTnsmCAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAABNSURBVDiNY/z//z8DJYCJgUIwasCoAaMGjBowaMIAhv///zNQCpiYKASjBowaMGrAqAGDJgxGDRg1YNSAUQNGDRg0YTBqwKgBowYMmjAAALmyAwVYbMsAAAAASUVORK5CYII='
|
const iconPath = process.env.NODE_ENV === 'development'
|
||||||
);
|
? path.join(__dirname, '../../logo.png')
|
||||||
|
: path.join(__dirname, '../assets/logo.png');
|
||||||
|
|
||||||
|
console.log('Tray icon path:', iconPath);
|
||||||
|
|
||||||
|
const icon = nativeImage.createFromPath(iconPath).resize({ width: 16, height: 16 });
|
||||||
|
|
||||||
tray = new Tray(icon);
|
tray = new Tray(icon);
|
||||||
|
|
||||||
@@ -97,9 +111,9 @@ app.whenReady().then(() => {
|
|||||||
createWindow();
|
createWindow();
|
||||||
});
|
});
|
||||||
|
|
||||||
app.on('window-all-closed', (e: Event) => {
|
app.on('window-all-closed', () => {
|
||||||
// Prevent app from quitting when window is closed (allow tray to keep it running)
|
// Quit the app when all windows are closed
|
||||||
e.preventDefault();
|
app.quit();
|
||||||
});
|
});
|
||||||
|
|
||||||
app.on('activate', () => {
|
app.on('activate', () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user