Skip to content

update pip version comparative-annotation-toolkit dockerfile #252

update pip version comparative-annotation-toolkit dockerfile

update pip version comparative-annotation-toolkit dockerfile #252

name: Build and Push Docker Images with Version Tags
on:
push:
branches:
- main
workflow_dispatch:
env:
ORG_NAME: eichlerlab
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Find Dockerfiles that need to be updated
id: dockerfiles
run: |
set +e
CHANGED_FILES=$(git diff-tree --no-commit-id --name-only -r HEAD | grep 'Dockerfile$\|environment.yml$')
echo $CHANGED_FILES
set -e
CHANGED_IMAGES=""
for CHANGED_FILE in $CHANGED_FILES; do
echo $CHANGED_FILE
echo $CHANGED_FILE | awk -F'/' '{print NF}'
if [[ -f "$CHANGED_FILE" && $(echo $CHANGED_FILE | awk -F'/' '{print NF}') -eq 3 ]]; then
CHANGED_IMAGE=$(echo $CHANGED_FILE | cut -d"/" -f1-2)
CHANGED_IMAGES="$CHANGED_IMAGE $CHANGED_IMAGES"
fi
done
CHANGED_IMAGES=$(echo $CHANGED_IMAGES | awk '{for (i=1; i<=NF; i++) if (!seen[$i]++) printf "%s ", $i}' | sed 's/ $//g')
echo $CHANGED_IMAGES
if [[ -z "$CHANGED_IMAGES" ]]; then
echo "CHANGED=false" >> $GITHUB_ENV
echo "No Docker image changes detected."
exit 0
else
echo "CHANGED_IMAGES=$CHANGED_IMAGES" >> $GITHUB_ENV
echo "CHANGED=true" >> $GITHUB_ENV
echo "Changed Docker images: $CHANGED_IMAGES"
fi
echo $CHANGED_IMAGES
- name: Log in to Docker Hub
if: env.CHANGED == 'true'
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USER_1 }}
password: ${{ secrets.DOCKER_USER_1_PAT }}
- name: Build and push Docker images
if: env.CHANGED == 'true'
run: |
CHANGED_IMAGES="${{ env.CHANGED_IMAGES }}"
for CHANGED_IMAGE in $CHANGED_IMAGES; do
IFS='/' read -ra ADDR <<< "$CHANGED_IMAGE"
SOFTWARE="${ADDR[0]}"
VERSION="${ADDR[1]}"
IMAGE_PATH="${SOFTWARE}/${VERSION}"
if ! docker build -t ${{ env.ORG_NAME }}/${SOFTWARE}:${VERSION} $IMAGE_PATH;then
echo "Failed to build ${SOFTWARE}:${VERSION}"
exit 1
fi
echo "Pushing ${{ env.ORG_NAME }}/${SOFTWARE}:${VERSION}"
docker push ${{ env.ORG_NAME }}/${SOFTWARE}:${VERSION}
done