diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b0539d7585..1d389859f4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -10,16 +10,90 @@ jobs: runs-on: ubuntu-latest outputs: release_version: ${{ steps.get_release_version.outputs.release_version }} + version_without_prefix: ${{ steps.get_release_version_without_prefix.outputs.version_without_prefix }} + highest_semver_tag: ${{ steps.get_highest_semver.outputs.highest_semver_tag }} steps: - name: Get release version id: get_release_version run: echo ::set-output name=release_version::${GITHUB_REF#refs/*/} + - name: Get release version without prefix + id: get_release_version_without_prefix + env: + RELEASE_VERSION: ${{ steps.get_release_version.outputs.release_version }} + run: | + echo ::set-output name=version_without_prefix::${RELEASE_VERSION:1} + - name: Get highest semver + id: get_highest_semver + env: + RELEASE_VERSION: ${{ steps.get_release_version.outputs.release_version }} + run: | + source infra/scripts/setup-common-functions.sh + SEMVER_REGEX='^v[0-9]+\.[0-9]+\.[0-9]+(-([0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*))?$' + if echo "${RELEASE_VERSION}" | grep -P "$SEMVER_REGEX" &>/dev/null ; then + echo ::set-output name=highest_semver_tag::$(get_tag_release -m) + fi - name: Check output env: - RELEASE_VERSION: ${{ steps.vars.outputs.release_version }} + RELEASE_VERSION: ${{ steps.get_release_version.outputs.release_version }} + VERSION_WITHOUT_PREFIX: ${{ steps.get_release_version_without_prefix.outputs.version_without_prefix }} + HIGHEST_SEMVER_TAG: ${{ steps.get_highest_semver.outputs.highest_semver_tag }} run: | echo $RELEASE_VERSION - echo ${{ steps.vars.outputs.release_version }} + echo $VERSION_WITHOUT_PREFIX + echo $HIGHEST_SEMVER_TAG + + build-publish-docker-images: + runs-on: [ubuntu-latest] + needs: get-version + strategy: + matrix: + component: [core, serving, jupyter] + env: + MAVEN_CACHE: gs://feast-templocation-kf-feast/.m2.2020-08-19.tar + DOCKER_BUILDKIT: '1' + steps: + - uses: actions/checkout@v2 + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - uses: GoogleCloudPlatform/github-actions/setup-gcloud@master + with: + version: '290.0.1' + export_default_credentials: true + - name: Get m2 cache + run: | + infra/scripts/download-maven-cache.sh \ + --archive-uri ${MAVEN_CACHE} \ + --output-dir . + - name: Build and push + uses: docker/build-push-action@v2 + env: + RELEASE_VERSION: ${{ needs.get-version.outputs.release_version }} + with: + push: true + file: infra/docker/${{ matrix.component }}/Dockerfile + tags: feastdev/feast-${{ matrix.component }}:${{ needs.get-version.outputs.release_version }} + build-args: | + REVISION=${RELEASE_VERSION} + - name: Build and push latest + uses: docker/build-push-action@v2 + env: + RELEASE_VERSION: ${{ needs.get-version.outputs.release_version }} + VERSION_WITHOUT_PREFIX: ${{ needs.get-version.outputs.version_without_prefix }} + HIGHEST_SEMVER_TAG: ${{ needs.get-version.outputs.highest_semver_tag }} + with: + if: ${VERSION_WITHOUT_PREFIX} == ${HIGHEST_SEMVER_TAG:1} + push: true + file: infra/docker/${{ matrix.component }}/Dockerfile + tags: feastdev/feast-${{ matrix.component }}:latest + build-args: | + REVISION=${RELEASE_VERSION} publish-helm-charts: runs-on: ubuntu-latest