diff options
| author | Howard Butler <howard@hobu.co> | 2021-03-28 15:03:58 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-03-28 15:03:58 -0500 |
| commit | 79c90906be6c7a1d827bfc89e8888f40509fae10 (patch) | |
| tree | 670f5724e15d0c1262cfe5d36af71f1814cee697 | |
| parent | 72f53cf06ecaabdade0c5ab6d8a7cb31dcddfc72 (diff) | |
| download | PROJ-79c90906be6c7a1d827bfc89e8888f40509fae10.tar.gz PROJ-79c90906be6c7a1d827bfc89e8888f40509fae10.zip | |
GitHub Action to build both the 'proj' and 'proj-docs' container (#2618)
* adapt PDAL's docker build script for PROJ
* try building doc builder container too
* don't push containers on pull_request
| -rw-r--r-- | .github/workflows/docker.yml | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 00000000..d03085ec --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,78 @@ +name: Docker + +on: [push, pull_request, workflow_dispatch] + +# adapted from https://raw.githubusercontent.com/stefanprodan/podinfo/master/.github/workflows/release.yml +# +jobs: + containers: + name: ${{ matrix.container }} Container + runs-on: ubuntu-latest + strategy: + matrix: + container: ["proj","proj-docs"] + dockerfile: ["./Dockerfile", "./docs/docbuild/Dockerfile"] + exclude: + - container: "proj" + dockerfile: "./docs/docbuild/Dockerfile" + - container: "proj-docs" + dockerfile: "./Dockerfile" + env: + PUSH_PACKAGES: ${{ github.repository_owner == 'OSGeo' && github.event_name != 'pull_request' }} + CONTAINER: ${{ matrix.container }} + steps: + - uses: actions/checkout@v2 + - name: Lint + id: lint + run: | + echo "are we pushing packages" ${{ env.PUSH_PACKAGES }} + echo "event_name" ${{ github.event_name }} + echo "ref" ${{ github.ref }} + - name: Setup Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + with: + version: latest + - if: ${{ env.PUSH_PACKAGES == 'true' }} + name: Login to GitHub Container Registry + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GHCR_TOKEN }} + - if: ${{ env.PUSH_PACKAGES == 'true' }} + name: Login to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + - name: Prepare + id: prep + run: | + VERSION=sha-${GITHUB_SHA::8} + if [[ $GITHUB_REF == refs/tags/* ]]; then + VERSION=${GITHUB_REF/refs\/tags\//} + fi + echo ::set-output name=BUILD_DATE::$(date -u +'%Y-%m-%dT%H:%M:%SZ') + echo ::set-output name=VERSION::${VERSION} + - name: Build image + uses: docker/build-push-action@v2 + with: + push: ${{ env.PUSH_PACKAGES == 'true' }} + builder: ${{ steps.buildx.outputs.name }} + context: . + file: ${{ matrix.dockerfile }} + platforms: linux/amd64 + tags: | + docker.io/osgeo/${{ matrix.container }}:${{ steps.prep.outputs.VERSION }} + docker.io/osgeo/${{ matrix.container }}:latest + ghcr.io/osgeo/${{ matrix.container }}:${{ steps.prep.outputs.VERSION }} + ghcr.io/osgeo/${{ matrix.container }}:latest + labels: | + org.opencontainers.image.title=${{ github.event.repository.name }} + org.opencontainers.image.description=${{ github.event.repository.description }} + org.opencontainers.image.source=${{ github.event.repository.html_url }} + org.opencontainers.image.url=${{ github.event.repository.html_url }} + org.opencontainers.image.revision=${{ github.sha }} + org.opencontainers.image.version=${{ steps.prep.outputs.VERSION }} + org.opencontainers.image.created=${{ steps.prep.outputs.BUILD_DATE }} |
