From 5652025a1e4acfcbb8935f6aaf50e69c7b21a75c Mon Sep 17 00:00:00 2001 From: Sandip Samal Date: Thu, 3 Oct 2024 16:00:54 -0400 Subject: [PATCH] updated CI/CD --- .github/workflows/ci.yml | 63 +++++++++++++++++----------------------- setup.py | 4 +-- 2 files changed, 28 insertions(+), 39 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f9eb72a..de11dd7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,8 +2,8 @@ # https://github.com/FNNDSC/cookiecutter-chrisapp/wiki/Automatic-Builds # # - targeted platforms: x86_64, PowerPC64, ARM64 -# - master is built as fnndsc/pl-simpledsapp:latest -# - tagged commits are built as fnndsc/pl-simpledsapp: +# - master is built as fnndsc/pl-markimg:latest +# - tagged commits are built as fnndsc/pl-markimg: # - tagged commits are also uploaded to chrisstore.co # # In order to use this workflow, see @@ -18,12 +18,11 @@ on: tags: [ '**' ] pull_request: branches: [ master, main, trunk ] - release: - types: [ created ] jobs: test: - runs-on: ubuntu-20.04 + if: false + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v2 - name: build @@ -33,7 +32,7 @@ jobs: publish: if: github.event_name == 'push' || github.event_name == 'release' - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 # we want to both push the build to DockerHub, but also # keep a local copy so that we can run @@ -90,9 +89,9 @@ jobs: with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - + - name: Login to GitHub Container Registry - uses: docker/login-action@v1 + uses: docker/login-action@v1 with: registry: ghcr.io username: ${{ github.repository_owner }} @@ -108,7 +107,7 @@ jobs: ${{ steps.determine.outputs.dock_image }} localhost:5000/${{ steps.determine.outputs.dock_image }} ghcr.io/${{ steps.determine.outputs.dock_image }} - platforms: linux/amd64,linux/ppc64le,linux/arm64 + platforms: linux/amd64 push: true cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache @@ -121,11 +120,16 @@ jobs: docker pull localhost:5000/$dock_image docker tag localhost:5000/$dock_image $dock_image script=$(docker inspect --format '{{ (index .Config.Cmd 0) }}' $dock_image) + docker run --rm $dock_image $script --json \ + | jq '. += {"name":"pl-simpledsapp", "dock_image": "'$dock_image'", "public_repo": "'${{ github.server_url }}/${{ github.repository }}'" }' \ + > /tmp/description.json json="$(docker run --rm $dock_image $script --json)" - jq <<< "$json" # pretty print in log + # Escape single quotes + json_escaped=$(echo "$json" | sed "s/'/\\'/g") - echo "::set-output name=json::$json" - echo "::set-output name=title::$(jq -r '.title' <<< "$json")" + jq <<< "$json" # pretty print in log + echo "json=$json_escaped" >> $GITHUB_OUTPUT + echo "title=$(jq -r '.title' <<< "$json")" >> $GITHUB_OUTPUT - name: Update DockerHub description uses: peter-evans/dockerhub-description@v2 @@ -137,28 +141,13 @@ jobs: readme-filepath: ./README.rst repository: ${{ steps.determine.outputs.repo }} - - name: Upload to ChRIS Store - if: "!endsWith(steps.determine.outputs.dock_image, ':latest')" - run: | - repo=${{ steps.determine.outputs.repo }} - dock_image=${{ steps.determine.outputs.dock_image }} - descriptor_file=$(mktemp --suffix .json) - cat > $descriptor_file <<< '${{ steps.pluginmeta.outputs.json }}' - res=$( - curl -s -u "${{ secrets.CHRIS_STORE_USER }}" "https://chrisstore.co/api/v1/plugins/" \ - -F "name=$(sed 's/^.*\///' <<< $repo)" \ - -F "dock_image=$dock_image" \ - -F "descriptor_file=@$descriptor_file" \ - -F "public_repo=https://github.com/${{ github.repository }}" - ) - success=$? - if [ "$success" = "0" ]; then - href="$(jq -r '.collection.items[0].href' <<< "$res")" - echo $href - echo "::set-output name=pluginurl::$href" - else - echo "::error ::Failed upload to ChRIS Store" - echo "$res" - exit $success - fi - + - name: Upload ChRIS Plugin + id: upload + if: github.ref_type == 'tag' + uses: FNNDSC/upload-chris-plugin@main + with: + description_file: /tmp/description.json + username: ${{ secrets.CHRISPROJECT_USERNAME }} + password: ${{ secrets.CHRISPROJECT_PASSWORD }} + chris_url: https://cube.chrisproject.org/api/v1/ + compute_names: NERC \ No newline at end of file diff --git a/setup.py b/setup.py index 1552a86..2205082 100755 --- a/setup.py +++ b/setup.py @@ -6,12 +6,12 @@ setup( name = 'simpledsapp', - version = '2.1.3', + version = '2.1.4', description = 'A simple ChRIS ds app demo', long_description = readme, author = 'FNNDSC', author_email = 'dev@babyMRI.org', - url = 'http://wiki', + url = 'https://github.com/FNNDSC/pl-simpledsapp#readme', packages = ['simpledsapp'], install_requires = ['chrisapp'], test_suite = 'nose.collector',