Skip to content

Fix #35 issue: now we have both tagged (aka stable) and development v… #172

Fix #35 issue: now we have both tagged (aka stable) and development v…

Fix #35 issue: now we have both tagged (aka stable) and development v… #172

Workflow file for this run

name: Docker build
on:
push:
branches:
- main
tags:
- "*"
pull_request:
env:
DOCKER_ORG: coffeateam
GITHUB_SHA: ${{ github.sha }}
GITHUB_REF: ${{ github.ref }}
# Update each time there is added latest python: it will be used for `latest` tag
python_latest: "3.11"
release: "2024.9.1"
releasev0: "0.7.22"
jobs:
matrix-build:
strategy:
fail-fast: false
matrix:
image_dir: [coffea-base, coffea-dask]
distro: [almalinux8, almalinux9]
python: ["3.9", "3.10", "3.11"]
exclude:
- distro: almalinux8
python: 3.9
- distro: almalinux9
python: 3.9
- image_dir: coffea-base
python: 3.11
- image_dir: coffea-base
python: 3.12
name: ${{ matrix.image_dir }}-${{ matrix.distro }}-${{ matrix.python }}
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
with:
driver: docker
- name: Login to DockerHub
uses: docker/login-action@v1
if: github.event_name == 'push'
with:
username: ${{ secrets.DOCKERHUB_ACCOUNT }}
password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v1
if: github.event_name == 'push'
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Harbor Hub
if: success() && github.event_name != 'pull_request'
uses: docker/login-action@v2
with:
registry: hub.opensciencegrid.org
username: ${{ secrets.HARBOR_USER }}
password: ${{ secrets.HARBOR_PASSWORD }}
- name: Generate tags
id: tags
env:
image_dir: ${{ matrix.image_dir }}
python: ${{ matrix.python }}
distro: ${{ matrix.distro }}
releasev0: ${{ env.releasev0 }}
release: ${{ env.release }}
python_latest: ${{ env.python_latest}}
stable: ${{ startsWith(github.ref, 'refs/tags') }}
run: |
image="coffeateam/${image_dir}-${distro}"
image_default="coffeateam/${image_dir}"
# release tag or in case other case make it dev
if [ "$stable" == "true" ]; then
if [ ${image_dir} == 'coffea-base' ]; then
tag="${image}:${releasev0}-py${python}"
else
tag="${image}:${release}-py${python}"
fi
tags=${image}:latest-py${python},$tag
# latest tag
if [ ${python} == ${python_latest} ]; then
tags=${image}:latest,$tags
fi
else
tag="${image}:dev-py${python}"
tags=$tag
if [ "$python" == ${python_latest} ]; then
tags=${image}:dev,$tags
fi
fi
echo "::set-output name=tag::${tag}"
echo "::set-output name=tags::${tags}"
- name: Build base v0
if: ${{ matrix.image_dir == 'coffea-base' }}
uses: docker/build-push-action@v5
with:
load: true
tags: ${{ steps.tags.outputs.tags }}
context: ${{ matrix.image_dir }}
file: ${{ matrix.image_dir }}/Dockerfile.${{ matrix.distro }}
build-args: |
python=${{ matrix.python }}
releasev0=${{ env.releasev0 }}
- name: Build base v1
if: ${{ matrix.image_dir != 'coffea-base' }}
uses: docker/build-push-action@v5
with:
load: true
tags: ${{ steps.tags.outputs.tags }}
context: ${{ matrix.image_dir }}
file: ${{ matrix.image_dir }}/Dockerfile.${{ matrix.distro }}
build-args: |
python=${{ matrix.python }}
release=${{ env.release }}
- name: Test Conda environement
env:
tag: ${{ steps.tags.outputs.tag }}
run: |
docker run --rm ${tag} conda list --export
- name: Make sure voms tools are working
env:
tag: ${{ steps.tags.outputs.tag }}
run: |
ERROR=$(docker run ${tag} voms-proxy-info 2>&1 > /dev/null; exit 0)
TEST=$(echo -e "\nCouldn't find a valid proxy.\n")
if [ "$ERROR" == "$TEST" ]; then
exit 0
else
exit 1
fi
- name: Test Pytest environement v0
if: ${{ matrix.image_dir == 'coffea-base' }}
env:
tag: ${{ steps.tags.outputs.tag }}
run: |
docker run --rm -v ${{ github.workspace }}:/tmp/workspace ${tag} \
sh -c "pip install -U pytest && cd tmp/workspace && pytest -m v0"
- name: Test Pytest environement CalVer
if: ${{ matrix.image_dir != 'coffea-base' }}
env:
tag: ${{ steps.tags.outputs.tag }}
run: |
docker run --rm -v ${{ github.workspace }}:/tmp/workspace ${tag} \
sh -c "pip install -U pytest && cd tmp/workspace && pytest -m calver"
- name: Build and push v0
if: ${{ matrix.image_dir != 'coffea-base' }}
uses: docker/build-push-action@v5
with:
platforms: linux/amd64
push: ${{ github.event_name == 'push' }}
tags: ${{ steps.tags.outputs.tags }}
context: ${{ matrix.image_dir }}
file: ${{ matrix.image_dir }}/Dockerfile.${{ matrix.distro }}
build-args: |
python=${{ matrix.python }}
release=${{ env.release }}
- name: Build and push v1
if: ${{ matrix.image_dir == 'coffea-base' }}
uses: docker/build-push-action@v5
with:
platforms: linux/amd64
push: ${{ github.event_name == 'push' }}
tags: ${{ steps.tags.outputs.tags }}
context: ${{ matrix.image_dir }}
file: ${{ matrix.image_dir }}/Dockerfile.${{ matrix.distro }}
build-args: |
python=${{ matrix.python }}
releasev0=${{ env.releasev0 }}