name: Publish Docker Image to DockerHub after Merge on: workflow_dispatch: pull_request: paths: - 'version.txt' types: - closed jobs: release: name: Publish Docker Image to DockerHub if: ( github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true ) && github.repository == 'hpcaitech/ColossalAI' runs-on: [self-hosted, gpu] container: image: "hpcaitech/docker-in-docker:latest" options: --gpus all --rm -v /var/run/docker.sock:/var/run/docker.sock steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Build Docker id: build run: | version=$(cat version.txt) tag=hpcaitech/colossalai:$version docker build --build-arg http_proxy=http://172.17.0.1:7890 --build-arg https_proxy=http://172.17.0.1:7890 --build-arg VERSION=v${version} -t $tag ./docker echo "tag=${tag}" >> $GITHUB_OUTPUT - name: Log in to Docker Hub uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Push Docker image id: docker-push run: | docker push ${{ steps.build.outputs.tag }} notify: name: Notify Lark via webhook needs: release runs-on: ubuntu-latest if: ${{ always() }} steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: python-version: '3.8.14' - name: Install requests run: pip install requests - name: Notify Lark id: message-preparation run: | url=$SERVER_URL/$REPO/actions/runs/$RUN_ID if [ "$STATUS" == 'success' ] then msg="The Docker image for the latest release has been successfully built and pushed to DockerHub." else msg="Failed to build and push the Docker image for the latest release, please visit $url for details." fi echo $msg python .github/workflows/scripts/send_message_to_lark.py -m "$msg" -u $WEBHOOK_URL env: SERVER_URL: ${{github.server_url }} REPO: ${{ github.repository }} RUN_ID: ${{ github.run_id }} WEBHOOK_URL: ${{ secrets.LARK_NOTIFICATION_WEBHOOK_URL }} STATUS: ${{ needs.release.result }}