{"id":18496092,"url":"https://github.com/coatl-dev/actions","last_synced_at":"2026-04-29T00:01:20.338Z","repository":{"id":199754512,"uuid":"703721770","full_name":"coatl-dev/actions","owner":"coatl-dev","description":"⚡️ A collection of custom GitHub Actions.","archived":false,"fork":false,"pushed_at":"2026-04-28T22:06:35.000Z","size":269,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"coatl","last_synced_at":"2026-04-28T23:18:24.664Z","etag":null,"topics":["coatl","github-actions"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/coatl-dev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"cesarcoatl"}},"created_at":"2023-10-11T19:25:58.000Z","updated_at":"2026-04-28T22:06:39.000Z","dependencies_parsed_at":"2023-11-27T16:50:51.685Z","dependency_job_id":"1fae33f5-ba3a-4a23-9b5c-1098ac3099a6","html_url":"https://github.com/coatl-dev/actions","commit_stats":null,"previous_names":["coatl-dev/actions"],"tags_count":63,"template":false,"template_full_name":null,"purl":"pkg:github/coatl-dev/actions","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coatl-dev%2Factions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coatl-dev%2Factions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coatl-dev%2Factions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coatl-dev%2Factions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coatl-dev","download_url":"https://codeload.github.com/coatl-dev/actions/tar.gz/refs/heads/coatl","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coatl-dev%2Factions/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32404340,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-28T19:38:08.556Z","status":"ssl_error","status_checked_at":"2026-04-28T19:37:55.688Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["coatl","github-actions"],"created_at":"2024-11-06T13:27:47.464Z","updated_at":"2026-04-29T00:01:20.331Z","avatar_url":"https://github.com/coatl-dev.png","language":"Shell","funding_links":["https://github.com/sponsors/cesarcoatl"],"categories":[],"sub_categories":[],"readme":"# coatl-dev GitHub Actions\n\n[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/coatl-dev/actions/coatl.svg)](https://results.pre-commit.ci/latest/github/coatl-dev/actions/coatl)\n\nA collection of custom GitHub Actions that are used to simplify our pipelines\nin projects to keep them DRY.\n\n## Catalog\n\n- [gpg-import](#gpg-import)\n- [pip-compile-upgrade](#pip-compile-upgrade)\n- [pr-create](#pr-create)\n- [pypi-upload](#pypi-upload)\n- [setup-jython](#setup-jython)\n- [simple-git-diff](#simple-git-diff)\n- [uv-pip-compile-upgrade](#uv-pip-compile-upgrade)\n\n### gpg-import\n\nGitHub Action to import GPG private key.\n\n**Inputs**:\n\n- `config-git` (`string`): Whether to config Git to sign commits with the\n  information obtained from GPG. Options: `'yes'`, `'no'`. Defaults to `'yes'`.\n  Optional.\n- `passphrase` (`secret`): GPG private key passphrase. Required.\n- `private-key` (`secret`): GPG private key exported as an ASCII\n  armored version. Required.\n\n**Outputs**:\n\n- `git-user-email` (`string`): Email address used for setting up Git identity.\n- `git-user-name` (`string`): Name used for setting up Git identity.\n- `gpg-key-id` (`string`): The long form of the GPG key ID.\n\n**Example**:\n\n```yml\nname: sign-commit\n\non:\n  push:\n    branches:\n      - main\n\njobs:\n  sign-commit:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout repo\n        uses: actions/checkout@v6\n\n      - name: Import GPG key\n        id: gpg-import\n        uses: coatl-dev/actions/gpg-import@v5.1.7\n        with:\n          passphrase: ${{ secrets.GPG_PASSPHRASE }}\n          private-key: ${{ secrets.GPG_PRIVATE_KEY }}\n\n      - name: Make changes\n        run: |\n            # Your changes go here\n\n      - name: Sign commit\n        run: |\n          # Creates a signed commit\n          git commit -m \"YOUR_COMMIT_MESSAGE\"\n```\n\n### pip-compile-upgrade\n\nRun `pip-compile upgrade` to upgrade your Python 2.7.18 requirements using\n[`coatl-dev/python-tools:2.7-pip-tools`] Docker image.\n\nThe `pip-compile` command lets you compile a `requirements.txt` file from your\ndependencies, specified in either `setup.py` or `requirements.in`.\n\n**Inputs**:\n\n- `path` (`string`): The location of the requirement file(s).\n- `extra-args` (`string`): Extra arguments to pass to `pip-compile`. Optional.\n  Defaults to `''`.\n- `working-directory` (`string`): The working directory to run the action in.\n  Optional. Defaults to `'.'`.\n\n**Examples**:\n\n```yml\nname: pip-compile-27\n\non:\n  schedule:\n    # Monthly at 12:00 PST (00:00 UTC)\n    - cron: '0 20 1 * *'\n\njobs:\n  pip-compile:\n    runs-on: ubuntu-latest\n    env:\n      REQUIREMENTS_PATH: 'path/to/requirements'\n\n    steps:\n      - name: Checkout repo\n        uses: actions/checkout@v6\n\n      - name: pip-compile-27\n        uses: coatl-dev/actions/pip-compile-upgrade@v5.1.7\n        with:\n          path: \"${{ env.REQUIREMENTS_PATH }}\"\n          extra-args: '--reuse-hashes'\n\n      - name: Detect changes\n        id: git-diff\n        uses: coatl-dev/actions/simple-git-diff@v5.1.7\n        with:\n          path: \"${{ env.REQUIREMENTS_PATH }}\"\n\n      - name: Do something if changes were made\n        if: ${{ steps.git-diff.outputs.diff == 'true' }}\n        run: |\n          echo \"Changes were detected.\"\n```\n\n### pr-create\n\nGitHub Action to create Pull Request using gh.\n\n**Inputs**:\n\n- `gh-token` (`secret`): GitHub token. Required.\n- `title` (`string`): Title for the pull request. Optional.\n- `body` (`string`): Body for the pull request. Optional.\n- `body-file` (`string`): Read body text from file. Optional.\n- `auto-merge` (`string`): Automatically merge only after necessary requirements\n  are met. Options: `'yes'`, `'no'`. Defaults to `'yes'`. Optional.\n- `delete-branch` (`string`): Delete the local and remote branch after merge.\n  Options: `'yes'`, `'no'`. Defaults to `'no'`. Optional.\n- `additional-args` (`string`): Additional arguments to pass to the\n  `gh pr create` command. Optional.\n\n\u003e [!IMPORTANT]\n\u003e If all optional inputs are missing, `gh` will use the commit message and body\n\u003e and run `gh pr create --fill`.\n\n**Example**:\n\nAdd this step to your workflow:\n\n```yml\n      - name: Create Pull Request\n        uses: coatl-dev/actions/pr-create@v5.1.7\n        with:\n          gh-token: ${{ secrets.GH_TOKEN }}\n```\n\nPassing additional arguments:\n\n```yml\n      - name: Create Pull Request\n        uses: coatl-dev/actions/pr-create@v5.1.7\n        with:\n          gh-token: ${{ secrets.GH_TOKEN }}\n          additional-args: '--base develop'\n```\n\n### pypi-upload\n\nGitHub action to build and upload your Python distribution packages to PyPI\n(or any other repository) using `build` and `twine`.\n\n\u003e [!NOTE]\n\u003e This action uses the [`ghcr.io/coatl-dev/python-tools`] Docker image, which\n\u003e has tags for Python 2.7 and 3.12. E.g.,\n\u003e `ghcr.io/coatl-dev/python-tools:2.7-build`.\n\n**Inputs**:\n\n- `python-version` (`string`): The Python version to use for building and\n  publishing the package. Options: `'2.7'` or `'3.12'`. Defaults to `'2.7'`.\n  Optional.\n- `check` (`boolean`): Check metadata with twine before uploading. Defaults to\n  `true`. Optional.\n- `url` (`string`): The repository (package index) URL to upload the package to.\n  Defaults to `'https://upload.pypi.org/legacy/'`. Optional.\n- `username` (`string`): The username to authenticate to the repository (package\n  index) as. Defaults to `'__token__'`. Optional.\n- `password` (`secret`): The password to authenticate to the repository (package\n  index) with. This can also be a token. Required.\n- `working-directory` (`string`): The directory to run the action in.\n  Optional. Defaults to `github.workspace`.\n\n**Example:**\n\n```yml\n    - name: Upload Python package to PyPI\n      uses: coatl-dev/actions/pypi-upload@v5.1.7\n      with:\n        python-version: '2.7'\n        check: 'false'\n        password: ${{ secrets.PYPI_API_TOKEN }}\n```\n\n### setup-jython\n\nSet up a specific version of Jython and add the command-line tools to the PATH.\n\n\u003e [!TIP]\n\u003e This action also sets the `JYTHON_HOME` environment variable.\n\n**Inputs**:\n\n- `jython-version` (`string`): The Jython version to install. Defaults to\n  `'2.7.4'`. Optional. See [supported Jython versions].\n- `java-distribution` (`string`): Java distribution to use for installing\n  Jython. Defaults to `'temurin'`. Optional. See [supported Java distributions].\n- `java-version` (`string`): The Java version to set up. Defaults to `'17'`.\n  Optional.\n\n**Outputs**:\n\n- `jython-version` (`string`): The installed Jython version.\n- `jython-path` (`string`): The absolute path to the Jython executable.\n- `java-distribution` (`string`):Distribution of Java that has been installed.\n- `java-version` (`string`): Actual version of the java environment that has\n  been installed.\n- `java-path` (`string`): Path to where the java environment has been installed\n  (same as $JAVA_HOME).\n\n**Example**:\n\n```yml\n    - name: Set up Jython\n      uses: coatl-dev/actions/setup-jython@v5.1.7\n      with:\n        jython-version: '2.7.3'\n    - run: jython my_script.py\n```\n\n### simple-git-diff\n\nRun [`git diff`] on a file or path.\n\n**Inputs**:\n\n- `path` (`string`): File or path to check for changes. Defaults to `'.'`.\n  Optional.\n\n**Outputs**:\n\n- `diff` (`string`): Whether files were changed between commits. Returns:\n  `'true'` or `'false'`.\n\n**Example**:\n\n```yml\nname: git-diff\n\non:\n  push:\n    branches:\n      - main\n\njobs:\n  sign-commit:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout repo\n        uses: actions/checkout@v6\n\n      - name: Modify file in repo\n        run: |\n          echo \"New line\" \u003e\u003e README.md\n\n      - name: Detect changes\n        id: git-diff\n        uses: coatl-dev/actions/simple-git-diff@v5.1.7\n        with:\n          path: 'README.md'\n\n      - name: Do something if changes were detected\n        if: ${{ steps.git-diff.outputs.diff == 'true' }}\n        run: |\n          echo \"Changes were detected.\"\n```\n\n### uv-pip-compile-upgrade\n\nRun `uv pip compile-upgrade` to upgrade your Python requirements.\n\nThe `uv pip compile` command lets you compile a `requirements.txt` file from\nyour dependencies, specified in either `pyproject.toml`, `setup.cfg`,\n`setup.py`, or `requirements.in`.\n\n**Inputs**:\n\n- `path` (`string`): The location of the requirement file(s).\n- `python-version` (`string`): The version of Python to set `UV_PYTHON` to. You\n  may use MAJOR.MINOR or exact version. Options: `'3.8'` to `'3.14'`. Defaults\n  to `'3.13'`. Optional.\n- `uv-version` (`string`): The version of uv to install. Defaults to `'latest'`.\n  Optional.\n- `working-directory` (`string`): The working directory to run the action in.\n  Optional. Defaults to `'.'`.\n\n**Example**:\n\n```yml\nname: uv-pip-compile\n\non:\n  schedule:\n    # Monthly at 12:00 PST (00:00 UTC)\n    - cron: '0 20 1 * *'\n\njobs:\n  pip-compile:\n    runs-on: ubuntu-latest\n    env:\n      REQUIREMENTS_PATH: 'path/to/requirements'\n\n    steps:\n      - name: Checkout repo\n        uses: actions/checkout@v6\n\n      - name: pip-compile-312\n        uses: coatl-dev/actions/uv-pip-compile-upgrade@v5.1.7\n        with:\n          path: \"${{ env.REQUIREMENTS_PATH }}\"\n          python-version: '3.12'\n\n      - name: Detect changes\n        id: git-diff\n        uses: coatl-dev/actions/simple-git-diff@v5.1.7\n        with:\n          path: \"${{ env.REQUIREMENTS_PATH }}\"\n\n      - name: Do something if changes were made\n        if: ${{ steps.git-diff.outputs.diff == 'true' }}\n        run: |\n          echo \"Changes were detected.\"\n```\n\n\u003c!-- Links --\u003e\n[`coatl-dev/python-tools:2.7-pip-tools`]: https://github.com/coatl-dev/docker-python-tools/blob/coatl/pip-tools/2.7/Dockerfile\n[`git diff`]: https://git-scm.com/docs/git-diff\n[supported Java distributions]: https://github.com/actions/setup-java#supported-distributions\n[supported Jython versions]: https://repo1.maven.org/maven2/org/python/jython-installer/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoatl-dev%2Factions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoatl-dev%2Factions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoatl-dev%2Factions/lists"}