Skip to content

build

build #193

Workflow file for this run

name: build
on:
push:
branches:
- main
tags:
- "v*"
pull_request:
branches:
- main
workflow_dispatch:
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Build steinbock container
run: docker-compose build steinbock
env:
DOCKER_BUILDKIT: 1
COMPOSE_DOCKER_CLI_BUILD: 1
- name: Run pytest in steinbock container
run: docker-compose run pytest
env:
DOCKER_BUILDKIT: 1
COMPOSE_DOCKER_CLI_BUILD: 1
- name: Upload coverage
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: coverage.xml
pypi:
needs: test
if: startsWith(github.ref, 'refs/tags')
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: 3.8
- name: Build package
run: |
python -m pip install --upgrade pip
python -m pip install build
python -m build .
- name: Publish package
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
ghcr:
needs: test
if: startsWith(github.ref, 'refs/tags')
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Extract steinbock version
id: steinbock_meta
run: echo "::set-output name=version::${GITHUB_REF#refs/tags/v}"
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
# steinbock
- name: Create steinbock container metadata
uses: docker/metadata-action@v4
id: steinbock_container_meta
with:
images: ghcr.io/${{ github.repository }}
tags: |
type=semver,pattern={{major}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}.{{minor}}.{{patch}}
- name: Build and publish steinbock container
uses: docker/build-push-action@v3
with:
context: .
push: true
target: steinbock
build-args: |
TENSORFLOW_TARGET=tensorflow
STEINBOCK_TARGET=steinbock
STEINBOCK_VERSION=${{ steps.steinbock_meta.outputs.version }}
tags: ${{ steps.steinbock_container_meta.outputs.tags }}
labels: ${{ steps.steinbock_container_meta.outputs.labels }}
# steinbock-gpu
- name: Create steinbock-gpu container metadata
uses: docker/metadata-action@v4
id: steinbock_gpu_container_meta
with:
images: ghcr.io/${{ github.repository }}
flavor: |
suffix=-gpu,onlatest=true
tags: |
type=semver,pattern={{major}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}.{{minor}}.{{patch}}
- name: Build and publish steinbock-gpu container
uses: docker/build-push-action@v3
with:
context: .
push: true
target: steinbock
build-args: |
TENSORFLOW_TARGET=tensorflow-gpu
STEINBOCK_TARGET=steinbock
STEINBOCK_VERSION=${{ steps.steinbock_meta.outputs.version }}
tags: ${{ steps.steinbock_gpu_container_meta.outputs.tags }}
labels: ${{ steps.steinbock_gpu_container_meta.outputs.labels }}
# steinbock-cellpose
- name: Create steinbock-cellpose container metadata
uses: docker/metadata-action@v4
id: steinbock_cellpose_container_meta
with:
images: ghcr.io/${{ github.repository }}
flavor: |
suffix=-cellpose,onlatest=true
tags: |
type=semver,pattern={{major}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}.{{minor}}.{{patch}}
- name: Build and publish steinbock-cellpose container
uses: docker/build-push-action@v3
with:
context: .
push: true
target: steinbock-cellpose
build-args: |
TENSORFLOW_TARGET=tensorflow
STEINBOCK_TARGET=steinbock-cellpose
STEINBOCK_VERSION=${{ steps.steinbock_meta.outputs.version }}
tags: ${{ steps.steinbock_cellpose_container_meta.outputs.tags }}
labels: ${{ steps.steinbock_cellpose_container_meta.outputs.labels }}
# steinbock-cellpose-gpu
- name: Create steinbock-cellpose-gpu container metadata
uses: docker/metadata-action@v4
id: steinbock_cellpose_gpu_container_meta
with:
images: ghcr.io/${{ github.repository }}
flavor: |
suffix=-cellpose-gpu,onlatest=true
tags: |
type=semver,pattern={{major}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}.{{minor}}.{{patch}}
- name: Build and publish steinbock-cellpose-gpu container
uses: docker/build-push-action@v3
with:
context: .
push: true
target: steinbock-cellpose
build-args: |
TENSORFLOW_TARGET=tensorflow-gpu
STEINBOCK_TARGET=steinbock-cellpose
STEINBOCK_VERSION=${{ steps.steinbock_meta.outputs.version }}
tags: ${{ steps.steinbock_cellpose_gpu_container_meta.outputs.tags }}
labels: ${{ steps.steinbock_cellpose_gpu_container_meta.outputs.labels }}
# steinbock-xpra
- name: Create steinbock-xpra container metadata
uses: docker/metadata-action@v4
id: steinbock_xpra_container_meta
with:
images: ghcr.io/${{ github.repository }}
flavor: |
suffix=-xpra,onlatest=true
tags: |
type=semver,pattern={{major}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}.{{minor}}.{{patch}}
- name: Build and publish steinbock-xpra container
uses: docker/build-push-action@v3
with:
context: .
push: true
target: xpra
build-args: |
TENSORFLOW_TARGET=tensorflow
STEINBOCK_TARGET=steinbock
STEINBOCK_VERSION=${{ steps.steinbock_meta.outputs.version }}
tags: ${{ steps.steinbock_xpra_container_meta.outputs.tags }}
labels: ${{ steps.steinbock_xpra_container_meta.outputs.labels }}
# steinbock-gpu-xpra
- name: Create steinbock-gpu-xpra container metadata
uses: docker/metadata-action@v4
id: steinbock_gpu_xpra_container_meta
with:
images: ghcr.io/${{ github.repository }}
flavor: |
suffix=-gpu-xpra,onlatest=true
tags: |
type=semver,pattern={{major}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}.{{minor}}.{{patch}}
- name: Build and publish steinbock-gpu-xpra container
uses: docker/build-push-action@v3
with:
context: .
push: true
target: xpra
build-args: |
TENSORFLOW_TARGET=tensorflow-gpu
STEINBOCK_TARGET=steinbock
STEINBOCK_VERSION=${{ steps.steinbock_meta.outputs.version }}
tags: ${{ steps.steinbock_gpu_xpra_container_meta.outputs.tags }}
labels: ${{ steps.steinbock_gpu_xpra_container_meta.outputs.labels }}
# steinbock-cellpose-xpra
- name: Create steinbock-cellpose-xpra container metadata
uses: docker/metadata-action@v4
id: steinbock_cellpose_xpra_container_meta
with:
images: ghcr.io/${{ github.repository }}
flavor: |
suffix=-cellpose-xpra,onlatest=true
tags: |
type=semver,pattern={{major}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}.{{minor}}.{{patch}}
- name: Build and publish steinbock-cellpose-xpra container
uses: docker/build-push-action@v3
with:
context: .
push: true
target: xpra
build-args: |
TENSORFLOW_TARGET=tensorflow
STEINBOCK_TARGET=steinbock-cellpose
STEINBOCK_VERSION=${{ steps.steinbock_meta.outputs.version }}
tags: ${{ steps.steinbock_cellpose_xpra_container_meta.outputs.tags }}
labels: ${{ steps.steinbock_cellpose_xpra_container_meta.outputs.labels }}
# steinbock-cellpose-gpu-xpra
- name: Create steinbock-cellpose-gpu-xpra container metadata
uses: docker/metadata-action@v4
id: steinbock_cellpose_gpu_xpra_container_meta
with:
images: ghcr.io/${{ github.repository }}
flavor: |
suffix=-cellpose-gpu-xpra,onlatest=true
tags: |
type=semver,pattern={{major}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}.{{minor}}.{{patch}}
- name: Build and publish steinbock-cellpose-gpu-xpra container
uses: docker/build-push-action@v3
with:
context: .
push: true
target: xpra
build-args: |
TENSORFLOW_TARGET=tensorflow-gpu
STEINBOCK_TARGET=steinbock-cellpose
STEINBOCK_VERSION=${{ steps.steinbock_meta.outputs.version }}
tags: ${{ steps.steinbock_cellpose_gpu_xpra_container_meta.outputs.tags }}
labels: ${{ steps.steinbock_cellpose_gpu_xpra_container_meta.outputs.labels }}