Skip to content

Deploy

Deploy #4

Workflow file for this run

name: Deploy
on:
pull_request:
branches: ["main"]
types: ["closed"]
workflow_dispatch:
jobs:
build:
name: Build Go App
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.24"
- name: Install dependencies
run: go mod tidy
- name: Build
run: make build
- name: Create .env file
run: |
echo "DEPLOY_ENV=production" >> bin/.env
echo "DB_USER=${{ vars.DB_USER }}" >> bin/.env
echo "DB_PASSWORD=${{ secrets.DB_PASSWORD }}" >> bin/.env
echo "DB_NAME=${{ vars.DB_NAME }}" >> bin/.env
echo "DB_HOST=${{ vars.DB_HOST }}" >> bin/.env
echo "DB_PORT=${{ vars.DB_PORT }}" >> bin/.env
echo "DB_SSLMODE=${{ vars.DB_SSLMODE }}" >> bin/.env
echo "CORS_ALLOWED_ORIGINS=${{ vars.CORS_ALLOWED_ORIGINS }}" >> bin/.env
echo "GIN_MODE=production" >> bin/.env
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: go-app
path: |
bin/portfolio-backend
bin/.env
deploy:
name: Deploy to AWS
needs: build
runs-on: ubuntu-latest
steps:
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: go-app
path: bin/
- name: Send files to AWS
uses: easingthemes/ssh-deploy@main
with:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
REMOTE_HOST: ${{ vars.REMOTE_HOST }}
REMOTE_USER: portfolio
SOURCE: "bin/portfolio-backend bin/.env"
TARGET: "/home/portfolio/portfolio-builder/backend"
SCRIPT_AFTER: |
sudo chmod 774 /home/portfolio/portfolio-builder/backend/portfolio-backend
sudo chmod 644 /home/portfolio/portfolio-builder/backend/.env
sudo systemctl restart portfolio-builder