name: Build Image on: push: branches: - main paths: - "**.go" - "!**_test.go" - "build/**" tags: - v* jobs: release: strategy: matrix: components: [core, swagger] runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v3 with: fetch-depth: 20 - uses: dorny/paths-filter@v2 if: ${{ !startsWith(github.ref_name, 'v') }} id: changes with: filters: | go: - '**.go' - 'build/core/Dockerfile' api: - 'openapi/**' - 'build/swagger/build.sh' - 'build/swagger/Dockerfile' - name: Docker meta id: meta uses: docker/metadata-action@v4 with: flavor: | latest=false images: | ${{ secrets.DOCKERHUB_USERNAME }}/openimsdk-${{ matrix.components }} registry.cn-hangzhou.aliyuncs.com/${{ secrets.ALIREGISTRY_NAMESPACE }}/openimsdk-${{ matrix.components }} tags: | type=ref,event=branch type=sha,prefix={{branch}}-,enable=${{ github.ref_type == 'branch' }} type=ref,event=tag - name: Login to Docker Hub uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Login to Ali Container Registry uses: docker/login-action@v2 with: registry: registry.cn-hangzhou.aliyuncs.com username: ${{ secrets.ALIREGISTRY_USERNAME }} password: ${{ secrets.ALIREGISTRY_TOKEN }} - name: Condition id: condition run: | echo "run=${{ startsWith(github.ref_name, 'v') || ((steps.changes.outputs.go == 'true' && (matrix.components == 'core' || matrix.components == 'job')) || (steps.changes.outputs.api == 'true' && matrix.components == 'swagger')) }}" >> $GITHUB_OUTPUT - name: Set up QEMU if: ${{ steps.condition.outputs.run == 'true' }} uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx if: ${{ steps.condition.outputs.run == 'true' }} uses: docker/setup-buildx-action@v2 - name: Build and push if: ${{ steps.condition.outputs.run == 'true' }} uses: docker/build-push-action@v3 with: context: . file: ./build/${{ matrix.components }}/Dockerfile platforms: linux/amd64 push: true tags: ${{ steps.meta.outputs.tags }}