{"id":31109396,"url":"https://github.com/rolemodel/actions","last_synced_at":"2026-02-16T01:01:30.635Z","repository":{"id":311829902,"uuid":"935075797","full_name":"RoleModel/actions","owner":"RoleModel","description":"Shared Github Actions","archived":false,"fork":false,"pushed_at":"2025-08-26T21:58:24.000Z","size":16,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-08-27T06:12:01.347Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"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/RoleModel.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}},"created_at":"2025-02-18T21:34:59.000Z","updated_at":"2025-08-26T21:58:09.000Z","dependencies_parsed_at":"2025-08-27T06:12:07.454Z","dependency_job_id":"0657865b-d484-45b5-b321-00b589924eab","html_url":"https://github.com/RoleModel/actions","commit_stats":null,"previous_names":["rolemodel/actions"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/RoleModel/actions","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoleModel%2Factions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoleModel%2Factions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoleModel%2Factions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoleModel%2Factions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RoleModel","download_url":"https://codeload.github.com/RoleModel/actions/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoleModel%2Factions/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275549741,"owners_count":25484687,"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-09-17T02:00:09.119Z","response_time":84,"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":[],"created_at":"2025-09-17T06:59:38.451Z","updated_at":"2026-02-16T01:01:30.629Z","avatar_url":"https://github.com/RoleModel.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# RoleModel/actions\nShared Github Actions\n\n## test-cleanup\nCleans up after test runs by uploading screenshots and dumping system information to stdout.\n\nInputs:\n- `artifact-prefix`*: A string prefix to name the uploaded log file. Artifact name will be named `${artifact-prefix}-logs`\n\nExample:\n```yaml\n- name: Cleanup\n  uses: RoleModel/actions/test-cleanup@v1\n  with:\n    artifact-prefix: rspec-system\n```\n\n## test-runtime-analyzer\nPosts the runtime of the longest test files. This is important because the most granular parallel_tests goes is at\nthe file level, so when running in parallel, the entire suite can never be quicker than the slowest file.\n\nInputs:\n- `test-output-path`*: Path to the test output file that hold runtimes\n- `top-count`: Number of slowest tests to show. Default: 10\n\nExample:\n```yaml\n- name: Analyze test runtimes\n  uses: RoleModel/actions/test-runtime-analyzer@v1\n  with:\n    test-output-path: tmp/turbo_rspec_runtime.log\n```\n## Shared workflow actions\nThis is a combination of three composite actions that can be used to run your entire CI flow for a rails app using parallel_tests. Each action allow you to customize the machine, environment variables, and any custom install steps that are needed. It does require you to check out the code yourself, since some install steps might happen after that.\n\nThe only inputs are for the linting and non system test action. Neither are required:\n- `linting-step-required`: Boolean (default is false). Only needed if you have a linting command\n- `linting-step-command`: String, `bundle exec rubocop --fail-level warning --display-only-fail-level-offenses --format github`\n\nHere's what your `ci.yml` file could look like\n\n```yaml\nname: CI\non:\n  push:\n    branches: [ main, master ]\n  pull_request:\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.event.pull_request.number }}-${{ github.event.ref }}\n  cancel-in-progress: true\n\nenv:\n  CI: true\n  RAILS_ENV: test\n  HONEYBADGER_SOURCE_MAP_DISABLED: true\n  POSTGRES_USER: postgres\n  POSTGRES_PASSWORD: password\n  SECRET_KEY_BASE: 0cb2b4ae6543f334e0eb5bc88bdabc24c9e5155ecb02a175c6f073a5a0d45a45f4a5b7d1288d3b412307bdfa19be441e97960ec4cd344f91f2d06a2595fb239c\n\njobs:\n  compile_assets:\n    name: Compile assets\n    runs-on: blacksmith-4vcpu-ubuntu-2204\n    timeout-minutes: 5\n    outputs:\n      cache-hit: ${{ steps.check-asset-cache.outputs.cache-hit }}\n    steps:\n      - name: Checkout code\n        uses: actions/checkout@v4\n\n      - uses: RoleModel/actions/compile-assets@v2\n        id: check-asset-cache\n\n  non-system-test:\n    name: Linting \u0026 Ruby Non-System Tests\n    runs-on: blacksmith-8vcpu-ubuntu-2204\n    timeout-minutes: 5\n    needs: compile_assets\n    services:\n      postgres:\n        image: postgres:16\n        ports:\n          - \"5432:5432\"\n        env:\n          POSTGRES_USER: postgres\n          POSTGRES_PASSWORD: password\n\n    steps:\n      - name: Checkout code\n        uses: actions/checkout@v4\n\n      - name: Run shared flow\n        uses: RoleModel/actions/linting-and-non-system-tests@v2\n        with:\n          linting_step_required: true\n          linting_step_command: bundle exec rubocop --fail-level warning --display-only-fail-level-offenses --format github\n\n  system-test:\n    name: Ruby System Tests\n    runs-on: blacksmith-16vcpu-ubuntu-2204\n    timeout-minutes: 10\n    needs: compile_assets\n    services:\n      postgres:\n        image: postgres:16\n        ports:\n          - \"5432:5432\"\n        env:\n          POSTGRES_USER: postgres\n          POSTGRES_PASSWORD: password\n\n    steps:\n      - name: Checkout code\n        uses: actions/checkout@v4\n\n      # allows for custom install steps between checkout \u0026 test run if needed\n      - name: Setup vips\n        run: |\n          sudo apt-get update\n          sudo apt-get install -y libvips\n\n      - name: Run shared flow\n        uses: RoleModel/actions/system-tests@v2\n        # if you've configured capybara to be compatible with the tmp:clear task\n        # you can tell the system-tests action like this:\n        with:\n          failure-screenshot-dir: tmp/screenshots\n```\n\n## Versioning\nThis is using [anothrNick/github-tag-action](https://github.com/anothrNick/github-tag-action/tree/master) to automatically\npost version tags when a commit is merged to master. Unless you include `#patch` or `#major` in your commit message,\nit will automatically create a new tag a minor version higher. `#none` will skip tagging altogether.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frolemodel%2Factions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frolemodel%2Factions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frolemodel%2Factions/lists"}