{"id":19528167,"url":"https://github.com/sneaksanddata/github-actions","last_synced_at":"2025-10-13T04:41:01.986Z","repository":{"id":38095809,"uuid":"455151330","full_name":"SneaksAndData/github-actions","owner":"SneaksAndData","description":"Repository for common actions used in Sneaks And Data CI/CD processes","archived":false,"fork":false,"pushed_at":"2025-06-17T11:35:57.000Z","size":70,"stargazers_count":4,"open_issues_count":7,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-03T06:34:04.536Z","etag":null,"topics":["actions","cicd"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SneaksAndData.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-02-03T12:11:27.000Z","updated_at":"2025-06-17T11:35:19.000Z","dependencies_parsed_at":"2023-02-14T16:15:53.106Z","dependency_job_id":"de726089-4b98-43ed-be5f-42fbbda86896","html_url":"https://github.com/SneaksAndData/github-actions","commit_stats":null,"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"purl":"pkg:github/SneaksAndData/github-actions","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SneaksAndData%2Fgithub-actions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SneaksAndData%2Fgithub-actions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SneaksAndData%2Fgithub-actions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SneaksAndData%2Fgithub-actions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SneaksAndData","download_url":"https://codeload.github.com/SneaksAndData/github-actions/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SneaksAndData%2Fgithub-actions/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279013685,"owners_count":26085390,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"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":["actions","cicd"],"created_at":"2024-11-11T01:17:49.500Z","updated_at":"2025-10-13T04:41:01.980Z","avatar_url":"https://github.com/SneaksAndData.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# github-actions\n\nRepository for common actions used in Sneaks And Data CI/CD processes\n\nAvailable actions are:\n1. [semver_release](#semver_release)\n2. [install_poetry](#install_poetry)\n3. [build_helm_chart](#build_helm_chart)\n4. [create_package](#create_package)\n5. [generate_version](#generate_version)\n6. [install_azcopy](#install_azcopy)\n7. [login_to_aks](#login_to_aks)\n8. [deploy_poetry_project_to_azfs](#deploy_poetry_project_to_azfs)\n9. [deploy_dbt_project_to_azfs](#deploy_dbt_project_to_azfs)\n10. [deploy_data_schemas_to_azfs](#deploy_data_schemas_to_azfs)\n11. [run_azcopy](#run_azcopy)\n12. [get_azure_share_sas](#get_azure_share_sas)\n13. [setup_gh_app](#setup_gh_app)\n14. [update_airflow_variables](#update_airflow_variables)\n15. [contribute_changes](#contribute_changes)\n16. [activate_workflow](#activate_workflow)\n16. [setup_aws_ca](#setup_aws_ca)\n\n## semver_release\n\n### Description\nCreates a new GitHub release based on git tags and [semantic versioning](https://semver.org/)\n\n**NOTE**: This action uses [`github.ref`](https://docs.github.com/en/actions/learn-github-actions/contexts#github-context)\nvariable for target branch name (see: https://cli.github.com/manual/gh_release_create).\n\n### Inputs\n| Name        | Description                              | Optional |\n|-------------|:-----------------------------------------|----------|\n| major_v     | major version of current release         | False    |\n| minor_v     | minor version of current release         | False    |\n| assets_path | assets to upload for the current release | True     |\n\n### Outputs\n| Name    | Description                          |\n|---------|--------------------------------------|\n| version | generated new version of the release |\n\n### Usage\n```yaml\nname: Release a new version\n\non:\n  workflow_dispatch:\n\njobs:\n  create_release:\n    runs-on: ubuntu-latest\n    if: github.ref == 'refs/heads/main'\n    steps:\n      - uses: actions/checkout@v2\n        with:\n          fetch-depth: 0\n      - name: Create Release\n        uses: SneaksAndData/github-actions/semver_release@v0.1.11\n        with:\n          major_v: 0\n          minor_v: 0\n          assets_path: ./dist\n```\n\n## install_poetry\n\n### Description\nInstalls poetry to build environment and restores dependencies using custom and private pypi indices.\nOptionally can export dependency tree to requirements.txt file.\n\n\n\n### Inputs\n| Name                      | Description                                                                                                                    | Optional  | Default value               |\n|---------------------------|:-------------------------------------------------------------------------------------------------------------------------------|-----------|-----------------------------|\n| pypi_repo_url             | URL of python package index (for custom packages)                                                                              | True      | \"\"                          |\n| pypi_token_username       | Package index authentication username.                                                                                         | True      | \"\"                          |\n| pypi_token                | Package index authentication token or password.                                                                                | True      | \"\"                          |\n| export_requirements       | Set to `true` if need to generate requirements.txt. **Optional** defaults to **false**.                                        | True      | false                       |\n| export_credentials        | If export_requirements is set to true, it exports requirements.txt with --with-credentials flag. Otherwise, does nothing.      | True      | true                        |\n| requirements_path         | Path to requirements.txt to be generated (relative to sources root).                                                           | True      | .container/requirements.txt | \n| install_preview           | Install preview version of Poetry.                                                                                             | True      | false                       |\n| version                   | Version to install. If value is 'latest', script will install the latest available version of Poetry.                          | True      | latest                      |\n| install_extras            | List of optional dependencies to install, separated by space. If value is 'all', all extras will be installed                  | True      |                             |\n| install_only_dependencies | If set to true, installs only dependencies for project, adds the parameter `--no-root` to `poetry install` command.            | True      | false                       |\n| skip_dependencies         | If set to true, installs only poetry without installing dependencies.                                                          | True      | false                       |\n| export_dev_requirements   | If export_requirements is set to true, it exports dev requirements.txt with --without-dev flag. Otherwise, does nothing.       | True      | true                        |\n| no_binary_dependencies    | Dependencies that must be built from source - equivalent to installer.no-binary setting in Poetry. Example: \"bottleneck,numpy\" | True      | \"\"                          |\n\n### Outputs\n| Name             | Description                                                  |\n|------------------|:-------------------------------------------------------------|\n| custom_repo_name | Name of configured custom repository for poetry push command |\n\n### Usage\n```yaml\nname: Install poetry and package dependencies\n\non:\n  workflow_dispatch:\n\njobs:\n  create_release:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v2\n        with:\n          fetch-depth: 0\n      - name: Install Poetry and dependencies\n        uses: SneaksAndData/github-actions/install_poetry@v0.0.17\n        with:\n           pypi_repo_url: ${{ secrets.AZOPS_PYPI_REPO_URL }}\n           pypi_token_username: ${{ secrets.AZOPS_PAT_USER }}\n           pypi_token: ${{ secrets.AZOPS_PAT }}\n           export_requirements: True # if you want to generate requirements.txt\n           requirements_path: \".container/requirements.txt\" \n           install_extras: \"azure datadog\"\n```\n\n## build_helm_chart\n\n### Description\n\nAllows to build helm chart and push it to remote container repository.\n\n**NOTE**: to be able to use this action, your repository should contain [version tags](https://docs.github.com/en/repositories/releasing-projects-on-github/about-releases).\nThis action relies on git tags to be present in order to generate an artifact tag.\n\n### Inputs\n| Name                       | Description                                                                        | Optional | Default value |\n|----------------------------|:-----------------------------------------------------------------------------------|----------|---------------|\n| container_registry_address | Container registry address                                                         | False    |               |\n| application:               | Application name                                                                   | False    |               |\n| container_registry_user    | Container registry username                                                        | False    |               |\n| container_registry_token   | Container registry access token                                                    | False    |               |\n| helm_version               | Version of helm to install                                                         | True     | 3.9.2         |\n| helm_directory             | Location of helm chart related to project root                                     | True     | .helm         |\n| app_version                | Application version to use for the chart. If omitted, the latest tag will be used. | True     |               |\n| chart_version              | Chart version to use for the chart. If omitted, the latest tag will be used.       | True     |               |\n\n### Outputs\nNo outputs defined\n\n### Usage\n```yaml\nname: Build and publish Helm chart\n\non:\n  workflow_dispatch:\n\njobs:\n  create_release:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v2\n        with:\n          fetch-depth: 0\n      - name: Build and Push Chart (DEV)\n        uses: SneaksAndData/github-actions/build_helm_chart@v0.0.17\n        with:\n          application: beast\n          container_registry_user: ${{secrets.AZCR_DEV_USER}}\n          container_registry_token:  ${{secrets.AZCR_DEV_TOKEN}}\n          container_registry_address: ${{secrets.AZCR_DEV_USER}}\n```\n        \n## create_package\n\n### Description\n\nCreates a development version of a python package according to [PEP-440](https://peps.python.org/pep-0440/) from\nan open pull request and uploads it to a provided python index.\n\nVersion format is `{Major}.{Minor}.{Patch}a{PR_NUMBER}dev{COMMENT_NUMBER}` where PR_NUMBER is number of pull request and \nCOMMENT_NUMBER is number of comment which triggered a build.\n\n**NOTES**:\n1) To use this action, your repository should contain\n[version tags](https://docs.github.com/en/repositories/releasing-projects-on-github/about-releases).\nThis action relies on git tags to be present in order to generate an artifact tag.\n2) This action should be placed in separate job with issue_comment pull request trigger. (see Usage below)\n3) This action requires to [poetry](https://python-poetry.org/docs/master/) ~1.2 being installed in build environment (for example, by [install_poetry action](#install_poetry))\n4) ⚠️ If the input `repo_url` is not provided, this action will push the package to a **public repository** (https://pypi.org).\nIn this case, the input `public_package_index_token` should be provided.\n\n### Inputs\n| Name                       | Description                                                                          | Optional | Default value |\n|----------------------------|:-------------------------------------------------------------------------------------|----------|:--------------|\n| repo_url                   | Package index URL                                                                    | True     | Empty         |\n| repo_token_username        | Package index authentication username                                                | True     | Empty         |\n| repo_token                 | Package index authentication token or password.                                      | True     | Empty         |\n| package_name               | Name of package to create. This should match name of root project directory          | False    |               |               \n| version                    | Version of package. If not provided, a new **development** version will be generated |          | Empty         |               \n| public_package_index_token | Access token for publishing to a public repository (https://pypi.org)                | True     | Empty         |\n\n### Outputs\nNo outputs defined\n\n### Usage\n\nAdd to `.github/workflows` a workflow file defined as follwoing and replace value in property `package_name` with name\nof root folder of your package:\n\n```yaml\non: issue_comment\n\njobs:\n  pr_commented:\n    name: Build package on PR comment\n    runs-on: ubuntu-latest\n    if: ${{ github.event.issue.pull_request \u0026\u0026 github.event.comment.body == 'create_package' \u0026\u0026 github.event.issue.state == 'open' }}\n    steps:\n      - uses: actions/checkout@v2\n        with:\n          ref: refs/pull/${{github.event.issue.number}}/merge\n          fetch-depth: 0\n      - name: Install Poetry and dependencies\n        uses: SneaksAndData/github-actions/install_poetry@v0.0.17\n        with:\n          pypi_repo_url: ${{ secrets.AZOPS_PYPI_REPO_URL }}\n          pypi_token_username: ${{ secrets.AZOPS_PAT_USER }}\n          pypi_token: ${{ secrets.AZOPS_PAT }}\n          skip_dependencies: true\n      - name: Create package\n        uses: SneaksAndData/github-actions/create_package@v0.0.17\n        with:\n          pypi_repo_url: ${{ secrets.AZOPS_PYPI_UPLOAD }}\n          pypi_token_username: ${{ secrets.AZOPS_PAT_USER }}\n          pypi_token: ${{ secrets.AZOPS_PAT }}\n          package_name: python_project\n```\n\n## generate_version\n\nGenerates project version based on current git commit and git tags.\n\n**NOTES**:\n1) To use this action, your repository should contain\n[version tags](https://docs.github.com/en/repositories/releasing-projects-on-github/about-releases).\nThis action relies on git tags to be present in order to generate a version.\n2) Generated version is will not be compatible with [PEP-440](https://peps.python.org/pep-0440/), so this versions \nshould not be used with python packages. Although, this action can be used with\n[source code deployments](#deploy_poetry_project_to_azfs) of python applications.\n\n\n### Inputs\nNo inputs defined\n### Outputs\n| Name                | Description                                                                 |\n|---------------------|:----------------------------------------------------------------------------|\n| version             | generated version string                                                    |\n\n### Usage\n```yaml\nname: Print version\n\non:\n  workflow_dispatch\njobs:\n  print_version:\n    name: print version\n    runs-on: ubuntu-latest\n    if: ${{ github.ref != 'refs/heads/main' }}\n    steps:\n      - uses: actions/checkout@v2\n        with:\n          fetch-depth: 0\n      - name: Get project version\n        uses: SneaksAndData/github-actions/generate_version@v0.0.17\n        id: version\n      - run: echo \"$version\"\n        env:\n          version: ${{steps.version.outputs.version}}\n```\n\n## install_azcopy\n\nInstalls azcopy v10 in current build directory.\n\n### Inputs\nNo inputs defined\n\n### Outputs\nNo outputs defined\n\n### Usage\n```yaml\nname: Install azcopy\n\non:\n  workflow_dispatch:\n    \njobs:\n  install_azcopy:\n    name: install azcopy\n    runs-on: ubuntu-latest\n    steps:\n      - name: Install azcopy v10\n        uses: SneaksAndData/github-actions/install_azcopy@v0.0.17\n```\n\n## login_to_aks\nGet AKS login credentials for kubectl. Service principal used must have a permission to list cluster credentials.\n\n### Inputs\n| Name                       | Description                              | Optional | Default value |\n|----------------------------|:-----------------------------------------|----------|---------------|\n| cluster_sp_client_id       | Cluster service principal application id | False    |               |\n| cluster_sp_client_password | Cluster service principal password       | False    |               |\n| tenant_id                  | Azure tenant ID                          | False    |               |\n| subscription_id            | Azure subscription ID                    | False    |               |               \n| cluster_name               | Name of the cluster                      | False    |               |\n\n### Outputs\nNo outputs defined\n\n### Usage\n```yaml\nname: Login to AKS\n\non:\njobs:\n  login_to_aks:\n    name: Login to AKS\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v2\n        with:\n          fetch-depth: 0\n      - name: Get cluster credentials\n        uses: SneaksAndData/github-actions/login_to_aks@v0.0.17\n        with:\n          cluster_sp_client_id: $AZURE_CLIENT_ID\n          cluster_sp_client_password: $AZURE_CLIENT_SECRET\n          tenant_id: $AZURE_TENANT_ID\n          subscription_id: $AZURE_SUBSCRIPTION_ID\n          cluster_name: $AZURE_AKS_NAME\n```\n\n# deploy_poetry_project_to_azfs\nCopy python site-packages of current virtual environment and installs application into it. \n\n### Inputs\n| Name              | Description                                                      | Optional | Default value |\n|-------------------|:-----------------------------------------------------------------|----------|---------------|\n| project_version   | Version of the project                                           | False    |               |\n| project_name      | Name of the project                                              | False    |               |\n| project_directory | Directory name inside the project (if differs from project name) | True     | \"\"            |\n| destination       | Directory or SAS for upload                                      | False    |               |\n| python_version    | Project python version                                           | True     | 3.9           |\n| deployment_root   | Root directory in the file share                                 | False    |               |\n\n**NOTES**:\n1) To use this action, your project should use poetry for virtual environment management. Ensure that you installed\nthe latest version of poetry and project dependencies (for instance, by [install_poetry](#install_poetry) action).\n\n### Outputs\nNo outputs defined\n\n### Usage\n```yaml\nname: Prepare python deployment\n\non:\n  workflow_dispatch:\n    \njobs:\n  prepare_deployment:\n    name: Prepare python code for deployment\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v2\n        with:\n          fetch-depth: 0\n      - name: Get project version\n        uses: SneaksAndData/github-actions/generate_version@v0.0.17\n        id: version\n      - name: Generate SAS for upload\n        uses: SneaksAndData/github-actions/get_azure_share_sas@v0.0.17\n        with:\n          directory_name: share-name/path/within/share\n          account_key: ${{ secrets.ACCOUNT_KEY }}\n          account_name: ${{ secrets.ACCOUNT_NAME }}\n        id: sas\n      - name: Prepare site-packages for deployment\n        uses: SneaksAndData/github-actions/deploy_poetry_project_to_azfs@v0.0.17\n        with:\n          deployment_root: /python\n          project_version: ${{ steps.version.outputs.version }}\n          destination: ${{ steps.sas.outputs.authorized_destination }}\n          project_name: python_project\n```\n\n# deploy_dbt_project_to_azfs\nPrepare DBT models for deployment to an Azure file share.\n\n### Inputs\n| Name             | Description                                   | Optional | Default value |\n|------------------|:----------------------------------------------|----------|---------------|\n| project_version  | Version of the project                        | False    |               |\n| project_name     | Name of the project                           | False    |               |\n| destination      | Directory or SAS for upload                   | False    |               |\n| deployment_root  | Root directory in the file share              | False    |               |\n\n### Outputs\nNo outputs defined\n\n### Usage\n```yaml\nname: Prepare deployment\n\non:\n  workflow_dispatch:\n    \njobs:\n  prepare_deployment:\n    name: Prepare dbt output for deployment\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v2\n        with:\n          fetch-depth: 0\n      - name: Get project version\n        uses: SneaksAndData/github-actions/generate_version@v0.0.17\n        id: version\n      - name: Generate SAS for upload\n        uses: SneaksAndData/github-actions/get_azure_share_sas@v0.0.17\n        with:\n          directory_name: share-name/path/within/share\n          account_key: ${{ secrets.ACCOUNT_KEY }}\n          account_name: ${{ secrets.ACCOUNT_NAME }}\n        id: sas\n      - name: Prepare dbt for deployment\n        uses: SneaksAndData/github-actions/deploy_dbt_project_to_azfs@v0.0.17\n        with:\n          deployment_root: /dbt\n          project_version: ${{ steps.version.outputs.version }}\n          destination: ${{ steps.sas.outputs.authorized_destination }}\n          project_name: dbt_project\n```\n\n# deploy_data_schemas_to_azfs\nPrepare DBT schemas for deployment to an Azure file share.\n\n### Inputs\n| Name             | Description                                   | Optional | Default value |\n|------------------|:----------------------------------------------|----------|---------------|\n| project_version  | Version of the project                        | False    |               |\n| project_name     | Name of the project                           | False    |               |\n| destination      | Directory or SAS for upload                   | False    |               |\n| deployment_root  | Root directory in the file share              | False    |               |\n\n### Outputs\nNo outputs defined\n\n### Usage\n```yaml\nname: Prepare deployment\n\non:\n  workflow_dispatch:\njobs:\n  validate_commit:\n    name: Prepare schemas output for deployment\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v2\n        with:\n          fetch-depth: 0\n      - name: Get project version\n        uses: SneaksAndData/github-actions/generate_version@v0.0.17\n        id: version\n      - name: Generate SAS for upload\n        uses: SneaksAndData/github-actions/get_azure_share_sas@v0.0.17\n        with:\n          directory_name: share-name/path/within/share\n          account_key: ${{ secrets.ACCOUNT_KEY }}\n          account_name: ${{ secrets.ACCOUNT_NAME }}\n        id: sas\n      - name: Prepare dbt for deployment\n        uses: SneaksAndData/github-actions/deploy_data_schemas_to_azfs@v0.0.17\n        with:\n          deployment_root: /dbt\n          project_version: ${{ steps.version.outputs.version }}\n          destination: ${{ steps.sas.outputs.authorized_destination }}\n          project_name: dbt_project\n```\n\n# run_azcopy\nInvoke [azcopy copy](https://learn.microsoft.com/en-us/azure/storage/common/storage-ref-azcopy-copy?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json)\ncommand in pipeline.\n\n### Inputs\n| Name               | Description                                    | Optional | Default value |\n|--------------------|:-----------------------------------------------|----------|---------------|\n| source             | Source directory or SAS url to copy            | False    |               |\n| target             | Target directory or SAS url                    | False    |               |\n| mode               | azcopy action mode (copy or sync)              | True     | copy          |\n| put_md5            | If `true` sets `--put-md5` parameter to azcopy | True     | True          |\n| delete_destination | azcopy --delete-destination flag               | True     | False         |\n\n### Outputs\nNo outputs defined\n\n### Usage\n```yaml\nname: Copy files\n\non:\n  workflow_dispatch:\n    \njobs:\n  copy_files:\n    name: Copy files\n    steps:\n      - name: Generate SAS for upload\n        uses: SneaksAndData/github-actions/get_azure_share_sas@v0.0.17\n        with:\n          directory_name: share-name/path/within/share\n          account_key: ${{ secrets.ACCOUNT_KEY }}\n          account_name: ${{ secrets.ACCOUNT_NAME }}\n        id: sas\n      - name: Copy data\n        uses: SneaksAndData/github-actions/run_azcopy@v0.0.17\n        with:\n          source: source/directory/on/build/agent\n          target: ${{ steps.sas.outputs.authorized_destination }}\n```\n## get_azure_share_sas\n\n### Description\nGenerates new temporary\n[Shared Access Signature](https://learn.microsoft.com/en-us/azure/storage/common/storage-sas-overview)\nfor a file share, attached to a storage account.\n\n### Inputs\n| Name            | Description                                                      | Optional | Default Value |\n|-----------------|:-----------------------------------------------------------------|----------|---------------|\n| directory_name  | Path within file share                                           | False    |               |\n| account_key     | Name of the storage account of the share                         | False    |               |\n| account_name    | Key of the storage account of the share                          | False    |               |\n| expiration_date | Expiration date in format that can be used by the `date` command | True     | +10 minutes   |\n| directory_type  | Type of directory (blob or fileshare)                            | True     | fileshare     |\n\n\n**NOTES**:\n1) For the expiration date format see [man 1 date](https://man7.org/linux/man-pages/man1/date.1.html)\n\n### Outputs\n| Name                   | Description                                                 |\n|------------------------|-------------------------------------------------------------|\n| authorized_destination | URL of the file share with attached shared access signature |\n\n### Usage\n```yaml\nname: Release a new version\n\non:\n  workflow_dispatch:\n\njobs:\n  create_release:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Generate SAS for upload\n        uses: SneaksAndData/github-actions/get_azure_share_sas@v0.0.17\n        with:\n          directory_name: share-name/path/within/share\n          account_key: ${{ secrets.ACCOUNT_KEY }}\n          account_name: ${{ secrets.ACCOUNT_NAME }}\n        id: sas\n      - name: Copy data\n        uses: SneaksAndData/github-actions/run_azcopy@v0.0.17\n        with:\n          source_directory: source/directory/on/build/agent\n          target: ${{ steps.sas.outputs.authorized_destination }}\n```\n\n## setup_gh_app\n\n### Description\n\nConfigure git client in the workflow job to authenticate to GitHub using a GitHub App instead of builtin repo-scoped GITHUB_TOKEN.\nnext workflow steps.\n\n### Inputs\n| Name                | Description                 | Optional | Default Value |\n|---------------------|:----------------------------|----------|---------------|\n| app_private_key     | Private key of application  | False    |               |\n| app_installation_id | Application installation Id | False    |               |\n| git_user_email      | User email for git client   | False    |               |\n| git_user_name       | User name for git client    | False    |               |\n\n### Outputs\n| Name         | Description                          |\n|--------------|--------------------------------------|\n| access_token | Access token generated by GitHub API |\n\n### Usage\n```yaml\nname: Checkout repo using github app\n\non:\n  workflow_dispatch:\n\njobs:\n  create_release:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Reconfigure Git to use App\n        id: setup_gh_app\n        uses: SneaksAndData/github-actions/setup_gh_app@v0.0.17\n        with:\n          app_private_key: ${{ secrets.APP_PRIVATE_KEY }}\n          app_installation_id: 1234567\n          app_id: 89123\n          git_user_name: \"Github App\"\n          git_user_email: \"user@example.com\"\n\n      - name: Checkout Airflow Variables\n        uses: actions/checkout@v3\n        with:\n          repository: SneaksAndData/airflow-variables\n          token: ${{ steps.setup_gh_app.outputs.access_token }}\n          path: airflow-variables\n          fetch-depth: 0\n```\n\n## update_airflow_variables\n\nUpdate airflow configuration of a specified dbt project to the current version (git tag) and provided execution graph\n\n### Inputs\n| Name              | Description                         | Optional | Default Value |\n|-------------------|:------------------------------------|----------|---------------|\n| project_name      | Name of the project                 | False    |               |\n| project_version   | Version of the project              | False    |               |\n| project_graph     | Graph generated by metadata-manager | False    |               |\n| working_directory | User name for git client            | False    |               |\n| airflow_variable  | JSON-encoded airflow variable       | False    |               |\n\n### Outputs\n| Name             | Description                    | Optional | Default Value |\n|------------------|:-------------------------------|----------|---------------|\n| airflow_variable | JSON-encoded airflow variable  | False    |               |\n\n### Usage\n```yaml\nname: Update airflow-variables\n\non:\n  workflow_dispatch:\n\njobs:\n  create_release:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Update Project Version\n        uses: SneaksAndData/github-actions/update_airflow_variables@v0.0.17\n        id: update_variables\n        with:\n          project_name: dbt-project\n          working_directory: github-repository\n          project_version: 0.0.1\n          project_graph: \"{}\"\n```\n\n## contribute_changes\n\nCreate pull request in repository\n\n### Inputs\n| Name              | Description                                                                                 | Optional | Default Value |\n|-------------------|:--------------------------------------------------------------------------------------------|----------|---------------|\n| project_name      | Name of the project                                                                         | False    |               |\n| project_version   | Version of the project                                                                      | False    |               |\n| working_directory | Directory with airflow-variables GitHub repo                                                | False    |               |\n| access_token      | An access token with push and create pull request permissions                               | False    |               |\n| merge             | True if action should merge changes. Otherwise just create a branch and open a Pull Request | False    |               |\n\n### Outputs\nNo outputs defined\n\n### Usage\n```yaml\nname: Create pull request\n\non:\n  workflow_dispatch:\n\njobs:\n  contribute_changes:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Contribute Variable Changes\n        uses: SneaksAndData/github-actions/contribute_changes@v0.0.17\n        with:\n          project_name: dbt-project\n          working_directory: github-repository\n          project_version: 0.0.1\n          access_token: ${{ secrets.ACCESS_TOKEN }}\n          merge: false\n```\n\n## activate_workflow\n\nTriggers a specified GitHub Workflow file with parameters.\n\n### Inputs\n| Name               | Description                                                   | Optional | Default Value |\n|--------------------|:--------------------------------------------------------------|----------|---------------|\n| access_token       | An access token with push and create pull request permissions | False    |               |\n| repo_name          | Repository to deploy                                          | False    |               |\n| workflow_name      | Name of the workflow to activate                              | False    |               |\n| deploy_environment | Environment name to deploy                                    | True     | production    |\n\n### Outputs\nNo outputs defined\n\n### Usage\n```yaml\nname: Deploy latest tag\n\non:\n  workflow_dispatch:\n\njobs:\n  create_release:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Deploy variables\n        uses: SneaksAndData/github-actions/activate_workflow@v0.0.17\n        with:\n          access_token: ${{ secrets.ACCESS_TOKEN }}\n          repo_name: github-repo\n          workflow_name: Deploy Variables to airflow\n```\n\n## wait_for_workflow\n\nCreate pull request in repository\n\n### Inputs\n| Name          | Description                                                   | Optional | Default Value |\n|---------------|:--------------------------------------------------------------|----------|---------------|\n| access_token  | An access token with push and create pull request permissions | False    |               |\n| run_title     | Repository to deploy                                          | False    |               |\n| repo_name     | Repository name                                               | False    |               |\n| workflow_name | Name of the workflow                                          | False    |               |\n| branch_name   | Name of the branch                                            | True     | main          |\n\n### Outputs\nNo outputs defined\n\n### Usage\n```yaml\nname: Deploy latest tag\n\non:\n  workflow_dispatch:\n\njobs:\n  create_release:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Deploy variables\n        uses: SneaksAndData/github-actions/activate_workflow@v0.0.17\n        with:\n          access_token: ${{ secrets.ACCESS_TOKEN }}\n          run_title: \"Updating Project github-repo to version 1.1.1\"\n          repo_name: github-repo\n          workflow_name: Prepare Helm chart\n```\n\n## read_airflow_variable\n\nRead airflow variable, escape newlines for using content in other steps.\n\n### Inputs\n| Name               | Description                                       | Optional | Default Value |\n|--------------------|:--------------------------------------------------|----------|---------------|\n| project_name       | Project name                                      | False    |               |\n| root_directory     | Root directory with variables repository          | False    |               |\n| variables_sub_path | Subdirectory with JSON-encoded file with variable | False    |               |\n\n### Outputs\n| Name             | Description                   |\n|------------------|:------------------------------|\n| airflow_variable | JSON-encoded airflow variable |\n\n### Usage\n```yaml\nname: Deploy latest tag\n\non:\n  workflow_dispatch:\n\njobs:\n  create_release:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Read airflow variable\n        uses: SneaksAndData/github-actions/read_airflow_variable@v0.0.17\n        with:\n          project_name: ${{ env.PROJECT_NAME }}\n        id: read\n```\n\n## setup_aws_ca \n\nSetup AWS CodeArtifact credentials\n\n### Inputs\n| Name                | Description                                      | Optional | Default Value |\n|---------------------|:-------------------------------------------------|----------|---------------|\n| aws_access_key      | AWS access key                                   | False    |               |\n| aws_access_key_id   | AWS access key ID                                | False    |               |\n| mode                | Setup for read or publish                        | False    |               |\n| aws_ca_domain       | AWS CodeArtifact domain                          | False    |               |\n| aws_ca_domain_owner | AWS CodeArtifact domain owner name               | False    |               |\n| aws_ca_repository   | AWS CodeArtifact repository name                 | False    |               |\n| aws_region          | AWS region where the artifact storage is located | True     | eu-central-1  |\n\n### Outputs\n| Name  | Description                                           |\n|-------|:------------------------------------------------------|\n| url   | Python artifact storage URL (pip or twine-compatible) |\n| user  | User Name                                             |\n| token | Access token                                          |\n\n### Usage\n```yaml\nname: Deploy latest tag\n\non:\n  workflow_dispatch:\n\njobs:\n  create_release:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Setup AWS CA\n        uses: SneaksAndData/github-actions/setup_aws_ca@v0.1.1\n        with:\n          aws_access_key: ${{ env.AWS_ACCESS_KEY }}\n          aws_access_key_id: ${{ env.AWS_ACCESS_KEY_ID }}\n          mode: read\n          aws_ca_domain: some-domain\n          aws_ca_domain_owner: some-domain-owner\n          aws_ca_repository: some-repository\n        id: aws_ca\n      - name: Install Poetry and dependencies\n        uses: SneaksAndData/github-actions/install_poetry@v0.1.0\n        with:\n          pypi_repo_url: ${{ steps.aws_ca.outputs.url }}\n          pypi_token_username: ${{ steps.aws_ca.outputs.user }}\n          pypi_token: ${{ steps.aws_ca.outputs.token }}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsneaksanddata%2Fgithub-actions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsneaksanddata%2Fgithub-actions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsneaksanddata%2Fgithub-actions/lists"}