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: # Add a new job to generate unified timestamp generate-timestamp: 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