From 22b9138a3c0040f5779f7218522f2d96e750fbbf Mon Sep 17 00:00:00 2001 From: Francisco Arceo Date: Thu, 23 Jan 2025 14:18:41 -0500 Subject: [PATCH] fix: Fix GitHub Actions to pass authentication (#4963) * fix: Update workflows to also use workflow_call Signed-off-by: Francisco Javier Arceo * fix: Also adding workflow_call to release version Signed-off-by: Francisco Javier Arceo * fix: Adding type to release version input Signed-off-by: Francisco Javier Arceo * chore: Fix operator release workflow (v0.43-branch) (#4937) fix operator release workflow Signed-off-by: Tommy Hughes * fix: Updated type in yaml Signed-off-by: Francisco Javier Arceo * fix: Updating publish.yml Signed-off-by: Francisco Javier Arceo * fix: Update type in publish_images Signed-off-by: Francisco Javier Arceo * fix: Updating publish helm charts Signed-off-by: Francisco Javier Arceo * fix: Updating publish java sdk Signed-off-by: Francisco Javier Arceo * fix: Updating environment variable in the build_wheels Signed-off-by: Francisco Javier Arceo * updating input parameters to build wheels Signed-off-by: Francisco Javier Arceo * formatting issue Signed-off-by: Francisco Javier Arceo * chore: Fix operator release for 0.43.0 (v0.43-branch) (#4939) fix operator release for 0.43.0 Signed-off-by: Tommy Hughes * renaming args and adding more Signed-off-by: Francisco Javier Arceo * fix: Adding outputs to build_wheels workflow Signed-off-by: Francisco Javier Arceo * reverting changes Signed-off-by: Francisco Javier Arceo * chore: Add ability to change default feature-server image during Operator deploy (v0.43-branch) (#4941) chore: Add ability to change default feature-server image during Operator deploy (#4940) Signed-off-by: Tommy Hughes * chore: CR image no longer needed for e2e (v0.43-branch) (#4943) CR image no longer needed for e2e Signed-off-by: Tommy Hughes * chore: Fix publish, versions issue (#4944) fix publish, versions issue Signed-off-by: Tommy Hughes * chore: Fix publish, versions issue (#4945) fix publish, versions issue Signed-off-by: Tommy Hughes * chore: Fix publish, versions issue (#4946) fix publish, versions issue Signed-off-by: Tommy Hughes * chore: Fix publish, versions issue (#4947) fix publish, versions issue Signed-off-by: Tommy Hughes * fix publish, versions issue (#4948) Signed-off-by: Tommy Hughes * fix: adding checkout to publish sdk Signed-off-by: Francisco Javier Arceo * chore: Change get version workflow to an action (#4951) change get version workflow to an action Signed-off-by: Tommy Hughes * fix: Release Fix - Added the workflow_call element in missing workflows (#4954) Added the workflow_call element in all the workflows wherever there is a workflow_dispatch element to see if that fixes the problem to be able to call the workflow from another workflow. Signed-off-by: lrangine <19699092+lokeshrangineni@users.noreply.github.com> * chore: Build wheels fix (#4957) dev Signed-off-by: Tommy Hughes * chore: Fix python-sdk workflow (#4958) dev Signed-off-by: Tommy Hughes * fix: adding type and workflow_call to build_wheels.yml Signed-off-by: Francisco Javier Arceo * chore: Remove checkout from get-version action (#4959) dev Signed-off-by: Tommy Hughes * chore: Fixing build wheels pre-release image build (#4960) dev Signed-off-by: Tommy Hughes * fix: Updating pypi upload to use legacy repo url (#4962) Signed-off-by: Francisco Javier Arceo * fix: Updating repostiry to repostory url Signed-off-by: Francisco Javier Arceo * converting to dash to see if that works Signed-off-by: Francisco Javier Arceo * fix: Updating pypi publish action and adding name Signed-off-by: Francisco Javier Arceo * fix: moving back to kebab case Signed-off-by: Francisco Javier Arceo * fix: Trying to hardcode gh-action version Signed-off-by: Francisco Javier Arceo * trying new version with oidc false Signed-off-by: Francisco Javier Arceo * trying without attestations Signed-off-by: Francisco Javier Arceo * reverting again to old action and removing checkout action Signed-off-by: Francisco Javier Arceo * reverting code to existing master without actions checkout Signed-off-by: Francisco Javier Arceo * logging token length to validate it and adding quotes to password Signed-off-by: Francisco Javier Arceo * adding logging to the build wheels to see if secret is present there Signed-off-by: Francisco Javier Arceo * adding secrets to jobs keyword Signed-off-by: Francisco Javier Arceo * adding input parameters to build wheels and publish python sdk Signed-off-by: Francisco Javier Arceo * addding inherit Signed-off-by: Francisco Javier Arceo * commenting out the publish python sdk and adding inherit Signed-off-by: Francisco Javier Arceo * commenting out the needs Signed-off-by: Francisco Javier Arceo * removing commented out code and logging to incorporate code that worked Signed-off-by: Francisco Javier Arceo * adding one more change to remove logging Signed-off-by: Francisco Javier Arceo * removing changes outside of actions Signed-off-by: Francisco Javier Arceo * removing makefile change Signed-off-by: Francisco Javier Arceo * removing yamls Signed-off-by: Francisco Javier Arceo * removing changes files and reverting move of file Signed-off-by: Francisco Javier Arceo * reverting changed files Signed-off-by: Francisco Javier Arceo --------- Signed-off-by: Francisco Javier Arceo Signed-off-by: Tommy Hughes Signed-off-by: lrangine <19699092+lokeshrangineni@users.noreply.github.com> Co-authored-by: Tommy Hughes IV Co-authored-by: lokeshrangineni <19699092+lokeshrangineni@users.noreply.github.com> --- .../get-semantic-release-version/action.yml | 87 +++++++++++++++++++ .github/workflows/build_wheels.yml | 80 ++++++++++++----- .../get_semantic_release_version.yml | 84 ------------------ .github/workflows/publish.yml | 28 ++++-- .github/workflows/publish_helm_charts.yml | 31 +++++-- .github/workflows/publish_images.yml | 37 ++++---- .github/workflows/publish_java_sdk.yml | 27 ++++-- .github/workflows/publish_python_sdk.yml | 32 ++++--- .github/workflows/release.yml | 17 ++++ 9 files changed, 264 insertions(+), 159 deletions(-) create mode 100644 .github/actions/get-semantic-release-version/action.yml delete mode 100644 .github/workflows/get_semantic_release_version.yml diff --git a/.github/actions/get-semantic-release-version/action.yml b/.github/actions/get-semantic-release-version/action.yml new file mode 100644 index 0000000000..89f6a8f81c --- /dev/null +++ b/.github/actions/get-semantic-release-version/action.yml @@ -0,0 +1,87 @@ +name: Get semantic release version +description: "" +inputs: + custom_version: # Optional input for a custom version + description: "Custom version to publish (e.g., v1.2.3) -- only edit if you know what you are doing" + required: false + token: + description: "Personal Access Token" + required: true + default: "" +outputs: + release_version: + description: "The release version to use (e.g., v1.2.3)" + value: ${{ steps.get_release_version.outputs.release_version }} + version_without_prefix: + description: "The release version to use without 'v' (e.g., 1.2.3)" + value: ${{ steps.get_release_version_without_prefix.outputs.version_without_prefix }} + highest_semver_tag: + description: "The highest semantic version tag without the 'v' prefix (e.g., 1.2.3)" + value: ${{ steps.get_highest_semver.outputs.highest_semver_tag }} +runs: + using: composite + steps: + - name: Get release version + id: get_release_version + shell: bash + env: + GITHUB_TOKEN: ${{ inputs.token }} + GIT_AUTHOR_NAME: feast-ci-bot + GIT_AUTHOR_EMAIL: feast-ci-bot@willem.co + GIT_COMMITTER_NAME: feast-ci-bot + GIT_COMMITTER_EMAIL: feast-ci-bot@willem.co + run: | + if [[ -n "${{ inputs.custom_version }}" ]]; then + VERSION_REGEX="^v[0-9]+\.[0-9]+\.[0-9]+$" + echo "Using custom version: ${{ inputs.custom_version }}" + if [[ ! "${{ inputs.custom_version }}" =~ $VERSION_REGEX ]]; then + echo "Error: custom_version must match semantic versioning (e.g., v1.2.3)." + exit 1 + fi + echo "::set-output name=release_version::${{ inputs.custom_version }}" + elif [[ "${GITHUB_REF}" == refs/tags/* ]]; then + echo "Using tag reference: ${GITHUB_REF#refs/tags/}" + echo "::set-output name=release_version::${GITHUB_REF#refs/tags/}" + else + echo "Defaulting to branch name: ${GITHUB_REF#refs/heads/}" + echo "::set-output name=release_version::${GITHUB_REF#refs/heads/}" + fi + - name: Get release version without prefix + id: get_release_version_without_prefix + shell: bash + env: + RELEASE_VERSION: ${{ steps.get_release_version.outputs.release_version }} + run: | + if [[ "${RELEASE_VERSION}" == v* ]]; then + echo "::set-output name=version_without_prefix::${RELEASE_VERSION:1}" + else + echo "::set-output name=version_without_prefix::${RELEASE_VERSION}" + fi + - name: Get highest semver + id: get_highest_semver + shell: bash + env: + RELEASE_VERSION: ${{ steps.get_release_version.outputs.release_version }} + run: | + if [[ -n "${{ inputs.custom_version }}" ]]; then + HIGHEST_SEMVER_TAG="${{ inputs.custom_version }}" + echo "::set-output name=highest_semver_tag::$HIGHEST_SEMVER_TAG" + echo "Using custom version as highest semantic version: $HIGHEST_SEMVER_TAG" + else + 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) + echo "Using infra/scripts/setup-common-functions.sh to generate highest semantic version: $HIGHEST_SEMVER_TAG" + fi + fi + - name: Check output + shell: bash + env: + 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 $VERSION_WITHOUT_PREFIX + echo $HIGHEST_SEMVER_TAG \ No newline at end of file diff --git a/.github/workflows/build_wheels.yml b/.github/workflows/build_wheels.yml index e56550291e..8f71b41d08 100644 --- a/.github/workflows/build_wheels.yml +++ b/.github/workflows/build_wheels.yml @@ -1,30 +1,33 @@ -name: build_wheels +name: build wheels # Call this workflow from other workflows in the repository by specifying "uses: ./.github/workflows/build_wheels.yml" # Developers who are starting a new release should use this workflow to ensure wheels will be built correctly. # Devs should check out their fork, add a tag to the last master commit on their fork, and run the release off of their fork on the added tag to ensure wheels will be built correctly. on: - workflow_dispatch: - tags: - - 'v*.*.*' - workflow_call: + workflow_dispatch: # Allows manual trigger of the workflow inputs: - release_version: - description: 'The release version to use (e.g., v1.2.3)' + custom_version: # Optional input for a custom version + description: 'Custom version to publish (e.g., v1.2.3) -- only edit if you know what you are doing' + required: false + type: string + token: + description: 'Personal Access Token' required: true + default: "" + type: string + workflow_call: + inputs: + custom_version: # Optional input for a custom version + description: 'Custom version to publish (e.g., v1.2.3) -- only edit if you know what you are doing' + required: false type: string - highest_semver_tag: - description: 'The highest semantic version tag without the "v" prefix (e.g., 1.2.3)' + token: + description: 'Personal Access Token' required: true + default: "" type: string jobs: - get-version: - uses: ./.github/workflows/get_semantic_release_version.yml - with: - custom_version: ${{ github.event.inputs.custom_version }} - token: ${{ github.event.inputs.token }} - build-python-wheel: name: Build wheels runs-on: ubuntu-latest @@ -42,10 +45,18 @@ jobs: registry-url: 'https://registry.npmjs.org' - name: Build UI run: make build-ui + - id: get-version + uses: ./.github/actions/get-semantic-release-version + with: + custom_version: ${{ github.event.inputs.custom_version }} + token: ${{ github.event.inputs.token }} - name: Build wheels + env: + VERSION: ${{ steps.get-version.outputs.release_version }} + PYPI_PASSWORD: ${{ secrets.PYPI_PASSWORD }} run: | git fetch --tags - git checkout v0.42.0 + git checkout ${VERSION} python -m pip install build python -m build --wheel --outdir wheelhouse/ - uses: actions/upload-artifact@v4 @@ -69,11 +80,18 @@ jobs: with: node-version-file: './ui/.nvmrc' registry-url: 'https://registry.npmjs.org' + - id: get-version + uses: ./.github/actions/get-semantic-release-version + with: + custom_version: ${{ github.event.inputs.custom_version }} + token: ${{ github.event.inputs.token }} - name: Build and install dependencies + env: + VERSION: ${{ steps.get-version.outputs.release_version }} # There's a `git restore` in here because `make install-go-ci-dependencies` is actually messing up go.mod & go.sum. run: | git fetch --tags - git checkout v0.42.0 + git checkout ${VERSION} pip install -U pip setuptools wheel twine make build-ui git status @@ -89,11 +107,12 @@ jobs: # We add this step so the docker images can be built as part of the pre-release verification steps. build-docker-images: + name: Build Docker images runs-on: ubuntu-latest - needs: get-version + needs: [ build-python-wheel, build-source-distribution ] strategy: matrix: - component: [ feature-server, feature-server-java, feature-transformation-server, feast-operator ] + component: [ feature-server-dev, feature-server-java, feature-transformation-server, feast-operator ] env: REGISTRY: feastdev steps: @@ -102,15 +121,23 @@ jobs: uses: docker/setup-qemu-action@v1 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 + - id: get-version + uses: ./.github/actions/get-semantic-release-version + with: + custom_version: ${{ github.event.inputs.custom_version }} + token: ${{ github.event.inputs.token }} - name: Build image + env: + VERSION_WITHOUT_PREFIX: ${{ steps.get-version.outputs.version_without_prefix }} + RELEASE_VERSION: ${{ steps.get-version.outputs.release_version }} run: | + echo "Building docker image for ${{ matrix.component }} with version $VERSION_WITHOUT_PREFIX and release version $RELEASE_VERSION" make build-${{ matrix.component }}-docker REGISTRY=${REGISTRY} VERSION=${VERSION_WITHOUT_PREFIX} - env: - VERSION_WITHOUT_PREFIX: ${{ needs.get-version.outputs.version_without_prefix }} verify-python-wheels: + name: Verify Python wheels runs-on: ${{ matrix.os }} - needs: [ build-python-wheel, build-source-distribution, get-version ] + needs: [ build-python-wheel, build-source-distribution ] strategy: matrix: os: [ ubuntu-latest, macos-13 ] @@ -129,8 +156,8 @@ jobs: else echo "Succeeded!" fi - VERSION_WITHOUT_PREFIX: ${{ needs.get-version.outputs.version_without_prefix }} steps: + - uses: actions/checkout@v4 - name: Setup Python id: setup-python uses: actions/setup-python@v5 @@ -160,7 +187,14 @@ jobs: if: ${{ matrix.from-source }} run: pip install dist/*tar.gz # Validate that the feast version installed is not development and is the correct version of the tag we ran it off of. + - id: get-version + uses: ./.github/actions/get-semantic-release-version + with: + custom_version: ${{ github.event.inputs.custom_version }} + token: ${{ github.event.inputs.token }} - name: Validate Feast Version + env: + VERSION_WITHOUT_PREFIX: ${{ steps.get-version.outputs.version_without_prefix }} run: | feast version if ! VERSION_OUTPUT=$(feast version); then diff --git a/.github/workflows/get_semantic_release_version.yml b/.github/workflows/get_semantic_release_version.yml deleted file mode 100644 index c800810dce..0000000000 --- a/.github/workflows/get_semantic_release_version.yml +++ /dev/null @@ -1,84 +0,0 @@ -name: Get semantic release version - -on: - workflow_dispatch: # Allows manual trigger of the workflow - inputs: - custom_version: # Optional input for a custom version - description: 'Custom version to publish (e.g., v1.2.3) -- only edit if you know what you are doing' - required: false - token: - description: 'Personal Access Token' - required: true - default: "" - type: string - -jobs: - get-version: - if: github.repository == 'feast-dev/feast' - runs-on: ubuntu-latest - env: - GITHUB_TOKEN: ${{ github.event.inputs.token }} - GIT_AUTHOR_NAME: feast-ci-bot - GIT_AUTHOR_EMAIL: feast-ci-bot@willem.co - GIT_COMMITTER_NAME: feast-ci-bot - GIT_COMMITTER_EMAIL: feast-ci-bot@willem.co - 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: - - uses: actions/checkout@v4 - - name: Get release version - id: get_release_version - run: | - if [[ -n "${{ github.event.inputs.custom_version }}" ]]; then - VERSION_REGEX="^v[0-9]+\.[0-9]+\.[0-9]+$" - echo "Using custom version: ${{ github.event.inputs.custom_version }}" - if [[ ! "${{ github.event.inputs.custom_version }}" =~ $VERSION_REGEX ]]; then - echo "Error: custom_version must match semantic versioning (e.g., v1.2.3)." - exit 1 - fi - echo "::set-output name=release_version::${{ github.event.inputs.custom_version }}" - elif [[ "${GITHUB_REF}" == refs/tags/* ]]; then - echo "Using tag reference: ${GITHUB_REF#refs/tags/}" - echo "::set-output name=release_version::${GITHUB_REF#refs/tags/}" - else - echo "Defaulting to branch name: ${GITHUB_REF#refs/heads/}" - echo "::set-output name=release_version::${GITHUB_REF#refs/heads/}" - fi - - name: Get release version without prefix - id: get_release_version_without_prefix - env: - RELEASE_VERSION: ${{ steps.get_release_version.outputs.release_version }} - run: | - if [[ "${RELEASE_VERSION}" == v* ]]; then - echo "::set-output name=version_without_prefix::${RELEASE_VERSION:1}" - else - echo "::set-output name=version_without_prefix::${RELEASE_VERSION}" - fi - - name: Get highest semver - id: get_highest_semver - env: - RELEASE_VERSION: ${{ steps.get_release_version.outputs.release_version }} - run: | - if [[ -n "${{ github.event.inputs.custom_version }}" ]]; then - HIGHEST_SEMVER_TAG="${{ github.event.inputs.custom_version }}" - echo "::set-output name=highest_semver_tag::$HIGHEST_SEMVER_TAG" - echo "Using custom version as highest semantic version: $HIGHEST_SEMVER_TAG" - else - 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) - echo "Using infra/scripts/setup-common-functions.sh to generate highest semantic version: $HIGHEST_SEMVER_TAG" - fi - fi - - name: Check output - env: - 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 $VERSION_WITHOUT_PREFIX - echo $HIGHEST_SEMVER_TAG \ No newline at end of file diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 7afb648771..85c7c0e914 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -9,6 +9,18 @@ on: custom_version: # Optional input for a custom version description: 'Custom version to publish (e.g., v1.2.3) -- only edit if you know what you are doing' required: false + type: string + token: + description: 'Personal Access Token' + required: true + default: "" + type: string + workflow_call: # Allows trigger the workflow from other workflow + inputs: + custom_version: # Optional input for a custom version + description: 'Custom version to publish (e.g., v1.2.3) -- only edit if you know what you are doing' + required: false + type: string token: description: 'Personal Access Token' required: true @@ -16,35 +28,33 @@ on: type: string jobs: - get-version: - uses: ./.github/workflows/get_semantic_release_version.yml - with: - custom_version: ${{ github.event.inputs.custom_version }} - token: ${{ github.event.inputs.token }} - publish-python-sdk: uses: ./.github/workflows/publish_python_sdk.yml + secrets: inherit with: custom_version: ${{ github.event.inputs.custom_version }} token: ${{ github.event.inputs.token }} build-publish-docker-images: uses: ./.github/workflows/publish_images.yml - needs: [ get-version, publish-python-sdk ] + needs: [ publish-python-sdk ] + secrets: inherit with: custom_version: ${{ github.event.inputs.custom_version }} token: ${{ github.event.inputs.token }} publish-helm-charts: uses: ./.github/workflows/publish_helm_charts.yml - needs: [ get-version, publish-python-sdk ] + needs: [ publish-python-sdk ] + secrets: inherit with: custom_version: ${{ github.event.inputs.custom_version }} token: ${{ github.event.inputs.token }} publish-java-sdk: uses: ./.github/workflows/publish_java_sdk.yml - needs: [ get-version, publish-python-sdk ] + needs: [ publish-python-sdk ] + secrets: inherit with: custom_version: ${{ github.event.inputs.custom_version }} token: ${{ github.event.inputs.token }} diff --git a/.github/workflows/publish_helm_charts.yml b/.github/workflows/publish_helm_charts.yml index 185caaced2..9d28e2efd2 100644 --- a/.github/workflows/publish_helm_charts.yml +++ b/.github/workflows/publish_helm_charts.yml @@ -6,6 +6,18 @@ on: custom_version: # Optional input for a custom version description: 'Custom version to publish (e.g., v1.2.3) -- only edit if you know what you are doing' required: false + type: string + token: + description: 'Personal Access Token' + required: true + default: "" + type: string + workflow_call: # Allows trigger of the workflow from another workflow + inputs: + custom_version: # Optional input for a custom version + description: 'Custom version to publish (e.g., v1.2.3) -- only edit if you know what you are doing' + required: false + type: string token: description: 'Personal Access Token' required: true @@ -13,21 +25,20 @@ on: type: string jobs: - get-version: - uses: ./.github/workflows/get_semantic_release_version.yml - with: - custom_version: ${{ github.event.inputs.custom_version }} - token: ${{ github.event.inputs.token }} - publish-helm-charts: if: github.repository == 'feast-dev/feast' runs-on: ubuntu-latest - needs: get-version env: HELM_VERSION: v3.8.0 - VERSION_WITHOUT_PREFIX: ${{ needs.get-version.outputs.version_without_prefix }} steps: - uses: actions/checkout@v4 + with: + submodules: 'true' + - id: get-version + uses: ./.github/actions/get-semantic-release-version + with: + custom_version: ${{ github.event.inputs.custom_version }} + token: ${{ github.event.inputs.token }} - name: Authenticate to Google Cloud uses: 'google-github-actions/auth@v1' with: @@ -44,7 +55,11 @@ jobs: - name: Validate Helm chart prior to publishing run: ./infra/scripts/helm/validate-helm-chart-publish.sh - name: Validate all version consistency + env: + VERSION_WITHOUT_PREFIX: ${{ steps.get-version.outputs.version_without_prefix }} run: ./infra/scripts/helm/validate-helm-chart-versions.sh $VERSION_WITHOUT_PREFIX - name: Publish Helm charts + env: + VERSION_WITHOUT_PREFIX: ${{ steps.get-version.outputs.version_without_prefix }} run: ./infra/scripts/helm/push-helm-charts.sh $VERSION_WITHOUT_PREFIX diff --git a/.github/workflows/publish_images.yml b/.github/workflows/publish_images.yml index 91a36efa75..f605fb20df 100644 --- a/.github/workflows/publish_images.yml +++ b/.github/workflows/publish_images.yml @@ -11,18 +11,22 @@ on: required: true default: "" type: string + workflow_call: # Allows trigger of the workflow from another workflow + inputs: + custom_version: # Optional input for a custom version + description: 'Custom version to publish (e.g., v1.2.3) -- only edit if you know what you are doing' + required: false + type: string + token: + description: 'Personal Access Token' + required: true + default: "" + type: string jobs: - get-version: - uses: ./.github/workflows/get_semantic_release_version.yml - with: - custom_version: ${{ github.event.inputs.custom_version }} - token: ${{ github.event.inputs.token }} - build-publish-docker-images: if: github.repository == 'feast-dev/feast' runs-on: ubuntu-latest - needs: [ get-version ] strategy: matrix: component: [ feature-server, feature-server-java, feature-transformation-server, feast-helm-operator, feast-operator ] @@ -31,6 +35,13 @@ jobs: REGISTRY: feastdev steps: - uses: actions/checkout@v4 + with: + submodules: 'true' + - id: get-version + uses: ./.github/actions/get-semantic-release-version + with: + custom_version: ${{ github.event.inputs.custom_version }} + token: ${{ github.event.inputs.token }} - name: Set up QEMU uses: docker/setup-qemu-action@v1 - name: Set up Docker Buildx @@ -52,17 +63,14 @@ jobs: run: gcloud info - run: gcloud auth configure-docker --quiet - name: Build image + env: + VERSION_WITHOUT_PREFIX: ${{ steps.get-version.outputs.version_without_prefix }} run: | make build-${{ matrix.component }}-docker REGISTRY=${REGISTRY} VERSION=${VERSION_WITHOUT_PREFIX} - 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 }} - name: Push versioned images 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 }} + VERSION_WITHOUT_PREFIX: ${{ steps.get-version.outputs.version_without_prefix }} + HIGHEST_SEMVER_TAG: ${{ steps.get-version.outputs.highest_semver_tag }} run: | make push-${{ matrix.component }}-docker REGISTRY=${REGISTRY} VERSION=${VERSION_WITHOUT_PREFIX} @@ -72,4 +80,3 @@ jobs: docker tag feastdev/${{ matrix.component }}:${VERSION_WITHOUT_PREFIX} feastdev/${{ matrix.component }}:latest docker push feastdev/${{ matrix.component }}:latest fi - diff --git a/.github/workflows/publish_java_sdk.yml b/.github/workflows/publish_java_sdk.yml index 0e28769869..f89c384b12 100644 --- a/.github/workflows/publish_java_sdk.yml +++ b/.github/workflows/publish_java_sdk.yml @@ -6,28 +6,39 @@ on: custom_version: # Optional input for a custom version description: 'Custom version to publish (e.g., v1.2.3) -- only edit if you know what you are doing' required: false + type: string + token: + description: 'Personal Access Token' + required: true + default: "" + type: string + workflow_call: # Allows trigger of the workflow from another workflow + inputs: + custom_version: # Optional input for a custom version + description: 'Custom version to publish (e.g., v1.2.3) -- only edit if you know what you are doing' + required: false + type: string token: description: 'Personal Access Token' required: true default: "" type: string -jobs: - get-version: - uses: ./.github/workflows/get_semantic_release_version.yml - with: - custom_version: ${{ github.event.inputs.custom_version }} - token: ${{ github.event.inputs.token }} +jobs: publish-java-sdk: if: github.repository == 'feast-dev/feast' container: maven:3.6-jdk-11 runs-on: ubuntu-latest - needs: [ get-version ] steps: - uses: actions/checkout@v4 with: submodules: 'true' + - id: get-version + uses: ./.github/actions/get-semantic-release-version + with: + custom_version: ${{ github.event.inputs.custom_version }} + token: ${{ github.event.inputs.token }} - name: Set up JDK 11 uses: actions/setup-java@v1 with: @@ -46,7 +57,7 @@ jobs: ${{ runner.os }}-it-maven- - name: Publish java sdk env: - VERSION_WITHOUT_PREFIX: ${{ needs.get-version.outputs.version_without_prefix }} + VERSION_WITHOUT_PREFIX: ${{ steps.get-version.outputs.version_without_prefix }} GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }} GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }} MAVEN_SETTINGS: ${{ secrets.MAVEN_SETTINGS }} diff --git a/.github/workflows/publish_python_sdk.yml b/.github/workflows/publish_python_sdk.yml index d6b526791d..03d0e989b4 100644 --- a/.github/workflows/publish_python_sdk.yml +++ b/.github/workflows/publish_python_sdk.yml @@ -6,6 +6,19 @@ on: custom_version: # Optional input for a custom version description: 'Custom version to publish (e.g., v1.2.3) -- only edit if you know what you are doing' required: false + type: string + token: + description: 'Personal Access Token' + required: true + default: "" + type: string + + workflow_call: # Allows trigger of the workflow from another workflow + inputs: + custom_version: # Optional input for a custom version + description: 'Custom version to publish (e.g., v1.2.3) -- only edit if you know what you are doing' + required: false + type: string token: description: 'Personal Access Token' required: true @@ -13,29 +26,24 @@ on: type: string jobs: - get-version: - uses: ./.github/workflows/get_semantic_release_version.yml + build-wheels: + uses: ./.github/workflows/build_wheels.yml + secrets: inherit with: custom_version: ${{ github.event.inputs.custom_version }} token: ${{ github.event.inputs.token }} - build_wheels: - uses: ./.github/workflows/build_wheels.yml - needs: get-version - with: - release_version: ${{ needs.get-version.outputs.release_version }} - highest_semver_tag: ${{ needs.get-version.outputs.highest_semver_tag }} - publish-python-sdk: if: github.repository == 'feast-dev/feast' runs-on: ubuntu-latest - needs: [ get-version, build_wheels ] + needs: [ build-wheels ] steps: - uses: actions/download-artifact@v4.1.7 with: name: python-wheels path: dist - - uses: pypa/gh-action-pypi-publish@v1.4.2 + - name: Publish package to PyPI + uses: pypa/gh-action-pypi-publish@v1.4.2 with: user: __token__ - password: ${{ secrets.PYPI_PASSWORD }} + password: ${{ secrets.PYPI_PASSWORD }} \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 961c141286..5e95950cbe 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,6 +18,23 @@ on: required: true default: true type: boolean + workflow_call: + inputs: + dry_run: + description: 'Dry Run' + required: true + default: true + type: boolean + token: + description: 'Personal Access Token' + required: true + default: "" + type: string + publish_ui: + description: 'Publish to NPM?' + required: true + default: true + type: boolean jobs: get_dry_release_versions: