name: java-integration-tests-and-build on: push: branches: - master tags: - 'v*.*.*' jobs: build-docker-images: if: github.repository == 'feast-dev/feast' runs-on: ubuntu-latest strategy: matrix: component: [feature-server-java] env: MAVEN_CACHE: gs://feast-templocation-kf-feast/.m2.2020-08-19.tar REGISTRY: gcr.io/kf-feast steps: - uses: actions/checkout@v2 with: submodules: 'true' - uses: google-github-actions/setup-gcloud@v0 with: version: '290.0.1' export_default_credentials: true project_id: ${{ secrets.GCP_PROJECT_ID }} service_account_key: ${{ secrets.GCP_SA_KEY }} - run: gcloud auth configure-docker --quiet - name: Get m2 cache run: | infra/scripts/download-maven-cache.sh \ --archive-uri ${MAVEN_CACHE} \ --output-dir . - name: Get version run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV - name: Build image run: make build-${{ matrix.component }}-docker REGISTRY=${REGISTRY} VERSION=${GITHUB_SHA} - name: Push image run: make push-${{ matrix.component }}-docker REGISTRY=${REGISTRY} VERSION=${GITHUB_SHA} - name: Push development Docker image run: | if [ ${GITHUB_REF#refs/*/} == "master" ]; then docker tag ${REGISTRY}/${{ matrix.component }}:${GITHUB_SHA} ${REGISTRY}/${{ matrix.component }}:develop docker push ${REGISTRY}/${{ matrix.component }}:develop fi lint-java: if: github.repository == 'feast-dev/feast' runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: submodules: 'true' - name: Lint java run: make lint-java unit-test-java: if: github.repository == 'feast-dev/feast' runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: submodules: 'true' - name: Set up JDK 11 uses: actions/setup-java@v1 with: java-version: '11' java-package: jdk architecture: x64 - uses: actions/cache@v2 with: path: ~/.m2/repository key: ${{ runner.os }}-it-maven-${{ hashFiles('**/pom.xml') }} restore-keys: | ${{ runner.os }}-it-maven- - uses: actions/cache@v2 with: path: ~/.m2/repository key: ${{ runner.os }}-ut-maven-${{ hashFiles('**/pom.xml') }} restore-keys: | ${{ runner.os }}-ut-maven- - name: Test java run: make test-java-with-coverage - uses: actions/upload-artifact@v2 with: name: java-coverage-report path: ${{ github.workspace }}/docs/coverage/java/target/site/jacoco-aggregate/ integration-test: if: github.repository == 'feast-dev/feast' runs-on: ubuntu-latest env: PYTHON: 3.8 steps: - uses: actions/checkout@v2 with: submodules: 'true' - name: Set up JDK 11 uses: actions/setup-java@v1 with: java-version: '11' java-package: jdk architecture: x64 - name: Setup Python (to call feast apply) uses: actions/setup-python@v2 id: setup-python with: python-version: 3.8 architecture: x64 - name: Setup Go id: setup-go uses: actions/setup-go@v2 with: go-version: 1.18.0 - name: Upgrade pip version run: | pip install --upgrade "pip>=21.3.1,<22.1" - name: Get pip cache dir id: pip-cache run: | echo "::set-output name=dir::$(pip cache dir)" - name: pip cache uses: actions/cache@v2 with: path: | ${{ steps.pip-cache.outputs.dir }} /opt/hostedtoolcache/Python /Users/runner/hostedtoolcache/Python key: ${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-pip-${{ hashFiles(format('**/py{0}-ci-requirements.txt', env.PYTHON)) }} restore-keys: | ${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-pip- - name: Install pip-tools run: pip install pip-tools - name: Install apache-arrow on ubuntu run: | sudo apt update sudo apt install -y -V ca-certificates lsb-release wget wget https://apache.jfrog.io/artifactory/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb sudo apt install -y -V ./apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb sudo apt update sudo apt install -y -V libarrow-dev - name: Install Python dependencies run: make install-python-ci-dependencies - uses: actions/cache@v2 with: path: ~/.m2/repository key: ${{ runner.os }}-it-maven-${{ hashFiles('**/pom.xml') }} restore-keys: | ${{ runner.os }}-it-maven- - name: Set up gcloud SDK uses: google-github-actions/setup-gcloud@v0 with: project_id: ${{ secrets.GCP_PROJECT_ID }} service_account_key: ${{ secrets.GCP_SA_KEY }} export_default_credentials: true - name: Use gcloud CLI run: gcloud info - name: Set up AWS SDK uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: us-west-2 - name: Use AWS CLI run: aws sts get-caller-identity - name: Run integration tests run: make test-java-integration