name: postgres-setup docker on: push: branches: - master paths: - './docker/postgres-setup/**' - '.github/workflows/docker-postgres-setup.yml' pull_request: branches: - master paths: - './docker/postgres-setup/**' - '.github/workflows/docker-postgres-setup.yml' release: types: [published, edited] concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: setup: runs-on: ubuntu-latest outputs: tag: ${{ steps.tag.outputs.tag }} publish: ${{ steps.publish.outputs.publish }} steps: - name: Checkout uses: actions/checkout@v2 - name: Compute Tag id: tag run: | echo "GITHUB_REF: $GITHUB_REF" SHORT_SHA=$(git rev-parse --short "$GITHUB_SHA") echo "SHORT_SHA: $SHORT_SHA" TAG=$(echo ${GITHUB_REF} | sed -e "s,refs/heads/.*$,head\,${SHORT_SHA},g" -e 's,refs/tags/,,g' -e 's,refs/pull/\([0-9]*\).*,pr\1,g') echo "tag=$TAG" echo "::set-output name=tag::$TAG" - name: Check whether publishing enabled id: publish env: ENABLE_PUBLISH: ${{ secrets.ORG_DOCKER_PASSWORD }} run: | echo "Enable publish: ${{ env.ENABLE_PUBLISH != '' }}" echo "::set-output name=publish::${{ env.ENABLE_PUBLISH != '' }}" push_to_registries: name: Build and Push Docker Image to Docker Hub runs-on: ubuntu-latest needs: setup steps: - name: Check out the repo uses: actions/checkout@v2 with: fetch-depth: 0 - name: Docker meta id: docker_meta uses: crazy-max/ghaction-docker-meta@v1 with: # list of Docker images to use as base name for tags images: | acryldata/datahub-postgres-setup # add git short SHA as Docker tag tag-custom: ${{ needs.setup.outputs.tag }} tag-custom-only: true - name: Login to DockerHub if: ${{ needs.setup.outputs.publish == 'true' }} uses: docker/login-action@v1 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.ORG_DOCKER_PASSWORD }} - name: Build and Push image uses: docker/build-push-action@v2 with: context: . file: ./docker/postgres-setup/Dockerfile tags: ${{ steps.docker_meta.outputs.tags }} push: ${{ needs.setup.outputs.publish == 'true' }}