mirror of
https://github.com/gazer-x/komari.git
synced 2026-06-22 00:05:52 +08:00
83 lines
2.4 KiB
YAML
83 lines
2.4 KiB
YAML
name: Development Environment
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- dev
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build-binaries:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
#- name: Create dummy index.html
|
|
# run: |
|
|
# mkdir -p public/dist
|
|
# echo "<html><body><h1>This is komari development server.</h1></body></html>" > public/dist/index.html
|
|
|
|
- name: Clone and build frontend
|
|
run: |
|
|
git clone https://github.com/komari-monitor/komari-web web
|
|
cd web
|
|
npm install
|
|
npm run build
|
|
cd ..
|
|
mkdir -p public/dist
|
|
cp -r web/dist/* public/dist/
|
|
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: "1.23"
|
|
|
|
- name: Build application
|
|
env:
|
|
GOOS: linux
|
|
GOARCH: amd64
|
|
run: |
|
|
VERSION_SHA="${{ github.sha }}"
|
|
go build -ldflags "-X github.com/komari-monitor/komari/internal/conf.Version=dev -X github.com/komari-monitor/komari/internal/conf.CommitHash=${VERSION_SHA}" -o komari .
|
|
|
|
- name: Upload binary as artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: komari
|
|
path: komari
|
|
|
|
deploy-to-production:
|
|
needs: build-binaries
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
PRODUCTION_SERVER: ${{ vars.PRODUCTION_SERVER }}
|
|
if: github.ref == 'refs/heads/dev'
|
|
|
|
steps:
|
|
- name: Download binary
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: komari
|
|
|
|
- name: Setup SSH Key
|
|
uses: webfactory/ssh-agent@v0.8.0
|
|
with:
|
|
ssh-private-key: ${{ secrets.PRODUCTION_SSH_KEY }}
|
|
|
|
- name: Add host to known hosts
|
|
run: |
|
|
mkdir -p ~/.ssh
|
|
ssh-keyscan -H ${{ env.PRODUCTION_SERVER }} >> ~/.ssh/known_hosts 2>/dev/null
|
|
|
|
- name: Deploy to production
|
|
run: |
|
|
chmod +x komari
|
|
ssh root@${{ env.PRODUCTION_SERVER }} 'mkdir -p /opt/komari/'
|
|
ssh root@${{ env.PRODUCTION_SERVER }} 'systemctl stop komari.service || true'
|
|
ssh root@${{ env.PRODUCTION_SERVER }} 'rm -f /opt/komari/komari.old'
|
|
ssh root@${{ env.PRODUCTION_SERVER }} 'mv /opt/komari/komari /opt/komari/komari.old || true'
|
|
scp komari root@${{ env.PRODUCTION_SERVER }}:/opt/komari/komari
|
|
ssh root@${{ env.PRODUCTION_SERVER }} 'systemctl start komari.service'
|