name: Build and push mlflow container on: push: branches: - main jobs: tag: name: Create mlflow tag runs-on: ubuntu-latest outputs: tag_created: ${{ steps.create.outputs.created }} container: ghcr.io/catthehacker/ubuntu:act-latest@sha256:8583ed2b7d097609ff91cc914696324ee945ceb8639967759f4cebbfcb8e63a5 steps: - name: Checkout uses: actions/checkout@v4 - name: Fetch tags run: git fetch --tags origin - name: Get mlflow version id: mlflow run: | mlflow=$(cat requirements.txt | grep mlflow | cut -d'=' -f2) echo $mlflow echo "mlflow=$mlflow" >> $GITHUB_OUTPUT - name: Create tag if it doesn't exist id: create run: | if git rev-parse "${{ steps.mlflow.outputs.mlflow }}"; then echo "Tag already exists" echo "created=false" >> $GITHUB_OUTPUT else git tag ${{ steps.mlflow.outputs.mlflow }} -m "Tag ${{ steps.mlflow.outputs.mlflow }}" git push origin ${{ steps.mlflow.outputs.mlflow }} echo "created=true" >> $GITHUB_OUTPUT fi build: name: Build and push mlflow container needs: tag if: ${{ needs.tag.outputs.tag_created == 'true' }} runs-on: ubuntu-latest container: ghcr.io/catthehacker/ubuntu:act-latest@sha256:07466dbbecd8690579d9bcbf8a1214240b91534cf03eed5f222e7fd80131f582 env: IMAGE_NAME: mlflow REGISTRY: git.namesny.com REPO_OWNER: cluster steps: - name: Checkout uses: actions/checkout@v4 - name: Login to Registry uses: docker/login-action@v3 with: registry: git.namesny.com username: ${{ gitea.actor }} password: ${{ secrets.REGISTRY_TOKEN }} - name: Build and push run: | VERSION=$(cat requirements.txt | grep mlflow | cut -d'=' -f3) TODAY=$(date +'%Y-%m-%d') docker build -t ${REGISTRY}/${REPO_OWNER}/${IMAGE_NAME}:${VERSION}-${TODAY} -t ${REGISTRY}/${REPO_OWNER}/${IMAGE_NAME}:latest . docker push ${REGISTRY}/${REPO_OWNER}/${IMAGE_NAME}:${VERSION}-${TODAY} docker push ${REGISTRY}/${REPO_OWNER}/${IMAGE_NAME}:latest