name: BASE_CI on: push: # Sequence of patterns matched against refs/tags tags: - "base.v*" env: DOCKERHUB_REPO: dataelement/ concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: build_bisheng_arm: runs-on: ubuntu-22.04-arm # if: startsWith(github.event.ref, 'refs/tags') steps: - name: checkout uses: actions/checkout@v2 - name: Get version id: get_version run: | echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//} - name: Set Environment Variable run: echo "RELEASE_VERSION=${{ steps.get_version.outputs.VERSION }}" >> $GITHUB_ENV # 登录 docker hub - name: Login to DockerHub uses: docker/login-action@v1 with: # GitHub Repo => Settings => Secrets 增加 docker hub 登录密钥信息 # DOCKERHUB_USERNAME 是 docker hub 账号名. # DOCKERHUB_TOKEN: docker hub => Account Setting => Security 创建. username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: set up Docker Buildx uses: docker/setup-buildx-action@v3 # because ibm-db driver not support linux arm64 - name: fix ibm-db lib error run: | # remove ibm-db lib sed -i '/ibm-db*/d' ./src/backend/pyproject.toml - name: Build backend arm64 and push id: docker_build_backend run: | docker buildx build --build-arg PANDOC_ARCH=arm64 --file ./src/backend/base.Dockerfile --platform linux/arm64 --provenance false --tag ${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }}-arm64 --push ./src/backend/ build_bisheng_amd: runs-on: ubuntu-latest steps: - name: checkout uses: actions/checkout@v2 - name: Get version id: get_version run: | echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//} - name: Set Environment Variable run: echo "RELEASE_VERSION=${{ steps.get_version.outputs.VERSION }}" >> $GITHUB_ENV # 登录 docker hub - name: Login to DockerHub uses: docker/login-action@v1 with: # GitHub Repo => Settings => Secrets 增加 docker hub 登录密钥信息 # DOCKERHUB_USERNAME 是 docker hub 账号名. # DOCKERHUB_TOKEN: docker hub => Account Setting => Security 创建. username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build backend amd64 and push id: docker_build_backend run: | docker buildx build --build-arg PANDOC_ARCH=amd64 --file ./src/backend/base.Dockerfile --platform linux/amd64 --provenance false --tag ${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }}-amd64 --push ./src/backend/ combine_two_images: runs-on: ubuntu-latest needs: - build_bisheng_amd - build_bisheng_arm steps: - name: Get version id: get_version run: | echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//} - name: Set Environment Variable run: echo "RELEASE_VERSION=${{ steps.get_version.outputs.VERSION }}" >> $GITHUB_ENV # 登录 docker hub - name: Login to DockerHub uses: docker/login-action@v1 with: # GitHub Repo => Settings => Secrets 增加 docker hub 登录密钥信息 # DOCKERHUB_USERNAME 是 docker hub 账号名. # DOCKERHUB_TOKEN: docker hub => Account Setting => Security 创建. username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Combine Two images run: | docker manifest create ${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }} ${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }}-arm64 ${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }}-amd64 docker manifest push ${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }} # 获取提交信息 - name: Process git message id: process_message run: | value=$(echo "${{ github.event.head_commit.message }}" | sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/%0A/g') value=$(echo "${value}" | sed -e ':a' -e 'N' -e '$!ba' -e 's/\r/%0A/g') echo "message=${value}" >> $GITHUB_ENV shell: bash # 飞书通知 - name: notify feishu uses: fjogeleit/http-request-action@v1 with: url: ${{ secrets.FEISHU_WEBHOOK }} method: 'POST' data: '{"msg_type":"post","content":{"post":{"zh_cn":{"title": "${{ steps.get_version.outputs.VERSION }}发布成功", "content": [[{"tag":"text","text":"基础镜像"},{"tag":"text","text":"${{ env.message }}"}]]}}}}'