From babb807a914c4261e914479e74c2de3b105437b8 Mon Sep 17 00:00:00 2001 From: Freyja Odinthrir Date: Thu, 8 Feb 2024 13:32:34 -0800 Subject: [PATCH] Add deployment workflow --- .gitea/workflows/deploy.yml | 144 ++++++++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 .gitea/workflows/deploy.yml diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml new file mode 100644 index 0000000..21c3b0d --- /dev/null +++ b/.gitea/workflows/deploy.yml @@ -0,0 +1,144 @@ +name: Build and deploy website. +on: + push: + # paths: + # - "content/**" + # - "static/**" + # - "templates/**" + branches: + - "master" + - "gdb.lgbtqi.app-production" + +jobs: + job1: + name: Build static site, docker image, upload artifact... + runs-on: catthehacker-ubuntu + steps: + - + name: Get current date + id: date + run: echo "::set-output name=date::$(date +'%Y%m%d%H%M%S')" + - + name: Checkout the git repo... + uses: actions/checkout@v3 + with: + ref: master + - + name: Set up docker buildx... + uses: docker/setup-buildx-action@v3 + - + name: Login to gitea registry + uses: docker/login-action@v3 + with: + registry: gitea.raer.me + username: ${{ secrets.PRODUCTION_REGISTRY_USERNAME }} + password: ${{ secrets.PRODUCTION_REGISTRY_TOKEN }} + - + name: Install required system packages... + run: | + export DEBIAN_FRONTEND=noninteractive + apt update + apt upgrade -y + apt install -y curl tar p7zip-full graphicsmagick + - + name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v2 + with: + node-version: '14' + cache: 'npm' + - + name: Restore node_modules cache + uses: actions/cache@v2 + with: + path: node_modules + key: ${{ runner.os }}-node_modules-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node_modules + - + name: Restore Asset Cache + uses: actions/cache@v2 + with: + key: if-cache + path: | + ./if-cache/* + ./if-cache.json + ./twitter-cache.json + - + name: Install node dependencies + run: npm ci + - + name: Lint JS code + run: npm test + - + name: Build site + run: npm run build + - + name: Create artifact... + run: 7z a -mx=9 ./artifact.7z dist + - + name: Upload artifact... + uses: actions/upload-artifact@v3 + with: + name: artifact_${{ steps.date.outputs.date }} + path: ./artifact.7z + retention-days: 7 + - + uses: actions/checkout@v4 + with: + ref: gdb.lgbtqi.app-production + - + name: Build and push docker image to gitea package store + uses: docker/build-push-action@v5 + with: + context: . + push: true + platforms: linux/amd64 + tags: gitea.raer.me/${{ gitea.repository }}:${{ gitea.ref_name }} + job2: + needs: job1 + name: Connect to deployment host, update, and redeploy docs website. + runs-on: ubuntu-latest + steps: + - + name: Install required system packages... + run: | + export DEBIAN_FRONTEND=noninteractive + apt update + apt upgrade -y + apt install -y iputils-ping + - + name: Configure SSH... + env: + SSH_USER: ${{ secrets.PRODUCTION_SSH_USER }} + SSH_KEY: ${{ secrets.PRODUCTION_SSH_KEY }} + SSH_HOST: ${{ secrets.PRODUCTION_SSH_HOST }} + run: | + mkdir -p ~/.ssh/ + echo "$SSH_KEY" > ~/.ssh/staging.key + chmod 600 ~/.ssh/staging.key + cat >> ~/.ssh/config <