Skip to content

Merge pull request #56 from bob798/chore/article-source-type-refactor #64

Merge pull request #56 from bob798/chore/article-source-type-refactor

Merge pull request #56 from bob798/chore/article-source-type-refactor #64

Workflow file for this run

name: Build and Deploy
on:
push:
branches: [main]
workflow_dispatch:
env:
IMAGE_PATH: ${{ secrets.ALIYUN_REGISTRY }}/${{ secrets.ALIYUN_NAMESPACE }}/speakeasy
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Aliyun ACR
uses: docker/login-action@v3
with:
registry: ${{ secrets.ALIYUN_REGISTRY }}
username: ${{ secrets.ALIYUN_USERNAME }}
password: ${{ secrets.ALIYUN_PASSWORD }}
- name: Generate version
id: version
run: |
BASE=$(cat VERSION | tr -d '\n')
SHORT_SHA=$(echo "${{ github.sha }}" | cut -c1-7)
DATE=$(date -u +%Y%m%d)
FULL="${BASE}-${DATE}-${SHORT_SHA}"
echo "full=$FULL" >> "$GITHUB_OUTPUT"
echo "Generated version: $FULL"
- name: Build and push image
uses: docker/build-push-action@v6
with:
context: .
push: true
build-args: APP_VERSION=${{ steps.version.outputs.full }}
tags: |
${{ env.IMAGE_PATH }}:latest
${{ env.IMAGE_PATH }}:v${{ steps.version.outputs.full }}
${{ env.IMAGE_PATH }}:${{ github.sha }}
deploy:
needs: build-and-push
runs-on: ubuntu-latest
if: ${{ vars.AUTO_DEPLOY == 'true' }}
steps:
- name: Deploy to VPS
uses: appleboy/ssh-action@v1
env:
APP_IMAGE: ${{ env.IMAGE_PATH }}:latest
ALIYUN_REGISTRY: ${{ secrets.ALIYUN_REGISTRY }}
ALIYUN_USERNAME: ${{ secrets.ALIYUN_USERNAME }}
ALIYUN_PASSWORD: ${{ secrets.ALIYUN_PASSWORD }}
with:
host: ${{ secrets.VPS_HOST }}
username: ${{ secrets.VPS_USER }}
key: ${{ secrets.VPS_SSH_KEY }}
envs: APP_IMAGE,ALIYUN_REGISTRY,ALIYUN_USERNAME,ALIYUN_PASSWORD
command_timeout: 10m
script: |
set -e
cd ${{ secrets.VPS_APP_DIR }}
CI=1 SKIP_GIT=1 bash scripts/deploy_vps.sh