{"id":25689797,"url":"https://github.com/zcemycl/pypack-guide","last_synced_at":"2026-04-18T05:33:44.750Z","repository":{"id":63013041,"uuid":"560443516","full_name":"zcemycl/pypack-guide","owner":"zcemycl","description":"To demonstrate automatic release and publish the package.","archived":false,"fork":false,"pushed_at":"2022-11-20T13:05:53.000Z","size":45,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-30T05:14:11.488Z","etag":null,"topics":["azure-artifacts","azure-devops","azure-pipelines","git","publish","pypi-package","pytest","python","release-automation"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zcemycl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-11-01T14:12:48.000Z","updated_at":"2022-11-12T00:11:18.000Z","dependencies_parsed_at":"2023-01-22T18:00:57.644Z","dependency_job_id":null,"html_url":"https://github.com/zcemycl/pypack-guide","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/zcemycl/pypack-guide","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zcemycl%2Fpypack-guide","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zcemycl%2Fpypack-guide/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zcemycl%2Fpypack-guide/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zcemycl%2Fpypack-guide/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zcemycl","download_url":"https://codeload.github.com/zcemycl/pypack-guide/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zcemycl%2Fpypack-guide/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31957618,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["azure-artifacts","azure-devops","azure-pipelines","git","publish","pypi-package","pytest","python","release-automation"],"created_at":"2025-02-24T22:01:55.971Z","updated_at":"2026-04-18T05:33:44.734Z","avatar_url":"https://github.com/zcemycl.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"### pypack-guide\n\n#### Setup\n1. Git clone the repository.\n    ```\n    git clone https://github.com/zcemycl/pypack-guide.git\n    ```\n2. Add multiple remote repositories.\n    ```\n    git remote set-url origin --push --add https://github.com/zcemycl/pypack-guide.git\n    git remote set-url origin --push --add https://leoleung0900@dev.azure.com/leoleung0900/pypack-guide/_git/pypack-guide\n    git remote set-url origin --push --add https://leoleung0900@dev.azure.com/leoleung0900/dummy/_git/dummy\n    ```\n3. Install testing env.\n    ```\n    pip install -e '.[testing]'\n    ```\n4. Set up precommit hook.\n    ```\n    pip install pre-commit\n    pre-commit install\n    pre-commit run\n    pre-commit run --all-files\n    ```\n5. Start contributing!!\n    ```\n    git add .\n    git commit -m 'message'\n    git push\n    ```\n\n#### Push package\n1. Build the package.\n    ```\n    python setup.py sdist bdist_wheel\n    ```\n2. Upload to pypi website.\n    ```\n    python -m twine upload dist/*\n    twine upload dist/* -u** -p**\n    ```\n3. Upload to azure devops.\n    ```\n    python -m twine upload -r leoleung0900 --config-file .pyazrc dist/*\n    twine upload -r pypack-guide --config-file .pyazrc dist/*\n    ```\n\n#### Install package\n1. Install from public pypi package.\n    ```\n    pip install pypack-guide\n    ```\n2. Install from private azure package.\n    ```\n    pip install pypack-guide==0.1.dev23 \\\n        --index-url https://\u003cyour-feed-name\u003e:\u003cpat-key\u003e@pkgs.dev.azure.com/leoleung0900/_packaging/leoleung0900/pypi/simple\n    # or\n    pip install pypack-guide --extra-index-url=https://\u003cyour-feed-name\u003e:\u003cpat-key\u003e@pkgs.dev.azure.com/leoleung0900/pypack-guide/_packaging/leoleung0900/pypi/simple/\n    ```\n\n#### Release and Publish Package\n1. Create new release.\n    ```\n    git tag v0.0.0\n    git push origin v0.0.0\n    ```\n2. Update the release with specific tag.\n    ```\n    git checkout v0.0.0\n    # make changes\n    git commit -am 'commit messages'\n    git tag -f v0.0.0\n    git push origin --delete v0.0.0\n    git push origin v0.0.0\n    ```\n\n#### Notes\n1. Twine upload to azure devops step can be used in github action too.\n2. Need requirement.txt and conda.yml testings for installation.\n3. Azure Devops check in branches can be ignored.\n\n#### References\n1. [Twine Documentation](https://twine.readthedocs.io/en/stable/)\n2. [Get started with Python packages in Azure Artifacts](https://learn.microsoft.com/en-us/azure/devops/artifacts/quickstarts/python-packages?view=azure-devops)\n3. [Automate PyPi releases with Github Actions](https://medium.com/@VersuS_/automate-pypi-releases-with-github-actions-4c5a9cfe947d)\n4. [“tag already exists in the remote\" error after recreating the git tag](https://stackoverflow.com/questions/19298600/tag-already-exists-in-the-remote-error-after-recreating-the-git-tag)\n5. [GitHub Action Automatic Releases](https://github.com/marketplace/actions/automatic-releases#supported-parameters)\n6. [How to Publish a Python Package from GitHub Actions](https://www.seanh.cc/2022/05/21/publishing-python-packages-from-github-actions/)\n7. [Git tag](https://www.atlassian.com/git/tutorials/inspecting-a-repository/git-tag)\n8. [Publish Python packages with Azure Pipelines](https://learn.microsoft.com/en-us/azure/devops/pipelines/artifacts/pypi?view=azure-devops\u0026tabs=yaml)\n9. [Publish and download pipeline Artifacts](https://learn.microsoft.com/en-us/azure/devops/pipelines/artifacts/pipeline-artifacts?view=azure-devops\u0026tabs=yaml)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzcemycl%2Fpypack-guide","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzcemycl%2Fpypack-guide","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzcemycl%2Fpypack-guide/lists"}