Skip to content

CI

CI #3

Workflow file for this run

# Copyright 2023 Iguazio
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
name: CI
on:
release:
types:
- created
jobs:
test-go:
name: Lint & test Go code
runs-on: ubuntu-latest
steps:
- name: Dump github context
run: echo "$GITHUB_CONTEXT"
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
- name: Dump runner context
run: echo "$RUNNER_CONTEXT"
env:
RUNNER_CONTEXT: ${{ toJson(runner) }}
- name: Dump github ref
run: echo "$GITHUB_REF"
- uses: actions/setup-go@v3
with:
go-version: "^1.19.5"
- uses: actions/checkout@v3
# This gets killed, probably due to memory usage
# - name: Lint
# run: make lint
- name: Run Go tests
run: make test-go
env:
V3IO_API: ${{ secrets.V3IO_API }}
V3IO_ACCESS_KEY: ${{ secrets.V3IO_ACCESS_KEY }}
V3IO_SESSION: container=bigdata,user=admin
test-py:
name: Lint & test Python code
runs-on: ubuntu-latest
env:
V3IO_API: ${{ secrets.V3IO_API }}
V3IO_ACCESS_KEY: ${{ secrets.V3IO_ACCESS_KEY }}
V3IO_SESSION: container=bigdata
steps:
- name: Dump github context
run: echo "$GITHUB_CONTEXT"
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
- name: Dump runner context
run: echo "$RUNNER_CONTEXT"
env:
RUNNER_CONTEXT: ${{ toJson(runner) }}
- name: Dump github ref
run: echo "$GITHUB_REF"
- uses: actions/checkout@v3
- name: Set up python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: 3.7
- name: Install dependencies
run: make python-deps
- name: Lint Python code
run: make flake8
- name: Run Python tests
run: make test-py
release-docker:
name: Release to docker repository
runs-on: ubuntu-latest
if: github.event_name == 'release'
needs:
- test-go
- test-py
steps:
- name: Dump GitHub context
run: echo "$GITHUB_CONTEXT"
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
- name: Dump runner context
run: echo "$RUNNER_CONTEXT"
env:
RUNNER_CONTEXT: ${{ toJson(runner) }}
- name: Dump github ref
run: echo "$GITHUB_REF"
- uses: actions/checkout@v3
- uses: actions/setup-go@v3
with:
go-version: "^1.19.5"
- name: Build binaries for ${{ matrix.go-os }}
run: make frames-bin
env:
GOARCH: amd64
GOOS: linux
FRAMES_TAG: ${{ github.event.release.tag_name }}
- name: Upload binaries
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh release upload ${{ github.event.release.tag_name }} framesd-*
- name: Login to GCR
run: echo "$GCR_JSON_KEY" | docker login -u _json_key --password-stdin https://gcr.io
env:
GCR_JSON_KEY: ${{ secrets.GCR_IGUAZIO_JSON_KEY }}
- name: Set image tag
run: |
echo FRAMES_TAG=`echo ${{ github.event.release.tag_name }} | sed s/^v//` >> $GITHUB_ENV
cat $GITHUB_ENV
- name: Build docker image
run: make build
env:
GOARCH: amd64
GOOS: linux
FRAMES_REPOSITORY: gcr.io/iguazio/
- name: Push frames image to GCR
run: docker push gcr.io/iguazio/frames:${{ env.FRAMES_TAG }}
release-docker-internal:
name: Release to internal docker repository
runs-on: [ self-hosted, linux ]
if: github.event_name == 'release'
needs:
- release-docker
steps:
- name: Login to artifactory
run: docker login -u ${{ secrets.ARTIFACTORY_DOCKER_USERNAME }} -p ${{ secrets.ARTIFACTORY_DOCKER_PASSWORD }} ${{ vars.ARTIFACTORY_REGISTRY }}
- name: Set image tag
run: |
echo FRAMES_TAG=`echo ${{ github.event.release.tag_name }} | sed s/^v//` >> $GITHUB_ENV
cat $GITHUB_ENV
- name: Pull docker from public repository
run: docker pull gcr.io/iguazio/frames:${{ env.FRAMES_TAG }}
- name: Tag frames image for artifactory
run: docker tag gcr.io/iguazio/frames:${{ env.FRAMES_TAG }} ${{ vars.ARTIFACTORY_REGISTRY }}/iguazio/frames:${{ env.FRAMES_TAG }}
- name: Push frames image to artifactory
run: docker push ${{ vars.ARTIFACTORY_REGISTRY }}/iguazio/frames:${{ env.FRAMES_TAG }}
release-python-library:
name: Release python library
runs-on: ubuntu-latest
if: github.event_name == 'release'
needs:
- release-docker-internal
steps:
- uses: actions/checkout@v3
- name: Set up python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: 3.7
- name: Set version
run: make set-version
- name: Build v3io-frames python distribution
run: make python-dist
- name: Publish to PyPi
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_TOKEN }}
packages_dir: clients/py/dist/