Skip to content

Merge pull request #59 from KHU-RETURN/fix/storage-folder-transfer #20

Merge pull request #59 from KHU-RETURN/fix/storage-folder-transfer

Merge pull request #59 from KHU-RETURN/fix/storage-folder-transfer #20

Workflow file for this run

name: Go CD Pipeline
on:
push:
branches: [ "main" ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Tailscale
uses: tailscale/github-action@v2
with:
authkey: ${{ secrets.TS_AUTHKEY }}
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.26'
- name: Run Tests
run: go test ./... -v
- name: Build
run: GOOS=linux GOARCH=amd64 go build -v -o server ./cmd/api/main.go
- name: Upload build artifact
uses: actions/upload-artifact@v4
with:
name: rcp-server-${{ github.sha }}
path: server
retention-days: 1
- name: Transfer artifacts (SCP)
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SERVER_KEY }}
source: "server,deploy/systemd/rcp-server.service"
target: "/tmp/rcp-deploy"
- name: Install binary
uses: appleboy/ssh-action@v0.1.10
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SERVER_KEY }}
script: |
set -euo pipefail
mkdir -p ~/rcp-server
install -m 0755 /tmp/rcp-deploy/server ~/rcp-server/server
- name: Write .env file
uses: appleboy/ssh-action@v0.1.10
env:
ENV_LIST: RCP_JWT_SECRET,OS_AUTH_URL,OS_USERNAME,OS_PASSWORD,OS_PROJECT_NAME,OS_USER_DOMAIN_NAME,OS_PROJECT_ID,CF_ACCESS_CLIENT_ID,CF_ACCESS_CLIENT_SECRET,GG_OAUTH_CLIENT,GG_OAUTH_SECRET,GG_REDIRECT_URL,DB_DRIVER,DB_DSN,PORT,RCP_NS_PROXY_SOCK,RCP_WEB_CONSOLE_BASE_URL,RCP_WEB_CONSOLE_ALLOWED_ORIGINS,FRONTEND_URL,RCP_ALLOWED_FRONTEND_ORIGIN_PATTERN,RCP_AUTH_COOKIE_SAMESITE,RCP_AUTH_COOKIE_SECURE,RCP_ALLOWED_ORIGINS,RCP_ALLOWED_ORIGIN_PATTERN,RCP_DEFAULT_NETWORK_ID
FRONTEND_URL: ${{ secrets.FRONTEND_URL }}
RCP_JWT_SECRET: ${{ secrets.RCP_JWT_SECRET }}
OS_AUTH_URL: ${{ secrets.OS_AUTH_URL }}
OS_USERNAME: ${{ secrets.OS_USERNAME }}
OS_PASSWORD: ${{ secrets.OS_PASSWORD }}
OS_PROJECT_NAME: ${{ secrets.OS_PROJECT_NAME }}
OS_USER_DOMAIN_NAME: ${{ secrets.OS_USER_DOMAIN_NAME }}
OS_PROJECT_ID: ${{ secrets.OS_PROJECT_ID }}
CF_ACCESS_CLIENT_ID: ${{ secrets.CF_ACCESS_CLIENT_ID }}
CF_ACCESS_CLIENT_SECRET: ${{ secrets.CF_ACCESS_CLIENT_SECRET }}
GG_OAUTH_CLIENT: ${{ secrets.GG_OAUTH_CLIENT }}
GG_OAUTH_SECRET: ${{ secrets.GG_OAUTH_SECRET }}
GG_REDIRECT_URL: ${{ secrets.GG_REDIRECT_URL }}
DB_DRIVER: ${{ secrets.DB_DRIVER }}
DB_DSN: ${{ secrets.DB_DSN }}
PORT: ${{ secrets.PORT }}
RCP_NS_PROXY_SOCK: ${{ secrets.RCP_NS_PROXY_SOCK }}
RCP_WEB_CONSOLE_BASE_URL: ${{ secrets.RCP_WEB_CONSOLE_BASE_URL }}
RCP_WEB_CONSOLE_ALLOWED_ORIGINS: ${{ secrets.RCP_WEB_CONSOLE_ALLOWED_ORIGINS }}
RCP_ALLOWED_FRONTEND_ORIGIN_PATTERN: ${{ secrets.RCP_ALLOWED_FRONTEND_ORIGIN_PATTERN }}
RCP_AUTH_COOKIE_SAMESITE: ${{ secrets.RCP_AUTH_COOKIE_SAMESITE }}
RCP_AUTH_COOKIE_SECURE: ${{ secrets.RCP_AUTH_COOKIE_SECURE }}
RCP_ALLOWED_ORIGINS: ${{ secrets.RCP_ALLOWED_ORIGINS }}
RCP_ALLOWED_ORIGIN_PATTERN: ${{ secrets.RCP_ALLOWED_ORIGIN_PATTERN }}
RCP_DEFAULT_NETWORK_ID: ${{ secrets.RCP_DEFAULT_NETWORK_ID }}
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SERVER_KEY }}
envs: ${{ env.ENV_LIST }}
script: |
set -euo pipefail
mkdir -p ~/rcp-server
umask 077
: > ~/rcp-server/.env
IFS=',' read -ra _VARS <<< "${{ env.ENV_LIST }}"
for _v in "${_VARS[@]}"; do
printf '%s=%s\n' "$_v" "${!_v}" >> ~/rcp-server/.env
done
chmod 0600 ~/rcp-server/.env
- name: Install systemd unit
uses: appleboy/ssh-action@v0.1.10
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SERVER_KEY }}
script: |
set -euo pipefail
sudo install -m 0644 -o root -g root \
/tmp/rcp-deploy/deploy/systemd/rcp-server.service \
/etc/systemd/system/rcp-server.service
sudo systemctl daemon-reload
sudo systemctl enable rcp-server
- name: Restart service
uses: appleboy/ssh-action@v0.1.10
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SERVER_KEY }}
script: |
set -euo pipefail
sudo systemctl restart rcp-server
- name: Cleanup deploy artifacts
if: always()
uses: appleboy/ssh-action@v0.1.10
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SERVER_KEY }}
script: |
set -euo pipefail
rm -rf /tmp/rcp-deploy