Refactor: Streamline the build-push and deploy-dev workflow (#2852)
parent
056331981e
commit
15a6d94953
@ -1,60 +0,0 @@
|
|||||||
name: Build and Push WEB Image
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- 'main'
|
|
||||||
- 'deploy/dev'
|
|
||||||
release:
|
|
||||||
types: [ published ]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-and-push:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
if: github.event.pull_request.draft == false
|
|
||||||
steps:
|
|
||||||
- name: Set up QEMU
|
|
||||||
uses: docker/setup-qemu-action@v3
|
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v3
|
|
||||||
|
|
||||||
- name: Login to Docker Hub
|
|
||||||
uses: docker/login-action@v2
|
|
||||||
with:
|
|
||||||
username: ${{ secrets.DOCKERHUB_USER }}
|
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Extract metadata (tags, labels) for Docker
|
|
||||||
id: meta
|
|
||||||
uses: docker/metadata-action@v5
|
|
||||||
with:
|
|
||||||
images: langgenius/dify-web
|
|
||||||
tags: |
|
|
||||||
type=raw,value=latest,enable=${{ startsWith(github.ref, 'refs/tags/') }}
|
|
||||||
type=ref,event=branch
|
|
||||||
type=sha,enable=true,priority=100,prefix=,suffix=,format=long
|
|
||||||
type=raw,value=${{ github.ref_name }},enable=${{ startsWith(github.ref, 'refs/tags/') }}
|
|
||||||
|
|
||||||
- name: Build and push
|
|
||||||
uses: docker/build-push-action@v5
|
|
||||||
with:
|
|
||||||
context: "{{defaultContext}}:web"
|
|
||||||
platforms: ${{ startsWith(github.ref, 'refs/tags/') && 'linux/amd64,linux/arm64' || 'linux/amd64' }}
|
|
||||||
build-args: |
|
|
||||||
COMMIT_SHA=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }}
|
|
||||||
push: true
|
|
||||||
tags: ${{ steps.meta.outputs.tags }}
|
|
||||||
labels: ${{ steps.meta.outputs.labels }}
|
|
||||||
cache-from: type=gha
|
|
||||||
cache-to: type=gha,mode=max
|
|
||||||
|
|
||||||
- name: Deploy to server
|
|
||||||
if: github.ref == 'refs/heads/deploy/dev'
|
|
||||||
uses: appleboy/ssh-action@v0.1.8
|
|
||||||
with:
|
|
||||||
host: ${{ secrets.SSH_HOST }}
|
|
||||||
username: ${{ secrets.SSH_USER }}
|
|
||||||
key: ${{ secrets.SSH_PRIVATE_KEY }}
|
|
||||||
script: |
|
|
||||||
${{ secrets.SSH_SCRIPT }}
|
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
name: Deploy Dev
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_run:
|
||||||
|
workflows: ["Build and Push API & Web"]
|
||||||
|
branches:
|
||||||
|
- "deploy/dev"
|
||||||
|
types:
|
||||||
|
- completed
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
deploy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: |
|
||||||
|
github.event.workflow_run.conclusion == 'success'
|
||||||
|
steps:
|
||||||
|
- name: Deploy to server
|
||||||
|
uses: appleboy/ssh-action@v0.1.8
|
||||||
|
with:
|
||||||
|
host: ${{ secrets.SSH_HOST }}
|
||||||
|
username: ${{ secrets.SSH_USER }}
|
||||||
|
key: ${{ secrets.SSH_PRIVATE_KEY }}
|
||||||
|
script: |
|
||||||
|
${{ vars.SSH_SCRIPT || secrets.SSH_SCRIPT }}
|
||||||
@ -0,0 +1,43 @@
|
|||||||
|
# Variables
|
||||||
|
DOCKER_REGISTRY=langgenius
|
||||||
|
WEB_IMAGE=$(DOCKER_REGISTRY)/dify-web
|
||||||
|
API_IMAGE=$(DOCKER_REGISTRY)/dify-api
|
||||||
|
VERSION=latest
|
||||||
|
|
||||||
|
# Build Docker images
|
||||||
|
build-web:
|
||||||
|
@echo "Building web Docker image: $(WEB_IMAGE):$(VERSION)..."
|
||||||
|
docker build -t $(WEB_IMAGE):$(VERSION) ./web
|
||||||
|
@echo "Web Docker image built successfully: $(WEB_IMAGE):$(VERSION)"
|
||||||
|
|
||||||
|
build-api:
|
||||||
|
@echo "Building API Docker image: $(API_IMAGE):$(VERSION)..."
|
||||||
|
docker build -t $(API_IMAGE):$(VERSION) ./api
|
||||||
|
@echo "API Docker image built successfully: $(API_IMAGE):$(VERSION)"
|
||||||
|
|
||||||
|
# Push Docker images
|
||||||
|
push-web:
|
||||||
|
@echo "Pushing web Docker image: $(WEB_IMAGE):$(VERSION)..."
|
||||||
|
docker push $(WEB_IMAGE):$(VERSION)
|
||||||
|
@echo "Web Docker image pushed successfully: $(WEB_IMAGE):$(VERSION)"
|
||||||
|
|
||||||
|
push-api:
|
||||||
|
@echo "Pushing API Docker image: $(API_IMAGE):$(VERSION)..."
|
||||||
|
docker push $(API_IMAGE):$(VERSION)
|
||||||
|
@echo "API Docker image pushed successfully: $(API_IMAGE):$(VERSION)"
|
||||||
|
|
||||||
|
# Build all images
|
||||||
|
build-all: build-web build-api
|
||||||
|
|
||||||
|
# Push all images
|
||||||
|
push-all: push-web push-api
|
||||||
|
|
||||||
|
build-push-api: build-api push-api
|
||||||
|
build-push-web: build-web push-web
|
||||||
|
|
||||||
|
# Build and push all images
|
||||||
|
build-push-all: build-all push-all
|
||||||
|
@echo "All Docker images have been built and pushed."
|
||||||
|
|
||||||
|
# Phony targets
|
||||||
|
.PHONY: build-web build-api push-web push-api build-all push-all build-push-all
|
||||||
Loading…
Reference in New Issue