{"id":13533989,"url":"https://github.com/machine-learning-apps/gke-argo","last_synced_at":"2025-04-01T22:31:06.265Z","repository":{"id":54855011,"uuid":"206478890","full_name":"machine-learning-apps/gke-argo","owner":"machine-learning-apps","description":"GitHub Action That Submits Argo Workflows For Execution on Your GKE Cluster","archived":true,"fork":false,"pushed_at":"2021-01-25T06:31:59.000Z","size":108,"stargazers_count":16,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-14T10:56:04.121Z","etag":null,"topics":[],"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/machine-learning-apps.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":null,"security":null,"support":null}},"created_at":"2019-09-05T05:07:08.000Z","updated_at":"2024-01-05T17:03:37.000Z","dependencies_parsed_at":"2023-01-04T18:30:18.369Z","dependency_job_id":null,"html_url":"https://github.com/machine-learning-apps/gke-argo","commit_stats":{"total_commits":39,"total_committers":2,"mean_commits":19.5,"dds":0.02564102564102566,"last_synced_commit":"9c1d2c768b128ac36a2bb6a2dd7f92d12a81647e"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/machine-learning-apps%2Fgke-argo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/machine-learning-apps%2Fgke-argo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/machine-learning-apps%2Fgke-argo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/machine-learning-apps%2Fgke-argo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/machine-learning-apps","download_url":"https://codeload.github.com/machine-learning-apps/gke-argo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246720472,"owners_count":20822911,"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","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":[],"created_at":"2024-08-01T07:01:25.091Z","updated_at":"2025-04-01T22:31:05.942Z","avatar_url":"https://github.com/machine-learning-apps.png","language":"Shell","readme":"![Actions Status](https://github.com/machine-learning-apps/gke-argo/workflows/Integration%20Test/badge.svg)\n\n## This Action Submits Workflows To [Argo](https://argoproj.github.io/) Running on [GKE](https://cloud.google.com/kubernetes-engine/)\n\nFor a cloud-agnostic version of this action, look [here](https://github.com/machine-learning-apps/actions-argo)\n\nThe purpose of this action is to allow automatic testing of [Argo Workflows](https://argoproj.github.io/argo) from GitHub for Kubernetes cluster running on GCP.  \n\nThis action is a mechanism you can leverage to accomplish [CI/CD of Machine Learning](https://blog.paperspace.com/ci-cd-for-machine-learning-ai/).   This Action facilitates instantiating model training runs on the compute of your choice running on K8s, specifically on [Google Kubernetes Engine](https://cloud.google.com/kubernetes-engine/).  \n\nWhat are Argo Workflows?  \n\nFrom [the docs](https://argoproj.github.io/docs/argo/readme.html):\n\n- Argo Workflows is an open source container-native workflow engine for orchestrating parallel jobs on Kubernetes. Argo Workflows is implemented as a Kubernetes CRD (Custom Resource Definition).\n\n- Define workflows where each step in the workflow is a container.\nModel multi-step workflows as a sequence of tasks or capture the dependencies between tasks using a graph (DAG).\n- Easily run compute intensive jobs for machine learning or data processing in a fraction of the time using Argo Workflows on Kubernetes.\n- Run CI/CD pipelines natively on Kubernetes without configuring complex software development products.\n\n## Usage\n\n### Example Workflow That Uses This Action\n\nThis action is the third step in the below example: `Submit Argo Deployment`\n\n```yaml\nname: ML Workflow Via Actions\non:\n  pull_request:\n    types:\n      - labeled\n\njobs:\n  gke-auth:\n    name: Argo Submit\n    runs-on: ubuntu-latest\n    steps:\n    \n    # Copy the contents of the current branch into the Actions context\n    - name: Copy Repo Files\n      uses: actions/checkout@master\n      \n    # This Step Sets the Variable ARGO_TEST_RUN='True' if an open PR is labeled with `argo/run-test`\n    - name: Filter For PR Label\n      id: validate\n      run: python gke-argo-action/validate_payload.py\n\n    # The workflow is submitted to Argo only if ARGO_TEST_RUN='True'\n    - name: Submit Argo Deployment\n      id: argo\n      if: steps.validate.outputs.ARGO_TEST_RUN == 'True'\n      uses: machine-learning-apps/gke-argo@master #reference this Action\n      with:  # most of the inputs below are used to obtain authentication credentials for GKE\n        ARGO_URL: ${{ secrets.ARGO_URI }}\n        APPLICATION_CREDENTIALS: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }}\n        PROJECT_ID: ${{ secrets.GCLOUD_PROJECT_ID }}\n        LOCATION_ZONE: \"us-west1-a\"\n        CLUSTER_NAME: \"github-actions-demo\"\n        WORKFLOW_YAML_PATH: argo/nlp-model.yaml # the argo workflow file relative to the repo's root.\n        PARAMETER_FILE_PATH: argo/arguments-parameters.yml # optional parameter file.  This can be built dynamically inside the action or appended to from an existing file in the repo.\n        \n    # A comment is made on the PR with the URL to the Argo dashboard for the run.\n    - name: PR Comment - Argo Workflow URL\n      if: steps.validate.outputs.ARGO_TEST_RUN == 'True'\n      run: bash gke-argo-action/pr_comment.sh \"The workflow can be viewed at $WORKFLOW_URL\"\n      env:\n        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n        ISSUE_NUMBER: ${{ steps.validate.outputs.ISSUE_NUMBER }}\n        WORKFLOW_URL: ${{ steps.argo.outputs.WORKFLOW_URL }}\n```\n\n### Mandatory Inputs\n\n1. `ARGO_URL`: The endpoint where your Argo UI is hosted.  This is used to build the link for dashboard of unique runs.\n2. `APPLICATION_CREDENTIALS`: base64 encoded GCP application credentials (https://cloud.google.com/sdk/docs/authorizing)\n3. `PROJECT_ID`: Name of the GCP Project where the GKE K8s cluster resides. \n4. `LOCATION_ZONE`: The location-zone where your GKE K8s cluster resides, for example, `us-west1-a`\n5. `CLUSTER_NAME`: The name of your GKE K8s cluster\n6. `WORKFLOW_YAML_PATH`: The full path name including the filename of the YAML file that describes the workflow you want to run on Argo.  This should be relative to the root of the GitHub repository where the Action is triggered.\n\n### Optional Inputs\n\n1. `PARAMETER_FILE_PATH`: Parameter file that allows you to change variables in your workflow file.  One common use for this file in an Action is to append additional arguments with the output of other Actions.  For more dicussion on parameter files, see [the Argo docs](https://argoproj.github.io/docs/argo/examples/readme.html).\n2. `SHA`: Normally, this action uses the system environment variable `GITHUB_SHA` to construct the run name for the Argo workflow.  However, you can override this if you supply this value.\n\n### Outputs\n\nYou can reference the outputs of an action using [expression syntax](https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions), as illustrated in the last step in the example Action workflow above.\n\n1. `WORKFLOW_URL`: URL that is a link to the dashboard for the current run in Argo.  The dashboard looks like this:\n\n\u003e ![alt text](images/argo-dashboard.png)\n\n## Keywords\n MLOps, Machine Learning, Data Science\n","funding_links":[],"categories":["Community Resources"],"sub_categories":["Machine Learning Ops"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmachine-learning-apps%2Fgke-argo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmachine-learning-apps%2Fgke-argo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmachine-learning-apps%2Fgke-argo/lists"}