Skip to content

ci: adding github actions to build and publish Galaxy #58

ci: adding github actions to build and publish Galaxy

ci: adding github actions to build and publish Galaxy #58

Workflow file for this run

# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python
name: Build and Test Galaxy
on:
# push:
# branches: [ "main" ]
pull_request:
jobs:
build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.11"]
env:
CI_REGISTRY_IMAGE: "devrelyio/galaxy"
HELM_CHART_REGISTRY_DOMAIN: "registry-1.docker.io"
HELM_CHART_REGISTRY: "oci://${HELM_CHART_REGISTRY_DOMAIN}/devrelyio"
HELM_CHART_PATH: ./deploy/helm/galaxy
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5.2.0
with:
python-version: ${{ matrix.python-version }}
- name: Setup environment
env:
GITHUB_PATH: ${{ github.path }}
VENV_PATH: "$GITHUB_PATH/.venv"
# POETRY_HOME: "$GITHUB_PATH/.cache/.poetry"
POETRY_HOME: "$GITHUB_PATH/.poetry"
BIN_PATH: "$GITHUB_PATH/.bin"
run: |
mkdir -p ${VENV_PATH} ${POETRY_HOME} ${BIN_PATH}
export PATH="${VENV_PATH}/bin:${POETRY_HOME}/bin:${BIN_PATH}:$PATH"
export PYTHONUNBUFFERED=1
export PYTHONDONTWRITEBYTECODE=1
export POETRY_VIRTUALENVS_IN_PROJECT=true
export POETRY_VIRTUALENVS_CREATE=true
sudo apt-get update && sudo apt-get install --no-install-recommends -y build-essential curl git
cp /usr/bin/make ${BIN_PATH}
- name: Install dependencies
run: |
make install
- name: Run linter
run: |
make lint
- name: Run tests
run: |
make test
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Docker Login
uses: docker/login-action@v3.3.0
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_SECRET }}
- name: describe tags
id: describe_tags
run: |
echo "IMAGE_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "0.0.0")-build.${GITHUB_RUN_ID}-${GITHUB_SHA}" >> "$GITHUB_OUTPUT"
- name: Build and push docker image
uses: docker/build-push-action@v6
with:
file: deploy/docker/Dockerfile
push: true
cache-from: type=gha
cache-to: type=gha,mode=max
tags: ${{ env.CI_REGISTRY_IMAGE }}:${{ steps.describe_tags.outputs.IMAGE_TAG }}
platforms: linux/amd64,linux/arm64
- name: Package and Publish Helm Chart
run: |
echo "Type of trigger: $GITHUB_REF_TYPE"
echo "Building Helm Chart with version $GITHUB_REF_NAME"
sed -i "s+repository.*+repository:\ $CI_REGISTRY_IMAGE+g" $HELM_CHART_PATH/values.yaml
sed -i "s+tag.*+tag:\ $GITHUB_REF_NAME+g" $HELM_CHART_PATH/values.yaml
helm package $HELM_CHART_PATH -d . --version $GITHUB_REF_NAME
HELM_PACKAGE_NAME=$(ls *.tgz)
mkdir -p ./public
helm package $HELM_CHART_PATH --destination ./public --version $GITHUB_REF_NAME
echo $DOCKER_HUB_SECRET | helm registry login "$HELM_CHART_REGISTRY_DOMAIN" -u $DOCKER_HUB_USERNAME --password-stdin