# CI Build Template .build-package: image: python:3.10 script: - apt-get update -y && apt-get install jq -y # Enter the package directory - echo building package in $PACKAGE_PATH - export CAPO_PATH=$PWD - export CAPO_PROFILE=docker - WD=$PWD - cd ${PACKAGE_PATH} # Make symbolic link of python3 install to where it's installed on dev - mkdir -p /home/ssa/bin - ln -s "$(which python3)" /home/ssa/bin/python3.10 - export PATH=$PATH:/home/ssa/bin # Install build, poetry and pytest - pip install poetry - poetry env use /home/ssa/bin/python3.10 # Install the package for testing - poetry install --with test - $(poetry env info -p)/bin/pytest . # once tests pass, look to see if there is a conflicting version in pypi registry - PACKAGE_NAME=$(basename $PWD) - echo $PACKAGE_NAME version $RELEASE_VERSION - >- DELETE_URL_RESPONSE=$(curl --header "PRIVATE-TOKEN: ${API_TOKEN}" "https://gitlab.nrao.edu/api/v4/projects/$CI_PROJECT_ID/packages?package_type=pypi&package_name=$PACKAGE_NAME" | jq -r --arg RELEASE_VERSION "$RELEASE_VERSION" '.[] | {"name": .name, "version": .version, "url":._links.delete_api_path} | select(.version==$RELEASE_VERSION) | .url') - echo $DELETE_URL_RESPONSE # if a conflicting version is present in pypi registry, remove it - | if [[ -n "$DELETE_URL_RESPONSE" ]] then $(curl --request DELETE --header "PRIVATE-TOKEN: ${API_TOKEN}" "$DELETE_URL_RESPONSE") fi # Now that package registry is cleared, Build the package and push to the gitlab repo - poetry build - poetry config repositories.gitlab "https://gitlab.nrao.edu/api/v4/projects/$CI_PROJECT_ID/packages/pypi" - poetry config http-basic.gitlab gitlab-ci-token "$CI_JOB_TOKEN" - poetry publish --repository gitlab # Return to the parent directory - cd $WD rules: - changes: - ${PACKAGE_PATH}/**/*