portulan/.forgejo/workflows/deploy.yaml
Gu://em_ 328404e07a
Some checks failed
Build and deploy all / build (push) Failing after 28s
Build and deploy all / deploy (push) Has been skipped
Build and deploy all / notify (push) Failing after 3s
CI fix tentative #13
2026-03-30 22:11:13 +02:00

116 lines
3.2 KiB
YAML

x-site-config: &site_matrix
site: "test"
dest: "/var/www/crashtest"
config_file: "test.json"
# - site: "harbor"
# dest: /var/www/harbor
# secret_key: "CONFIG_HARBOR"
# - site: "atlantis"
# dest: /var/www/atlantis
# secret_key: "CONFIG_ATLANTIS"
# - site: "amiral"
# dest: /var/www/amiral
# secret_key: "CONFIG_AMIRAL"
name: Build and deploy all
on:
push:
branches:
- main
jobs:
build:
runs-on: docker
strategy:
include:
- <<: *site_matrix
steps:
- name: Debug Matrix
run: |
echo "Full Matrix Site: '${{ matrix.site }}'"
echo "Full Matrix Config: '${{ matrix.config_file }}'"
echo "Dump Matrix Context: "
echo '${{ toJSON(matrix) }}'
- name: Checkout git repository
uses: actions/checkout@v4
with:
path: "source"
- name: Retrieve configs
uses: actions/checkout@v4
with:
repository: ${{ secrets.CONFIG_REPO }}
token: ${{ secrets.CONFIG_REPO_TOKEN }}
path: "configs"
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 10
- name: Setup Nodejs
uses: actions/setup-node@v4
with:
node-version: 22
- name: Install dependencies and config
run: |
cp ./configs/${{ matrix.config_file }} ./source/src/data/content.json
cd ./source
pnpm install
- name: Build the project
run: pnpm run build
- name: Save the result for deployment
uses: actions/upload-artifact@v4
with:
name: build-${{ matrix.site }}
path: dist/
deploy:
needs: build
runs-on: docker
strategy:
matrix: *site_matrix
steps:
- name: Setup SSH
env:
SSH_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
run: |
mkdir -p ~/.ssh
echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan -p ${{ secrets.SERVER_PORT }} -H ${{ secrets.SERVER_IP }} >> ~/.ssh/known_hosts
- name: Push
run: |
rsync -avz -e "ssh -p ${{ secrets.SERVER_PORT }}" --delete ./dist/ ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_IP }}:${{ matrix.dest }}
notify:
needs: deploy
runs-on: docker
if: always() # Always run
steps:
- name: Send Discord Notification
uses: https://github.com/appleboy/discord-action@master
with:
color: ${{ needs.deploy.result == 'success' && '48867' || '16711680' }}
message: |
**Deployment Report**
**Status:** ${{ needs.deploy.result }}
**Repo:** ${{ github.repository }}
**Commit:** ${{ github.sha }}
webhook_id: ${{ secrets.DISCORD_WEBHOOK_ID }}
webhook_token: ${{ secrets.DISCORD_WEBHOOK_TOKEN }}
# For later
# - name: Send Matrix Notification
# uses: s707/matrix-action@master
# with:
# server_url: https://matrix.org
# room_id: ${{ secrets.MATRIX_ROOM_ID }}
# access_token: ${{ secrets.MATRIX_ACCESS_TOKEN }}
# message: "Deployment of ${{ gitea.repository }} finished with status: ${{ needs.deploy.result }}"