From 30eea7e7840d3dd1d28ce627f8c3688b85ae4f33 Mon Sep 17 00:00:00 2001 From: Keannu Bernasol Date: Mon, 1 Sep 2025 14:49:59 +0800 Subject: [PATCH] Update .yml files and README.md --- .woodpecker/,deploy.yml | 54 +++++++++++++++++++ .woodpecker/.build.yml | 41 ++++++++++++++ .../{.deploy.yml => .deploy_ephemeral.yml} | 18 +++++-- README.md | 28 ++++++++++ 4 files changed, 136 insertions(+), 5 deletions(-) create mode 100644 .woodpecker/,deploy.yml create mode 100644 .woodpecker/.build.yml rename .woodpecker/{.deploy.yml => .deploy_ephemeral.yml} (69%) diff --git a/.woodpecker/,deploy.yml b/.woodpecker/,deploy.yml new file mode 100644 index 0000000..e6c0584 --- /dev/null +++ b/.woodpecker/,deploy.yml @@ -0,0 +1,54 @@ +# Deployment YML for Woodpecker CI/CD +# Ephemeral volumes - Data is not persisted across deployments (i.e. database volume) +# Remove line 29 for persistent volumes + +steps: + - name: deploy + image: alpine:3.20 + environment: + SSH_HOST: + from_secret: SSH_HOST + PROJECT_DIRECTORY: + from_secret: PROJECT_DIRECTORY + SSH_KEY: + from_secret: SSH_KEY + REGISTRY_IMAGE_TAG: + from_secret: REGISTRY_IMAGE_TAG + DOCKER_VOLUME_DB: + from_secret: DOCKER_VOLUME_DB + commands: + - apk add openssh + - mkdir -p /root/.ssh/ + - echo "$SSH_KEY" | tr -d '\r' > /root/.ssh/id_rsa + - chmod 600 /root/.ssh/id_rsa + - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > /root/.ssh/config + - ssh "$SSH_HOST" " + cd "$PROJECT_DIRECTORY"; + docker-compose down; + docker image rm "$REGISTRY_IMAGE_TAG" || true; + docker volume rm "$DOCKER_VOLUME_DB" || true; + wget -O "$DOCKER_COMPOSE_URL" docker-compose.yml; + docker pull "$REGISTRY_IMAGE_TAG"; + docker-compose up -d; + docker image prune -af;" + - name: discord + image: appleboy/drone-discord + settings: + webhook_id: + from_secret: DISCORD_WEBHOOK_ID + webhook_token: + from_secret: DISCORD_WEBHOOK_TOKEN + message: > + {{#success build.status}} + {{repo.name}} deployment #{{build.number}} {{build.status}} + {{/success}} + depends_on: deploy + +when: + - branch: master + event: + - push + - manual + +depends_on: + - build diff --git a/.woodpecker/.build.yml b/.woodpecker/.build.yml new file mode 100644 index 0000000..2a3bded --- /dev/null +++ b/.woodpecker/.build.yml @@ -0,0 +1,41 @@ +# Build YML for Woodpecker CI/CD + +labels: + platform: linux/amd64 + +steps: + - name: build + image: docker + environment: + FORGEJO_REGISTRY_URL: + from_secret: FORGEJO_REGISTRY_URL + FORGEJO_REGISTRY_USERNAME: + from_secret: FORGEJO_REGISTRY_USERNAME + FORGEJO_REGISTRY_PASSWORD: + from_secret: FORGEJO_REGISTRY_PASSWORD + REGISTRY_IMAGE_TAG: + from_secret: REGISTRY_IMAGE_TAG + commands: + - docker build -t "$REGISTRY_IMAGE_TAG" . + - echo "$FORGEJO_REGISTRY_PASSWORD" | docker login "$FORGEJO_REGISTRY_URL" --password-stdin -u "$FORGEJO_REGISTRY_USERNAME" + - docker push "$REGISTRY_IMAGE_TAG" + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - name: discord + image: appleboy/drone-discord + settings: + webhook_id: + from_secret: DISCORD_WEBHOOK_ID + webhook_token: + from_secret: DISCORD_WEBHOOK_TOKEN + message: > + {{#success build.status}} + {{repo.name}} build #{{build.number}} {{build.status}} + {{/success}} + depends_on: build + +when: + - branch: master + event: + - push + - manual \ No newline at end of file diff --git a/.woodpecker/.deploy.yml b/.woodpecker/.deploy_ephemeral.yml similarity index 69% rename from .woodpecker/.deploy.yml rename to .woodpecker/.deploy_ephemeral.yml index 588d4ba..75d3846 100644 --- a/.woodpecker/.deploy.yml +++ b/.woodpecker/.deploy_ephemeral.yml @@ -1,3 +1,6 @@ +# Deployment file for Woodpecker CI/CD +# No volumes - Suited for deployments without local databases (i.e. external PostgreSQL instance) + steps: - name: deploy image: alpine:3.20 @@ -20,15 +23,17 @@ steps: cd "$PROJECT_DIRECTORY"; docker-compose down; docker image rm "$REGISTRY_IMAGE_TAG" || true; - git restore . && git pull origin "$CI_COMMIT_BRANCH"; - docker-compose up -d;" + wget -O "$DOCKER_COMPOSE_URL" docker-compose.yml; + docker pull "$REGISTRY_IMAGE_TAG"; + docker-compose up -d; + docker image prune -af;" - name: discord image: appleboy/drone-discord settings: webhook_id: - from_secret: SERVICE_QUEUE_DISCORD_WEBHOOK_ID + from_secret: DISCORD_WEBHOOK_ID webhook_token: - from_secret: SERVICE_QUEUE_DISCORD_WEBHOOK_TOKEN + from_secret: DISCORD_WEBHOOK_TOKEN message: > {{#success build.status}} {{repo.name}} deployment #{{build.number}} {{build.status}} @@ -36,7 +41,10 @@ steps: depends_on: deploy when: - - branch: main # Update branch name accordingly + - branch: master event: - push - manual + +depends_on: + - build diff --git a/README.md b/README.md index 883f7a3..352a894 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,31 @@ # Service Queue Templates This repository contains a collection of templates tailored for DevOps practices designed to assist with Service Queue deployments. + +## `build.yml` Environment Variables + +| Variable Name | Description | Value Value | +|----------------------------|--------------------------------------------------|----------------------------------------------------| +| `FORGEJO_REGISTRY_URL` | Artifact registry to push built image to | `git.06222001.xyz` | +| `FORGEJO_REGISTRY_USERNAME`| Credentials used to push to the image registry | `N/A (redacted)` | +| `FORGEJO_REGISTRY_PASSWORD`| Credentials used to push to the image registry | `N/A (redacted)` | +| `REGISTRY_IMAGE_TAG` | Docker image container tag to push to registry | `git.06222001.xyz/keannu125/drf_template:latest` | +| `DISCORD_WEBHOOK_ID` | Discord Webhook ID used for Build Status Updates | `N/A (redacted)` | + +## `deploy.yml` Environment Variables + +| Variable Name | Description | Value | +|----------------------|-----------------------------------------------------|--------------------------------------| +| `SSH_HOST` | SSH host for deployment | `N/A (redacted)` | +| `PROJECT_DIRECTORY` | Directory on remote host for deployment | `/mnt/nvme/files/docker projects/drf_template` | +| `SSH_KEY` | Private SSH key for authentication | `N/A (redacted)` | +| `REGISTRY_IMAGE_TAG` | Docker image tag to deploy | `git.06222001.xyz/keannu125/drf_template:latest` | +| `DOCKER_VOLUME_DB` | Docker volume name for the database | `drf_template_db_data` | +| `DOCKER_COMPOSE_URL` | URL to fetch docker-compose.yml | `https://raw.githubusercontent.com/lemeow125/DRF_Template/refs/heads/master/docker-compose.prod.yml` | +| `DISCORD_WEBHOOK_ID` | Discord Webhook ID for deployment notifications | `N/A (redacted)` | +| `DISCORD_WEBHOOK_TOKEN` | Discord Webhook Token for deployment notifications | `N/A (redacted)` | + +> **Note:** +> Actual values may differ based on your pipeline configuration. +> Usage of `.deploy_ephemeral.yml` does not require `DOCKER_VOLUME_DB` +> For more information, consult your Woodpecker CI/CD maintainer. \ No newline at end of file