Switch from GitHub Actions to self-hosted Gitea CI/CD
Some checks failed
Deploy hatch.surf / build-and-deploy (push) Failing after 1m37s
Some checks failed
Deploy hatch.surf / build-and-deploy (push) Failing after 1m37s
- Removed .github/workflows/deploy.yml (GitHub Actions) - Added .gitea/workflows/deploy.yml (Gitea Actions) - Added setup-gitea.sh for installing Gitea - Added configure-gitea.sh for configuring Gitea - Self-hosted Git + CI/CD on local server - GitHub org only for final open-source projects Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
parent
17eee790c4
commit
8bce1cb670
38
.gitea/workflows/deploy.yml
Normal file
38
.gitea/workflows/deploy.yml
Normal file
@ -0,0 +1,38 @@
|
||||
name: Deploy hatch.surf
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
IMAGE_NAME: hatch-web
|
||||
|
||||
jobs:
|
||||
build-and-deploy:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Build Docker image
|
||||
run: |
|
||||
docker build -t ${{ env.IMAGE_NAME }}:${{ github.sha }} .
|
||||
docker tag ${{ env.IMAGE_NAME }}:${{ github.sha }} ${{ env.IMAGE_NAME }}:latest
|
||||
|
||||
- name: Deploy to server
|
||||
uses: appleboy/ssh-action@v1
|
||||
with:
|
||||
host: ${{ secrets.SERVER_HOST }}
|
||||
username: ${{ secrets.SERVER_USER }}
|
||||
key: ${{ secrets.SERVER_SSH_KEY }}
|
||||
script: |
|
||||
cd /home/nara/repos/hatch-surf
|
||||
git pull origin main
|
||||
docker compose build
|
||||
docker compose up -d --remove-orphans
|
||||
docker system prune -f
|
||||
63
.github/workflows/deploy.yml
vendored
63
.github/workflows/deploy.yml
vendored
@ -1,63 +0,0 @@
|
||||
name: Deploy hatch.surf
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
REGISTRY: ghcr.io
|
||||
IMAGE_NAME: ${{ github.repository }}/hatch-web
|
||||
|
||||
jobs:
|
||||
build-and-push:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Log in to Container Registry
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ${{ env.REGISTRY }}
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Extract metadata
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||
tags: |
|
||||
type=sha
|
||||
type=ref,event=branch
|
||||
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
|
||||
deploy:
|
||||
needs: build-and-push
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Deploy to server
|
||||
uses: appleboy/ssh-action@v1
|
||||
with:
|
||||
host: ${{ secrets.SERVER_HOST }}
|
||||
username: ${{ secrets.SERVER_USER }}
|
||||
key: ${{ secrets.SERVER_SSH_KEY }}
|
||||
script: |
|
||||
cd /home/nara/repos/hatch-surf
|
||||
git pull origin main
|
||||
docker compose pull
|
||||
docker compose up -d --remove-orphans
|
||||
docker system prune -f
|
||||
53
configure-gitea.sh
Executable file
53
configure-gitea.sh
Executable file
@ -0,0 +1,53 @@
|
||||
#!/bin/bash
|
||||
# Configure Gitea for El Foundation
|
||||
# Run after initial Gitea setup
|
||||
|
||||
set -e
|
||||
|
||||
GITEA_URL="http://localhost:3000"
|
||||
GITEA_TOKEN="${GITEA_TOKEN:-your-admin-token}"
|
||||
|
||||
echo "=== Configuring Gitea for El Foundation ==="
|
||||
|
||||
# Create organization
|
||||
echo "Creating El Foundation organization..."
|
||||
curl -X POST "$GITEA_URL/api/v1/orgs" \
|
||||
-H "Authorization: token $GITEA_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"username": "el-foundation",
|
||||
"full_name": "El Foundation",
|
||||
"description": "El Foundation - Open Source Projects",
|
||||
"website": "",
|
||||
"location": "",
|
||||
"visibility": "public"
|
||||
}'
|
||||
|
||||
# Create hatch-surf repository
|
||||
echo "Creating hatch-surf repository..."
|
||||
curl -X POST "$GITEA_URL/api/v1/orgs/el-foundation/repos" \
|
||||
-H "Authorization: token $GITEA_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"name": "hatch-surf",
|
||||
"description": "Hatch.surf web application",
|
||||
"private": false,
|
||||
"auto_init": false,
|
||||
"default_branch": "main"
|
||||
}'
|
||||
|
||||
# Add remote to local repo
|
||||
echo "Adding Gitea remote to local repo..."
|
||||
cd /home/nara/apps/web
|
||||
git remote add origin http://localhost:3000/el-foundation/hatch-surf.git
|
||||
git push -u origin main
|
||||
|
||||
echo ""
|
||||
echo "=== Configuration Complete ==="
|
||||
echo "Repository: $GITEA_URL/el-foundation/hatch-surf"
|
||||
echo ""
|
||||
echo "To enable Gitea Actions (CI/CD):"
|
||||
echo "1. Go to repository Settings > Actions"
|
||||
echo "2. Enable Actions"
|
||||
echo "3. Add secrets: SERVER_HOST, SERVER_USER, SERVER_SSH_KEY"
|
||||
echo "4. Push to main branch to trigger deployment"
|
||||
54
setup-gitea.sh
Executable file
54
setup-gitea.sh
Executable file
@ -0,0 +1,54 @@
|
||||
#!/bin/bash
|
||||
# Gitea Setup Script for El Foundation
|
||||
# Self-hosted Git + CI/CD
|
||||
|
||||
set -e
|
||||
|
||||
GITEA_VERSION="1.22"
|
||||
GITEA_PORT="3000"
|
||||
GITEA_DATA="/var/lib/gitea"
|
||||
GITEA_CONFIG="/etc/gitea"
|
||||
|
||||
echo "=== Setting up Gitea for El Foundation ==="
|
||||
|
||||
# Install Gitea
|
||||
echo "Installing Gitea..."
|
||||
wget -O /usr/local/bin/gitea https://dl.gitea.com/gitea/${GITEA_VERSION}.0/gitea-${GITEA_VERSION}.0-linux-amd64
|
||||
chmod +x /usr/local/bin/gitea
|
||||
|
||||
# Create directories
|
||||
sudo mkdir -p $GITEA_DATA $GITEA_CONFIG
|
||||
sudo chown -R nara:nara $GITEA_DATA $GITEA_CONFIG
|
||||
|
||||
# Create systemd service
|
||||
cat > /tmp/gitea.service << 'EOF'
|
||||
[Unit]
|
||||
Description=Gitea (Git with a cup of tea)
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=nara
|
||||
Group=nara
|
||||
WorkingDirectory=/var/lib/gitea
|
||||
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
|
||||
Restart=always
|
||||
Environment=USER=nara HOME=/home/nara GITEA_WORK_DIR=/var/lib/gitea
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
sudo mv /tmp/gitea.service /etc/systemd/system/
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable gitea
|
||||
sudo systemctl start gitea
|
||||
|
||||
echo "Gitea installed and started on port $GITEA_PORT"
|
||||
echo "Access at http://localhost:$GITEA_PORT"
|
||||
echo ""
|
||||
echo "Next steps:"
|
||||
echo "1. Open http://localhost:$GITEA_PORT in browser"
|
||||
echo "2. Complete initial setup"
|
||||
echo "3. Create admin account"
|
||||
echo "4. Run: ./configure-gitea.sh"
|
||||
Loading…
Reference in New Issue
Block a user