{"id":50622482,"url":"https://github.com/joel-hanson/kaggle-kernel-actions","last_synced_at":"2026-06-06T13:02:33.289Z","repository":{"id":65158047,"uuid":"250280220","full_name":"Joel-hanson/kaggle-kernel-actions","owner":"Joel-hanson","description":"Github action to push Kaggle kernels from GitHub and also for submitting them to their respective competitions.","archived":false,"fork":false,"pushed_at":"2020-07-18T07:17:00.000Z","size":444,"stargazers_count":5,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-04-23T13:43:28.216Z","etag":null,"topics":["competitions","kaggle-kernels","respective-competitions","submit-kernels","triggers","workflow"],"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/Joel-hanson.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-03-26T14:25:09.000Z","updated_at":"2025-04-09T17:49:36.000Z","dependencies_parsed_at":"2023-01-05T04:49:23.142Z","dependency_job_id":null,"html_url":"https://github.com/Joel-hanson/kaggle-kernel-actions","commit_stats":{"total_commits":89,"total_committers":1,"mean_commits":89.0,"dds":0.0,"last_synced_commit":"aa64fccf493910121d0e90c002dc7581f3688cd7"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Joel-hanson/kaggle-kernel-actions","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Joel-hanson%2Fkaggle-kernel-actions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Joel-hanson%2Fkaggle-kernel-actions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Joel-hanson%2Fkaggle-kernel-actions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Joel-hanson%2Fkaggle-kernel-actions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Joel-hanson","download_url":"https://codeload.github.com/Joel-hanson/kaggle-kernel-actions/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Joel-hanson%2Fkaggle-kernel-actions/sbom","scorecard":{"id":73336,"data":{"date":"2025-08-11","repo":{"name":"github.com/Joel-hanson/kaggle-kernel-actions","commit":"aa64fccf493910121d0e90c002dc7581f3688cd7"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.4,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/deploy_kernel_as_new.yaml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":0,"reason":"Found 0/17 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deploy_kernel_as_new.yaml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/Joel-hanson/kaggle-kernel-actions/deploy_kernel_as_new.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deploy_kernel_as_new.yaml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/Joel-hanson/kaggle-kernel-actions/deploy_kernel_as_new.yaml/master?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:1: pin your Docker image by updating python:3.8-slim-buster to python:3.8-slim-buster@sha256:8799b0564103a9f36cfb8a8e1c562e11a9a6f2e3bb214e2adc23982b36a04511","Warn: pipCommand not pinned by hash: entrypoint.sh:6","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned","Info:   0 out of   1 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 16 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-15T04:19:00.201Z","repository_id":65158047,"created_at":"2025-08-15T04:19:00.201Z","updated_at":"2025-08-15T04:19:00.201Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33983046,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-06T02:00:07.033Z","response_time":107,"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":["competitions","kaggle-kernels","respective-competitions","submit-kernels","triggers","workflow"],"created_at":"2026-06-06T13:02:33.143Z","updated_at":"2026-06-06T13:02:33.284Z","avatar_url":"https://github.com/Joel-hanson.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Push kaggle kernels](https://github.com/Joel-hanson/kaggle-kernel-actions/workflows/Push%20kaggle%20kernels/badge.svg)\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/marketplace/actions/bandit-report-artifacts\"\u003e\n    \u003cimg width=\"150px\" src=\"./assets/logo.png\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003e\n  Github action to push Kaggle kernels from github and also for submitting them to their respective competitions.\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  This is a \u003ca href=\"https://github.com/features/actions\"\u003eGitHub Action\u003c/a\u003e which will push your kernels to \u003ca href=\"https://kaggle.com\"\u003eKaggle\u003c/a\u003e And also submit them to your competitions.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./assets/screeshot.png\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./assets/kernel_version.png\"\u003e\n\u003c/p\u003e\n\n## Usage\n\n```yml\nname: Kaggle kernel actions\n\non:\n  push:\n    branches:\n      - master\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    strategy:\n      matrix:\n        os: [ ubuntu-latest, macos-latest ]\n        python-version: [ '2.7.17', '3.6.10' ]\n    name: Python ${{ matrix.python-version }} ${{ matrix.os }} \n\n    steps:\n    - uses: actions/checkout@v2\n\n    - name: Push kernel to kaggle\n      uses: joelhanson/kaggle-kernel-actions\n      with:\n        kaggle_username: ${{ secrets.kaggle_username }}\n        kaggle_key: ${{ secrets.kaggle_key }}\n        kaggle_make_new_kernel: true\n        kaggle_metadata_path: kernel-metadata.json\n        kernel_id: \u003cusername\u003e/\u003ckernel_slug\u003e\n        competition: titanic\n```\n\n\n### Getting Started :airplane:\n\nYou can include the action in your workflow to trigger on any event that [GitHub actions supports](https://help.github.com/en/articles/events-that-trigger-workflows). If the remote branch that you wish to deploy to doesn't already exist the action will create it for you. Your workflow will also need to include the `actions/checkout` step before this workflow runs in order for the deployment to work.\n\n\nIf you'd like to make it so the workflow only triggers on push events to specific branches then you can modify the `on` section.\n\n```yml\non:\n  push:\n    branches:\n      - master\n```\n\n### Configuration 📁\n\nThe `with` portion of the workflow **must** be configured before the action will work. You can add these in the `with` section found in the examples above. Any `secrets` must be referenced using the bracket syntax and stored in the GitHub repositories `Settings/Secrets` menu. You can learn more about setting environment variables with GitHub actions [here](https://help.github.com/en/articles/workflow-syntax-for-github-actions#jobsjob_idstepsenv).\n\n#### Required Setup\n\nOne of the following deployment options must be configured.\n\n| Key                | Value Information                                                                                                                                                                                                                                                                                                                                     | Type   | Required | Default |\n| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ | -------- | -------- |\n| `kaggle_username`          | You should provide kaggle username.'                                                                                                                           | `secrets`           | **Yes**  | \u003cusername\u003e |\n| `kaggle_key` | To provide you kaggle access key to learn for [visit](https://github.com/Kaggle/kaggle-api#api-credentials).                                                                                                 | `secrets` | **YES**  | \u003ckey\u003e |\n| `kernel_id` | The id for the kaggle kernel example: `username/kernel-slug`.                                                                                                 | `with` | **Yes**  | false |\n| `kaggle_make_new_kernel` | This is make new kernel when the kernel id does not exist the current existing ones.                                                                                                 | `with` | **No**  | false |\n| `kaggle_metadata_path` | The metadata path for the kaggle kernel. The metadata details can be found [here](https://github.com/Kaggle/kaggle-api/wiki/Kernel-Metadata). To create one you can run `kaggle kernel init`. Either the metadata file or the metadata details should be provided for this github action to work.                                                                                                 | `with` | **No**  | . |\n| `kernel_id_no` | This is the kernel number which is got when pull an already existing kernel.                                                                                                 | `with` | **No**  |  |\n| `kernel_title` | The title of the kernel. Required for new kernels - optional for existing ones. Please be aware that kernel titles and slugs are linked to each other. A kernel slug is always the title lowercased with dashes (-) replacing spaces. (If you wish to rename your kernel, you may change the title within the metadata. However, you will need to update the id as well AFTER the rename is complete.)                                                                                                 | `with` | **No**  |  |\n| `code_file_path` | The path to the code file. This should be provided in the metadata file or as input.                                                                                                 | `with` | **Yes**  | . |\n| `language` | The language your kernel is written in. Valid options are python, r, and rmarkdown. Required.This should be provided in the metadata file or as input                                                                                                 | `with` | **No**  | python |\n| `kernel_type` | The type of kernel. Valid options are script and notebook. Required.                                                                                                 | `with` | **No**  | notebook |\n| `is_private` | Whether or not the kernel should be private. If not specified, will be true.                                                                                                 | `with` | **No**  | true |\n| `enable_gpu` | Whether or not the kernel should run on a GPU. If not specified, will be false.                                                                                                 | `with` | **No**  | false |\n| `enable_internet` | Whether or not the kernel should be able to access the internet. If not specified, will be false.                                                                                                 | `with` | **No**  | false |\n| `competition` | The name of the competition that you are working on. Providing this will automatically get the datasets from the competition to the kernel inputs. A  competition, specified as \"competition-slug\"                                                                                                  | `with` | **No**  |  |\n| `dataset_sources` | A list of dataset sources, specified as \"username/dataset-slug\".                                                                                                 | `with` | **No**  |  |\n| `competition_sources` | A list of competition sources, specified as \"competition-slug\".                                                                                                 | `with` | **No**  |  |\n| `kernel_sources` | A list of kernel sources, specified as \"username/kernel-slug\".                                                                                                 | `with` | **No**  |  |\n| `deploy_kernel` | This will tell the action to push the kernel to kaggle or not.                                                                                                 | `with` | **No**  | true |\n| `submit_to_competition` | This is a boolean flag to submit the kernel if specified true.(still in progress)                                                                                                 | `with` | **No**  | false |\n| `submition_message` | This will override the default submission message (\u003cgit-hash\u003e \u003cgit-commit-msg\u003e ) with this message specified here.                                                                                                 | `with` | **No**  | \u003cgit-hash\u003e \u003cgit-commit-msg\u003e |\n| `collect_output` | This is to tell the action to save the output of the kernel run as zip. GitHub will save your cache but will begin evicting caches until the total size is less than 2 GB.                                                                                                | `with` | **No**  | false |\n\n---\n\n### Artifacts 📁\n\nYou can get the outputs as artifacts, for example the output accuracy and the models can be saved. Hence can get this output from the workflow artifacts. [learn more about artifacts](https://help.github.com/en/actions/configuring-and-managing-workflows/persisting-workflow-data-using-artifacts).\n\nThe following is example of how to download the artifacts.\n\n```yaml\nname: Push notebook to kaggle\n\non: push\n\njobs:\n  deploy:\n    runs-on: ubuntu-latest\n    strategy:\n      matrix:\n        os: [ ubuntu-latest, macos-latest ]\n        os: [ ubuntu-latest ]\n        python-version: [ '2.7.17', '3.6.10' ]\n    name: Python ${{ matrix.python-version }} ${{ matrix.os }}\n\n    - name: Kaggle deploy as new\n      uses: joelhanson/kaggle-kernel-actions\n      with:\n        kaggle_username: ${{ secrets.kaggle_username }}\n        kaggle_key: ${{ secrets.kaggle_key }}\n        kaggle_make_new_kernel: true\n        kernel_id: \u003cusername\u003e/\u003ckernel_slug\u003e\n        code_file_path: \u003cfolder\u003e/\u003cfile_path_to.ipynb\u003e\n        kernel_title: \u003ckernel_title\u003e\n        language: python\n        kernel_type: notebook\n        is_private: true\n        enable_gpu: false\n        enable_internet: false\n        competition: titanic\n        submit_to_competition: false\n        collect_output: true\n\n    - name: Download outputs\n      uses: actions/upload-artifact@v1\n      with:\n        name: outputs\n        path: outputs/outputs.zip\n```\n\n---\n\n### Submit kernels (In progress)\n\nYou can submit kernels by adding the following inputs for the jobs\n\n```yml\n    - name: Kaggle deploy from existing metadata file\n      uses: ./\n      with:\n        kaggle_username: ${{ secrets.kaggle_username }}\n        kaggle_key: ${{ secrets.kaggle_key }}\n        kaggle_make_new_kernel: true\n        kaggle_metadata_path: test/kernel-metadata.json\n        kernel_id: joelhanson/github-action-test\n        competition: titanic\n        submit_to_competition: true  # This needs to be true\n```\n\n### Further Actions \n\nYou send notifications to you telegram or to slack by using some of the other actions provided in the [github marketplace](https://github.com/marketplace?type=actions)\n\n### License 👨🏻‍💻\n\nThe Dockerfile and associated scripts and documentation in this project are released under the [MIT License](LICENSE).\n\nContainer images built with this project include third party materials. As with all Docker images, these likely also contain other software which may be under other licenses. It is the image user's responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within.\n\n### FAQ\n\n1. Where to find the kernel_id?\n\nYou can find the kernel_id by going to the top menu of the kernel and clicking `copy api command`.\n\n\u003cimg width=\"150px\" alt=\"kernel_id\" src=\"./assets/kernel_id.png\"\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoel-hanson%2Fkaggle-kernel-actions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoel-hanson%2Fkaggle-kernel-actions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoel-hanson%2Fkaggle-kernel-actions/lists"}