summaryrefslogtreecommitdiff
diff options
from:
to:
context:
space:
mode:
authorGravatar Saya Andy <145215889+SayaAndy@users.noreply.github.com> 2025-08-16 23:15:44 +0700
committerGravatar GitHub <noreply@github.com> 2025-08-16 23:15:44 +0700
commit8422d7b01b290dece0c8aaf0f5b68cc69fca774d (patch)
tree93c723e50dadfe04a32bfc38ba9d4b916939dc04
parentb1a1651ad7e7faf7a87aca8fea1cdad156f3606e (diff)
parent2da6a5f4a666da470d8c2170bb9246f0f5804da5 (diff)
downloadweb-8422d7b01b290dece0c8aaf0f5b68cc69fca774d.tar.gz
web-8422d7b01b290dece0c8aaf0f5b68cc69fca774d.zip
v0.5.10: environment splitv0.5.10
feat: split deploy into 2 environments fix: rm server exec in repo
-rw-r--r--.github/workflows/build-and-deploy-prod.yml (renamed from .github/workflows/build-and-deploy.yml)5
-rw-r--r--.github/workflows/build-and-deploy-stage.yml89
-rw-r--r--Dockerfile9
-rw-r--r--config/config.prod.yaml20
-rw-r--r--config/config.stage.yaml (renamed from config/config.yaml)2
-rw-r--r--deploy/playbook.yml1
-rwxr-xr-xsaya-today-webbin19752119 -> 0 bytes
7 files changed, 119 insertions, 7 deletions
diff --git a/.github/workflows/build-and-deploy.yml b/.github/workflows/build-and-deploy-prod.yml
index ac5fa1f..53e307e 100644
--- a/.github/workflows/build-and-deploy.yml
+++ b/.github/workflows/build-and-deploy-prod.yml
@@ -1,4 +1,4 @@
-name: Publish Docker image
+name: Docker image building and publishing onto Production
on:
push:
tags:
@@ -37,6 +37,7 @@ jobs:
push: true
tags: |
ghcr.io/sayaandy/saya-today-web:latest
+ ghcr.io/sayaandy/saya-today-web:stable
ghcr.io/sayaandy/saya-today-web:${{ github.ref_name }}
deploy:
@@ -74,4 +75,4 @@ jobs:
ANSIBLE_HOST_KEY_CHECKING: False
working-directory: ./deploy
run: |
- ansible-playbook -i inventory.yml -l stage playbook.yml --private-key ~/.ssh/id_ed25519 -u svc_github -e saya_today_web_b2_key_id=${{ secrets.B2_KEY_ID }} -e saya_today_web_b2_application_key=${{ secrets.B2_APPLICATION_KEY }} -e saya_today_web_tag=${{ github.ref_name }}
+ ansible-playbook -i inventory.yml -l prod playbook.yml --private-key ~/.ssh/id_ed25519 -u svc_github -e saya_today_web_b2_key_id=${{ secrets.B2_KEY_ID }} -e saya_today_web_b2_application_key=${{ secrets.B2_APPLICATION_KEY }} -e saya_today_web_environment=prod -e saya_today_web_tag=${{ github.ref_name }}
diff --git a/.github/workflows/build-and-deploy-stage.yml b/.github/workflows/build-and-deploy-stage.yml
new file mode 100644
index 0000000..104d9ac
--- /dev/null
+++ b/.github/workflows/build-and-deploy-stage.yml
@@ -0,0 +1,89 @@
+name: Docker image building and publishing onto Stage
+on:
+ push:
+ branches: [stage]
+jobs:
+ build-and-push:
+ if: github.repository == 'SayaAndy/saya-today-web'
+ runs-on: ubuntu-latest
+ environment: Stage
+ permissions:
+ packages: write
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Generate output.css with tailwindcss
+ uses: ZoeyVid/tailwindcss-update@main
+ with:
+ input: static/input.css
+ output: static/output.css
+ params: "--minify"
+
+ - name: Set up QEMU
+ uses: docker/setup-qemu-action@v3
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v3
+
+ - name: Login to GitHub Container Registry
+ uses: docker/login-action@v3
+ with:
+ registry: ghcr.io
+ username: ${{ github.repository_owner }}
+ password: ${{ secrets.GHCR_TOKEN }}
+
+ - name: Set github short sha
+ id: ghss_vars
+ run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
+
+ - name: Build and push
+ uses: docker/build-push-action@v6
+ with:
+ context: .
+ file: ./Dockerfile
+ push: true
+ tags: |
+ ghcr.io/sayaandy/saya-today-web:latest
+ ghcr.io/sayaandy/saya-today-web:commit-${{ steps.ghss_vars.outputs.sha_short }}
+
+ deploy:
+ if: github.repository == 'SayaAndy/saya-today-web'
+ runs-on: ubuntu-latest
+ environment: Stage
+ needs: [build-and-push]
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Set up SSH connection for pl.saya.today
+ run: |
+ mkdir -p ~/.ssh
+ (cat <<EOF
+ ${{ secrets.SVC_GITHUB_PK }}
+ EOF
+ ) > ~/.ssh/id_ed25519
+ chmod 600 ~/.ssh/id_ed25519
+ sed -i 's/\r$//' ~/.ssh/id_ed25519
+ ssh-keyscan -H pl.saya.today >> ~/.ssh/known_hosts
+
+ - name: Test SSH connection
+ run: |
+ ssh -o ConnectTimeout=10 -i ~/.ssh/id_ed25519 svc_github@pl.saya.today "echo 'SSH connection successful'"
+
+ - name: Install Ansible
+ shell: bash
+ run: |
+ sudo apt update
+ sudo apt install -y ansible
+
+ - name: Set github short sha
+ id: ghss_vars
+ run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
+
+ - name: Run Ansible playbook
+ env:
+ ANSIBLE_HOST_KEY_CHECKING: False
+ working-directory: ./deploy
+ run: |
+ ansible-playbook -i inventory.yml -l stage playbook.yml --private-key ~/.ssh/id_ed25519 -u svc_github -e saya_today_web_b2_key_id=${{ secrets.B2_KEY_ID }} -e saya_today_web_b2_application_key=${{ secrets.B2_APPLICATION_KEY }} -e saya_today_web_environment=stage -e saya_today_web_tag=commit-${{ steps.ghss_vars.outputs.sha_short }}
diff --git a/Dockerfile b/Dockerfile
index 45d3e8e..cd3e0eb 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -2,20 +2,21 @@ FROM golang:1.24.5-alpine3.22 AS build-stage
WORKDIR /builddir
COPY . .
-RUN go build -o sayana-demo .
+RUN go build -o sayana-web .
FROM alpine:3.22.1 AS runtime-stage
+ENV ENVIRONMENT=""
ENV B2_KEY_ID=""
ENV B2_APPLICATION_KEY=""
WORKDIR /app
-COPY --from=build-stage /builddir/sayana-demo /app/sayana-demo
+COPY --from=build-stage /builddir/sayana-web /app/sayana-web
COPY --from=build-stage /builddir/static /app/static
COPY --from=build-stage /builddir/views /app/views
COPY --from=build-stage /builddir/locale/*.yaml /app/locale/
-COPY --from=build-stage /builddir/config/config.yaml /app/config.yaml
+COPY --from=build-stage /builddir/config/config*.yaml /app/config/
RUN apk add --no-cache tzdata
-ENTRYPOINT [ "/app/sayana-demo", "-c", "/app/config.yaml" ]
+ENTRYPOINT /app/sayana-web -c /app/config/config.${ENVIRONMENT}.yaml
diff --git a/config/config.prod.yaml b/config/config.prod.yaml
new file mode 100644
index 0000000..2d050bf
--- /dev/null
+++ b/config/config.prod.yaml
@@ -0,0 +1,20 @@
+logLevel: info
+blogPages:
+ storage:
+ type: b2
+ config:
+ bucketName: sayana-pages
+ region: eu-central-003
+ prefix: 'prod-'
+ keyID: '${B2_KEY_ID}'
+ applicationKey: '${B2_APPLICATION_KEY}'
+localePath: ./locale/
+availableLanguages:
+ - name: ru
+ alt: Русский
+ flag: https://f003.backblazeb2.com/file/sayana-static/flags/ru.svg
+ locFile: localization.ru.yaml
+ - name: en
+ alt: English
+ flag: https://f003.backblazeb2.com/file/sayana-static/flags/gb.svg
+ locFile: localization.en.yaml
diff --git a/config/config.yaml b/config/config.stage.yaml
index dac7b9a..a34a33e 100644
--- a/config/config.yaml
+++ b/config/config.stage.yaml
@@ -5,7 +5,7 @@ blogPages:
config:
bucketName: sayana-pages
region: eu-central-003
- prefix: ''
+ prefix: 'stage-'
keyID: '${B2_KEY_ID}'
applicationKey: '${B2_APPLICATION_KEY}'
localePath: ./locale/
diff --git a/deploy/playbook.yml b/deploy/playbook.yml
index 773bb61..ca22ac3 100644
--- a/deploy/playbook.yml
+++ b/deploy/playbook.yml
@@ -12,6 +12,7 @@
env:
B2_KEY_ID: "{{ saya_today_web_b2_key_id }}"
B2_APPLICATION_KEY: "{{ saya_today_web_b2_application_key }}"
+ ENVIRONMENT: "{{ saya_today_web_environment }}"
network_mode: caddy
networks:
- name: caddy
diff --git a/saya-today-web b/saya-today-web
deleted file mode 100755
index b6522e8..0000000
--- a/saya-today-web
+++ /dev/null
Binary files differ