build #193
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 }} |