diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..4e90b84 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,25 @@ +name: ci + +on: + push: + branches: [ develop ] + pull_request: + branches: [ develop ] + +jobs: + docker: + runs-on: ubuntu-latest + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Setup Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build image + run: | + ./scripts/update.sh + + - name: Run TauDEM to ensure it works + run: | + ./scripts/console.sh /opt/taudem/gagewatershed diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..7164f3b --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,52 @@ +name: release + +on: + push: + tags: "*" + +env: + REGISTRY: ghcr.io + IMAGE_NAME: WikiWatershed/taudem + +jobs: + release: + runs-on: ubuntu-latest + + permissions: + contents: read + packages: write + attestations: write + id-token: write + + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + + - name: Build and push + id: push + uses: docker/build-push-action@v6 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + + - name: Generate artifact attestation + uses: actions/attest-build-provenance@v1 + with: + subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME}} + subject-digest: ${{ steps.push.outputs.digest }} + push-to-registry: true diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index aaa8e23..0000000 --- a/.travis.yml +++ /dev/null @@ -1,27 +0,0 @@ -sudo: required - -language: bash - -services: - - docker - -install: - - docker build -t quay.io/wikiwatershed/taudem:${TRAVIS_COMMIT:0:7} . - -script: - - docker run -d --name taudem quay.io/wikiwatershed/taudem:${TRAVIS_COMMIT:0:7} /opt/taudem/gagewatershed - -before_deploy: - - docker login -e . -p "${QUAY_PASSWORD}" -u "${QUAY_USER}" quay.io - -deploy: - - provider: script - script: ".travis/deploy.sh" - on: - repo: WikiWatershed/docker-taudem - branch: develop - - provider: script - script: ".travis/deploy.sh" - on: - repo: WikiWatershed/docker-taudem - tags: true diff --git a/.travis/deploy.sh b/.travis/deploy.sh deleted file mode 100755 index 0cc67e2..0000000 --- a/.travis/deploy.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env bash - -set -e - -if [ -z "${TRAVIS_TAG}" ]; then - QUAY_TAG="${TRAVIS_COMMIT:0:7}" -else - QUAY_TAG="${TRAVIS_TAG}" - - docker tag "quay.io/wikiwatershed/taudem:${TRAVIS_COMMIT:0:7}" "quay.io/wikiwatershed/taudem:${QUAY_TAG}" -fi - -docker push "quay.io/wikiwatershed/taudem:${QUAY_TAG}" -docker tag "quay.io/wikiwatershed/taudem:${QUAY_TAG}" "quay.io/wikiwatershed/taudem:latest" -docker push "quay.io/wikiwatershed/taudem:latest" diff --git a/CHANGELOG.md b/CHANGELOG.md index 304be45..d86f2ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## 5.3.8-xenial + +- Update Docker image to Ubuntu 16.04 xenial [#4](https://github.com/WikiWatershed/docker-taudem/pull/4) +- Switch CI to GitHub Actions [#3](https://github.com/WikiWatershed/docker-taudem/pull/3) +- Switch Publishing to GitHub Container Registry [#6](https://github.com/WikiWatershed/docker-taudem/pull/6) + ## 5.3.8 - Initial release. diff --git a/Dockerfile b/Dockerfile index 5999b88..85684ab 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,5 @@ -FROM ubuntu:14.04 +FROM ubuntu:16.04 +LABEL org.opencontainers.image.source="https://github.com/WikiWatershed/docker-taudem" MAINTAINER Azavea @@ -19,7 +20,7 @@ RUN apt-get update && apt-get install -y \ libgeos-dev \ libproj-dev \ libspatialite-dev \ - libspatialite5 \ + libspatialite7 \ spatialite-bin \ libibnetdisc-dev \ wget @@ -49,4 +50,4 @@ RUN wget -qO- https://github.com/dtarb/TauDEM/archive/v${TAUDEM_VERSION}.tar.gz RUN ln -s /usr/src/TauDEM-${TAUDEM_VERSION} /opt/taudem ENV PATH /opt/taudem:$PATH -RUN pip install --upgrade pip +RUN pip install --upgrade "pip<21" diff --git a/README.md b/README.md index 19ded72..daf06da 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,26 @@ # docker-taudem -[![Travis CI](https://api.travis-ci.org/WikiWatershed/docker-taudem.svg "Build Status on Travis CI")](https://travis-ci.org/WikiWatershed/docker-taudem/) [![Docker Repository on Quay.io](https://quay.io/repository/wikiwatershed/taudem/status "Docker Repository on Quay.io")](https://quay.io/repository/wikiwatershed/taudem) [![Apache V2 License](http://img.shields.io/badge/license-Apache%20V2-blue.svg)](https://github.com/wikiwatershed/docker-taudem/blob/develop/LICENSE) A Docker image for [TauDEM](http://hydrology.usu.edu/taudem/taudem5/index.html). -##### Getting started +### Quick Start + +``` +docker run --rm -ti quay.io/wikiwatershed/taudem +``` + +### Getting started * Run `./scripts/update.sh` * Run `./scripts/console.sh` -##### Deployments +### Deployments ``` bash $ git flow release start 0.1.0 $ vim CHANGELOG.md $ vim Dockerfile $ git commit -m "0.1.0" -$ git flow release publish 0.1.0 -$ git flow release finish 0.1.0 -$ git push --tags +$ git flow release finish -p 0.1.0 ``` diff --git a/scripts/console.sh b/scripts/console.sh index ca658d2..415ceb9 100755 --- a/scripts/console.sh +++ b/scripts/console.sh @@ -4,4 +4,9 @@ set -ex ARGS=$* -docker run --rm -ti docker-taudem $ARGS +if [[ -z $CI ]]; then + docker run --rm -ti docker-taudem $ARGS +else + # Run in non-interactive mode in CI + docker run --rm docker-taudem $ARGS +fi