name: Publish to Guardrails Hub description: Re-Usable action to publish a Validator to Guardrails PyPi inputs: validator_id: description: 'Validator ID ex. guardrails/detect_pii' required: true guardrails_token: description: 'Guardrails Token' required: true pypi_repository_url: description: 'PyPi Repository URL' required: false default: 'https://pypi.guardrailsai.com' package_directory: description: 'Package Directory "validator" or "some_parent_folder/package"' required: false default: 'validator' runs: using: "composite" steps: - name: Checkout "Validator" Repository uses: actions/checkout@v3 with: path: ${{ inputs.package_directory }} - name: Checkout "Action" repository uses: actions/checkout@v3 with: repository: guardrails-ai/guardrails ref: main path: shared-ci-scripts sparse-checkout: | .github - name: Set up Python uses: actions/setup-python@v4 with: python-version: '3.10' - name: Install Twine & Build shell: bash run: | python -m pip install --upgrade pip pip install twine build toml - name: Create .pypirc shell: bash run: | touch ~/.pypirc echo "[distutils]" >> ~/.pypirc echo "index-servers =" >> ~/.pypirc echo " private-repository" >> ~/.pypirc echo "" >> ~/.pypirc echo "[private-repository]" >> ~/.pypirc echo "repository = ${{ inputs.pypi_repository_url }}" >> ~/.pypirc echo "username = __token__" >> ~/.pypirc echo "password = ${{ inputs.guardrails_token }}" >> ~/.pypirc - name: Move CI Scripts to Validator shell: bash run: | mv shared-ci-scripts/.github/actions/validator_pypi_publish/*.py ./${{ inputs.package_directory }} - name: Rename Package shell: bash run: | cd ${{ inputs.package_directory }} CONCATANATED_NAME=$(python concat_name.py ${{ inputs.validator_id }}) NEW_PEP_PACKAGE_NAME=$(python package_name_normalization.py $CONCATANATED_NAME) VALIDATOR_FOLDER_NAME=$(echo $NEW_PEP_PACKAGE_NAME | tr - _) mv ./${{ inputs.package_directory }} ./$VALIDATOR_FOLDER_NAME python add_build_prefix.py ./pyproject.toml $NEW_PEP_PACKAGE_NAME $VALIDATOR_FOLDER_NAME - name: Build & Upload shell: bash run: | cd ${{ inputs.package_directory }} python -m build twine upload dist/* -u __token__ -p ${{ inputs.guardrails_token }} -r private-repository