From 748aa9a7ffd1bdb415481352d82ba5aac4e9cec1 Mon Sep 17 00:00:00 2001 From: Jennings Zhang Date: Fri, 18 Feb 2022 05:59:23 -0500 Subject: [PATCH] Add ci --- .github/workflows/build.yml | 114 ++++++++++++++++++++++++++++++++++++ README.md | 2 +- 2 files changed, 115 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..7d83b30 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,114 @@ +# Automatically build multi-architectural tagged container images and push them to DockerHub +# https://github.com/FNNDSC/cookiecutter-chrisapp/wiki/Automatic-Builds + +name: build + +on: + push: + branches: [ main ] + tags: [ '**' ] + pull_request: + branches: [ main ] + +jobs: + publish: + if: github.event_name == 'push' || github.event_name == 'release' + runs-on: ubuntu-20.04 + + services: + registry: + image: registry:2 + ports: + - 5000:5000 + + steps: + - name: Get git tag + id: git_info + if: startsWith(github.ref, 'refs/tags/') + run: echo "::set-output name=tag::${GITHUB_REF##*/}" + - name: Decide image tag name + id: determine + env: + git_tag: ${{ steps.git_info.outputs.tag }} + run: | + repo="${GITHUB_REPOSITORY,,}" # to lower case + # if build triggered by tag, use tag name + tag="${git_tag:-latest}" + + # if tag is a version number prefixed by 'v', remove the 'v' + if [[ "$tag" =~ ^v[0-9].* ]]; then + tag="${tag:1}" + fi + + dock_image=$repo:$tag + echo $dock_image + echo "::set-output name=dock_image::$dock_image" + echo "::set-output name=repo::$repo" + + - uses: actions/checkout@v2 + - uses: docker/setup-qemu-action@v1 + - uses: docker/setup-buildx-action@v1 + with: + driver-opts: network=host + - name: Cache Docker layers + uses: actions/cache@v2 + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-buildx-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx- + + - name: Login to DockerHub + id: dockerhub_login + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + + - name: Login to GitHub Container Registry + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v2 + id: docker_build + with: + context: . + file: ./Dockerfile + tags: | + ${{ steps.determine.outputs.dock_image }} + localhost:5000/${{ steps.determine.outputs.dock_image }} + ghcr.io/${{ steps.determine.outputs.dock_image }} + platforms: linux/amd64,linux/ppc64le + push: true + cache-from: type=local,src=/tmp/.buildx-cache + cache-to: type=local,dest=/tmp/.buildx-cache + + - name: Get plugin meta + id: pluginmeta + run: | + repo=${{ steps.determine.outputs.repo }} + dock_image=${{ steps.determine.outputs.dock_image }} + docker run --rm localhost:5000/$dock_image chris_plugin_info > /tmp/description.json + jq < /tmp/description.json # pretty print in log + echo "::set-output name=title::$(jq -r '.title' < /tmp/description.json)" + + - name: Update DockerHub description + uses: peter-evans/dockerhub-description@v2 + continue-on-error: true # it is not crucial that this works + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + short-description: ${{ steps.pluginmeta.outputs.title }} + readme-filepath: ./README.md + repository: ${{ steps.determine.outputs.repo }} + + - name: Upload to ChRIS Store + if: "!endsWith(steps.determine.outputs.dock_image, ':latest')" + uses: FNNDSC/chrisstore-action@master + with: + descriptor_file: /tmp/description.json + auth: ${{ secrets.CHRIS_STORE_USER }} diff --git a/README.md b/README.md index 009cb96..8a6e944 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![Version](https://img.shields.io/docker/v/fnndsc/ep-skimage-mcubes-mni?sort=semver)](https://hub.docker.com/r/fnndsc/ep-skimage-mcubes-mni) [![MIT License](https://img.shields.io/github/license/fnndsc/ep-skimage-mcubes-mni)](https://github.com/FNNDSC/ep-skimage-mcubes-mni/blob/main/LICENSE) -[![Build](https://github.com/FNNDSC/ep-skimage-mcubes-mni/actions/workflows/ci.yml/badge.svg)](https://github.com/FNNDSC/ep-skimage-mcubes-mni/actions) +[![Build](https://github.com/FNNDSC/ep-skimage-mcubes-mni/actions/workflows/build.yml/badge.svg)](https://github.com/FNNDSC/ep-skimage-mcubes-mni/actions) `ep-skimage-mcubes-mni` is a _ChRIS_ _ds_ plugin that performs the [marching-cubes](https://scikit-image.org/docs/stable/auto_examples/edges/plot_marching_cubes.html)