chore(publish): anaconda #35
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Publish | |
on: | |
release: | |
types: [published] | |
pull_request: | |
jobs: | |
deploy: | |
name: Deploy to package index | |
runs-on: ubuntu-20.04 | |
env: | |
PYTHON_VERSION: 3.9 | |
REPOSITORY_USERNAME: ${{ secrets.PYPI_USERNAME }} | |
REPOSITORY_PASSWORD: ${{ secrets.PYPI_PASSWORD }} | |
REPOSITORY_URL: ${{ secrets.PYPI_PUBLISH_URL }} | |
ANACONDA_TOKEN: ${{ secrets.ANACONDA_TOKEN }} | |
CONDA_ENV_NAME: conda-env | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
- name: Setup Conda | |
uses: conda-incubator/setup-miniconda@v3 | |
with: | |
miniconda-version: "latest" | |
activate-environment: ${{ env.CONDA_ENV_NAME }} | |
python-version: ${{ env.PYTHON_VERSION }} | |
- name: Install Poetry | |
uses: snok/install-poetry@v1 | |
- name: Configure Poetry | |
run: | | |
poetry config repositories.publish $REPOSITORY_URL | |
poetry config http-basic.publish $REPOSITORY_USERNAME $REPOSITORY_PASSWORD | |
- name: Build | |
run: | | |
poetry build | |
- name: Publish to Anaconda | |
shell: bash -el {0} | |
run: | | |
count=0 | |
max_retries=5 | |
tag=${{ github.event.release.tag_name }} | |
version=0.10.0 | |
while [ $count -lt $max_retries ]; do | |
if pip install fds.sdk.utils==${version} --dry-run &>/dev/null; then | |
echo "Version ${version} of fds.sdk.utils is available on PyPI." | |
conda install grayskull conda-build anaconda-client | |
conda info | |
conda list | |
grayskull --version | |
anaconda --version | |
# Create meta.yaml recipe for the package pulled from PyPi | |
grayskull pypi fds.sdk.utils==${version} | |
# Modify the meta.yaml recipe-maintainers property to include all maintainers of this repo | |
sed -i "/recipe-maintainers:/,/extra:/ s/- .*/- gdulafactset/" fds.sdk.utils/meta.yaml | |
echo " - mima0815" >> fds.sdk.utils/meta.yaml | |
echo " - eschmidtfds" >> fds.sdk.utils/meta.yaml | |
echo " - Filip1x9" >> fds.sdk.utils/meta.yaml | |
echo " - dgawande12" >> fds.sdk.utils/meta.yaml | |
# Modify meta.yaml to include description and dev_url | |
sed -i "/about:/a \\ | |
dev_url: \"https://github.com/factset/enterprise-sdk-utils-python\"\\ | |
description: \"This repository contains a collection of utilities that supports FactSet's SDK in Python and facilitate usage of FactSet APIs.\" | |
" "fds.sdk.utils/meta.yaml" | |
cat fds.sdk.utils/meta.yaml | |
# Build conda package | |
conda config --set anaconda_upload no | |
package_file=$(conda build fds.sdk.utils --output) | |
conda build fds.sdk.utils | |
# anaconda -t $ANACONDA_TOKEN upload -u factset -l main ${package_file} | |
break | |
else | |
echo "Version ${version} not found, rechecking in $((2 ** count)) seconds..." | |
sleep $((2 ** count)) | |
count=$((count + 1)) | |
fi | |
done | |
if [ $count -eq $max_retries ]; then | |
echo "Maximum retries reached, package with that version was not found, publish failed." | |
exit 1 | |
fi |