From d6e5489e6a66c065e1d98267fdf4b0c9aaf789d1 Mon Sep 17 00:00:00 2001 From: DilankaHer <117497021+DilankaHer@users.noreply.github.com> Date: Sun, 9 Nov 2025 00:07:07 +0700 Subject: [PATCH] Add GitHub Actions workflow for CI/CD deployment --- .github/workflows/ghcr.yml | 44 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 .github/workflows/ghcr.yml diff --git a/.github/workflows/ghcr.yml b/.github/workflows/ghcr.yml new file mode 100644 index 0000000..be0ad3e --- /dev/null +++ b/.github/workflows/ghcr.yml @@ -0,0 +1,44 @@ +name: CI/CD Deploy Go-HTMX-SQLite App + +on: + push: + branches: [ "main" ] + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + # Step 1: Log in to GHCR + - name: Log in to GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GHCR_PAT }} + + # Step 2: Build Docker image + - name: Build Docker image + run: | + docker build -t ghcr.io/${{ github.repository_owner }}/my_website:latest . + + # Step 3: Push image to GHCR + - name: Push Docker image + run: | + docker push ghcr.io/${{ github.repository_owner }}/my_website:latest + + # Step 4: Deploy to server via SSH + - name: Deploy to server + uses: appleboy/ssh-action@v1 + with: + host: ${{ secrets.SERVER_IP }} + username: ${{ secrets.SERVER_USER }} + key: ${{ secrets.SERVER_SSH_KEY }} + script: | + cd /home/dilanka/my_website + docker pull ghcr.io/${{ github.repository_owner }}/my_website:latest + docker compose down + docker compose up -d