name: datahub-frontend-react docker on: push: branches: - master paths-ignore: - 'docs/**' - '**.md' pull_request: branches: - master paths: - 'docker/**' - '.github/workflows/docker-frontend-react.yml' paths_ignore: - '**.md' - '**.env' release: types: [published, edited] 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") TAG=$(echo ${GITHUB_REF} | sed -e "s,refs/heads/master,latest\,${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.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 dockerhub and github registries runs-on: ubuntu-latest if: ${{ needs.setup.outputs.publish == 'true' }} needs: setup steps: - name: Check out the repo uses: actions/checkout@v2 - 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: | linkedin/datahub-frontend-react docker.pkg.github.com/linkedin/datahub/datahub-frontend-react # add git short SHA as Docker tag tag-custom: ${{ needs.setup.outputs.tag }} tag-custom-only: true - name: Login to DockerHub uses: docker/login-action@v1 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Login to GitHub uses: docker/login-action@v1 with: registry: docker.pkg.github.com username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and Push image uses: docker/build-push-action@v2 with: file: ./docker/datahub-frontend/Dockerfile tags: ${{ steps.docker_meta.outputs.tags }} push: ${{ needs.setup.outputs.publish == 'true' }}