Document deploy #115
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Document deploy | |
on: | |
push: | |
branches: | |
- main | |
paths: | |
- 'document/**' | |
workflow_dispatch: | |
permissions: | |
contents: read | |
packages: write | |
attestations: write | |
id-token: write | |
pull-requests: write | |
jobs: | |
sync-images: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout current repository | |
uses: actions/checkout@v4 | |
- name: Checkout target repository | |
uses: actions/checkout@v4 | |
with: | |
repository: labring/fastgpt-docs-img | |
token: ${{ secrets.DOCS_IMGS_SYNC_TOKEN }} | |
path: fastgpt-docs-img | |
- name: Sync images | |
run: | | |
# Create imgs directory if it doesn't exist | |
mkdir -p fastgpt-docs-img | |
# Copy all images from document/public/imgs to the target repository | |
cp -r document/public/imgs/* fastgpt-docs-img | |
# Navigate to target repository | |
cd fastgpt-docs-img | |
# Configure git | |
git config user.name "github-actions[bot]" | |
git config user.email "github-actions[bot]@users.noreply.github.com" | |
# Add, commit and push changes | |
git add . | |
if ! git diff --cached --quiet; then | |
git commit -m "Sync images from FastGPT document at $(date)" | |
git push | |
echo "Images synced successfully" | |
else | |
echo "No changes to sync" | |
fi | |
# Add a new job to generate unified timestamp | |
generate-timestamp: | |
needs: sync-images | |
runs-on: ubuntu-latest | |
outputs: | |
datetime: ${{ steps.datetime.outputs.datetime }} | |
steps: | |
- name: Get current datetime | |
id: datetime | |
run: echo "datetime=$(date +'%Y%m%d%H%M%S')" >> $GITHUB_OUTPUT | |
build-images: | |
needs: generate-timestamp | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
domain_config: | |
- domain: 'https://fastgpt.io' | |
suffix: 'io' | |
- domain: 'https://fastgpt.cn' | |
suffix: 'cn' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Docker meta | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
# list of Docker images to use as base name for tags | |
images: | | |
${{ secrets.ALI_IMAGE_NAME }}/fastgpt-docs | |
tags: | | |
${{ matrix.domain_config.suffix }}-${{ needs.generate-timestamp.outputs.datetime }} | |
flavor: latest=false | |
- name: Login to Aliyun | |
uses: docker/login-action@v3 | |
with: | |
registry: registry.cn-hangzhou.aliyuncs.com | |
username: ${{ secrets.ALI_HUB_USERNAME }} | |
password: ${{ secrets.ALI_HUB_PASSWORD }} | |
- name: Build and push Docker images (CN) | |
if: matrix.domain_config.suffix == 'cn' | |
uses: docker/build-push-action@v5 | |
with: | |
context: ./document | |
file: ./document/Dockerfile | |
push: true | |
tags: ${{ steps.meta.outputs.tags }} | |
labels: ${{ steps.meta.outputs.labels }} | |
platforms: linux/amd64 | |
build-args: | | |
NEXT_PUBLIC_SEARCH_APPKEY=c4708d48f2de6ac5d2f0f443979ef92a | |
NEXT_PUBLIC_SEARCH_APPID=HZAF4C2T88 | |
FASTGPT_HOME_DOMAIN=${{ matrix.domain_config.domain }} | |
SEARCH_APPWRITEKEY=${{ secrets.SEARCH_APPWRITEKEY }} | |
- name: Build and push Docker images (IO) | |
if: matrix.domain_config.suffix == 'io' | |
uses: docker/build-push-action@v5 | |
with: | |
context: ./document | |
file: ./document/Dockerfile | |
push: true | |
tags: ${{ steps.meta.outputs.tags }} | |
labels: ${{ steps.meta.outputs.labels }} | |
platforms: linux/amd64 | |
build-args: | | |
NEXT_PUBLIC_SEARCH_APPKEY=c4708d48f2de6ac5d2f0f443979ef92a | |
NEXT_PUBLIC_SEARCH_APPID=HZAF4C2T88 | |
FASTGPT_HOME_DOMAIN=${{ matrix.domain_config.domain }} | |
update-images: | |
needs: [generate-timestamp, build-images] | |
runs-on: ubuntu-24.04 | |
strategy: | |
matrix: | |
domain_config: | |
- domain: 'https://fastgpt.io' | |
suffix: 'io' | |
deployment: 'fastgpt-docs' | |
kube_config: 'KUBE_CONFIG_IO' | |
- domain: 'https://fastgpt.cn' | |
suffix: 'cn' | |
deployment: 'fastgpt-docs' | |
kube_config: 'KUBE_CONFIG_CN' | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
# Add kubeconfig setup step to handle encoding issues | |
- name: Setup kubeconfig | |
run: | | |
mkdir -p $HOME/.kube | |
echo "${{ secrets[matrix.domain_config.kube_config] }}" > $HOME/.kube/config | |
chmod 600 $HOME/.kube/config | |
- name: Update deployment image | |
run: | | |
kubectl set image deployment/${{ matrix.domain_config.deployment }} ${{ matrix.domain_config.deployment }}=${{ secrets.ALI_IMAGE_NAME }}/fastgpt-docs:${{ matrix.domain_config.suffix }}-${{ needs.generate-timestamp.outputs.datetime }} | |
- name: Annotate deployment | |
run: | | |
kubectl annotate deployment/${{ matrix.domain_config.deployment }} originImageName="${{ secrets.ALI_IMAGE_NAME }}/fastgpt-docs:${{ matrix.domain_config.suffix }}-${{ needs.generate-timestamp.outputs.datetime }}" --overwrite |