You need to sign in or sign up before continuing.
package-build.template.yml 2.11 KiB
# 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}/**/*