name: Build Docker Image on: ## 发布release的时候会自动构建 release: types: [published] workflow_dispatch: jobs: publish-docker-image: runs-on: ubuntu-latest name: Build image steps: - name: Checkout uses: actions/checkout@v2 with: persist-credentials: false - name: judge has env GITHUB_REF # 如果没有GITHUB_REF环境变量,则把github.ref变量赋值给GITHUB_REF run: | if [ -z "$GITHUB_REF" ]; then export GITHUB_REF=${{ github.ref }} echo $GITHUB_REF fi - name: Check version id: check_version run: | echo $GITHUB_REF # 如果是tag,则去掉refs/tags/前缀 if [[ $GITHUB_REF == refs/tags/* ]]; then echo "It's a tag" echo $GITHUB_REF echo $GITHUB_REF | awk -F '/' '{print $3}' echo ::set-output name=version::$(echo $GITHUB_REF | awk -F '/' '{print $3}') else echo "It's not a tag" echo $GITHUB_REF echo ::set-output name=version::${GITHUB_REF} fi - name: Login to Registry run: docker login --username=${{ secrets.DOCKER_USERNAME }} --password ${{ secrets.DOCKER_PASSWORD }} - name: Create Buildx run: docker buildx create --name mybuilder --use - name: Build for Release # only relase, exlude pre-release if: ${{ github.event.release.prerelease == false }} run: docker buildx build --platform linux/amd64 -t rockchin/langbot:${{ steps.check_version.outputs.version }} -t rockchin/langbot:latest . --push - name: Build for Pre-release # no update for latest tag if: ${{ github.event.release.prerelease == true }} run: docker buildx build --platform linux/amd64 -t rockchin/langbot:${{ steps.check_version.outputs.version }} . --push