{"id":19281758,"url":"https://github.com/scality/action-artifacts","last_synced_at":"2026-01-25T15:01:18.037Z","repository":{"id":37104729,"uuid":"392770588","full_name":"scality/action-artifacts","owner":"scality","description":null,"archived":false,"fork":false,"pushed_at":"2025-03-17T04:28:43.000Z","size":7117,"stargazers_count":0,"open_issues_count":8,"forks_count":0,"subscribers_count":30,"default_branch":"main","last_synced_at":"2025-08-31T14:44:01.458Z","etag":null,"topics":["action","actions","ci","github-action","github-actions","platform-engineering"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/scality.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-08-04T17:12:48.000Z","updated_at":"2025-08-17T20:16:47.000Z","dependencies_parsed_at":"2024-05-09T22:40:38.283Z","dependency_job_id":"4e937b72-9308-49c9-bb7d-f46a118d9fb6","html_url":"https://github.com/scality/action-artifacts","commit_stats":{"total_commits":151,"total_committers":12,"mean_commits":"12.583333333333334","dds":0.609271523178808,"last_synced_commit":"09c28bd92605f393e701549d1b6a80d991e789b9"},"previous_names":[],"tags_count":37,"template":false,"template_full_name":null,"purl":"pkg:github/scality/action-artifacts","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scality%2Faction-artifacts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scality%2Faction-artifacts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scality%2Faction-artifacts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scality%2Faction-artifacts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scality","download_url":"https://codeload.github.com/scality/action-artifacts/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scality%2Faction-artifacts/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28754807,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T13:59:49.818Z","status":"ssl_error","status_checked_at":"2026-01-25T13:59:33.728Z","response_time":113,"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":["action","actions","ci","github-action","github-actions","platform-engineering"],"created_at":"2024-11-09T21:24:03.580Z","updated_at":"2026-01-25T15:01:18.000Z","avatar_url":"https://github.com/scality.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Action Artifacts\n\nThis repository contain a GitHub Action to interact with the [Artifacts] service.\n\nThe [Artifacts] service is responsible of storing and distributing any sort of files that was created in a CI pipeline.\n\n## Method\n\nThis action contain different method of interacting with Artifacts. You will find below each method with their description.\n\n### Setup\n\nSet outputs that relate to the artifacts attached to your build. See more about the outputs below.\n\nExample:\n\n```yaml\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Retrieve my artifacts name\n        id: artifacts\n        uses: scality/action-artifacts@v4\n        with:\n          method: setup\n          url: my.artifacts.url\n          user: ${{ secrets.ARTIFACTS_USER }}\n          password: ${{ secrets.ARTIFACTS_PASSWORD }}\n      - run: |\n          curl -u ${{ secrets.ARTIFACTS_USER }}:${{ secrets.ARTIFACTS_PASSWORD }}  ${{ steps.artifacts.outputs.link }}/my-file -o my-file\n```\n\n### Upload\n\nUpload files or directories to artifacts.\n\nExample:\n\n#### Uploading a directory to artifacts\n\n```yaml\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Upload a directory to artifacts\n        id: artifacts\n        uses: scality/action-artifacts@v4\n        with:\n          method: upload\n          url: my.artifacts.url\n          user: ${{ secrets.ARTIFACTS_USER }}\n          password: ${{ secrets.ARTIFACTS_PASSWORD }}\n          source: ./mydirectory\n      - run: |\n          curl -u ${{ secrets.ARTIFACTS_USER }}:${{ secrets.ARTIFACTS_PASSWORD }} ${{ steps.artifacts.outputs.link }}/file_inside_directory -o file\n```\n\n#### Uploading a file to artifacts\n\n```yaml\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Upload a file to artifacts\n        id: artifacts\n        uses: scality/action-artifacts@v4\n        with:\n          method: upload\n          url: my.artifacts.url\n          user: ${{ secrets.ARTIFACTS_USER }}\n          password: ${{ secrets.ARTIFACTS_PASSWORD }}\n          source: ./myfile\n      - run: |\n          curl -u ${{ secrets.ARTIFACTS_USER }}:${{ secrets.ARTIFACTS_PASSWORD }} ${{ steps.artifacts.outputs.link }}/myfile -o myfile\n```\n\n### Promote\n\nArtifacts can be promoted when a tag has been made to make a build available forever.\n\nExample:\n\n```yaml\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Promote artifacts by name\n        id: artifacts\n        uses: scality/action-artifacts@v4\n        with:\n          method: promote\n          url: my.artifacts.url\n          name: 'githost:owner:repo:staging-1628004655.8e50acc6a1.pre-merge.28'\n          tag: 'promote:tag'\n          user: ${{ secrets.ARTIFACTS_USER }}\n          password: ${{ secrets.ARTIFACTS_PASSWORD }}\n      - run: |\n          curl ${{ steps.artifacts.outputs.link }}/my-file -o my-file\n```\n\n### Prolong\n\nArtifacts have an expiration date of 15 days. The prolong method allows you to make a copy of your build that will last longer.\n\nExample:\n```yaml\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Artifacts Prolong\n        id: artifacts-prolong\n        uses: scality/action-artifacts@v4\n        with:\n          url: my.artifacts.url\n          user: ${{ secrets.ARTIFACTS_USER }}\n          password: ${{ secrets.ARTIFACTS_PASSWORD }}\n          name: 'githost:owner:repo:staging-1628004655.8e50acc6a1.pre-merge.28'\n          method: prolong\n```\n\n### Get\n```yaml\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Artifacts Upload\n        id: artifacts-get\n        uses: scality/action-artifacts@v4\n        with:\n          url: my.artifacts.url\n          user: ${{ secrets.ARTIFACTS_USER }}\n          password: ${{ secrets.ARTIFACTS_PASSWORD }}\n          workflow-name: test-get\n          method: get\n      - run: |\n          curl -u ${{ secrets.ARTIFACTS_USER }}:${{ secrets.ARTIFACTS_PASSWORD }} ${{ steps.artifacts-get.outputs.link }}/file1 -o file1\n```\n\n### Index (beta)\n\nArtifacts index by default the following key:\n* actor\n* branch\n* commit\n* event_name\n* ref\n* run_number\n* sha (same as commit)\n* shortcommit\n\nGiving you the ability to list your build Artifacts by branch commits and so on.\n\nIndex allow you to set your own key value pairs enabling searching capability with\nparameters that are not indexed by default, and are specific to your repository.\n\n```yaml\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Artifacts Index\n        uses: scality/action-artifacts@v4\n        with:\n          url: my.artifacts.url\n          user: ${{ secrets.ARTIFACTS_USER }}\n          password: ${{ secrets.ARTIFACTS_PASSWORD }}\n          method: index\n          args: |\n            key=value\n            foo=bar\n```\n\n## Inputs\n\nThis action take the following inputs:\n\n* `url`: The url of artifacts. This input is required.\n* `user`: The user to authenticate with Artifacts.\nUsually setup as a secret in the organization, ask your admin for the key of it. This input is required.\n* `password`: The password to authenticate the operation with Artifacts. This input is required.\n* `method`: What kind of interaction you will perform with Artifacts.\nWith the choice of: `upload`, `promote`, `prolong` or `get`.\nThis input is required.\n* `sources`: File or directory to upload. To be used with the `upload` method.\n* `name`: The name of the artifacts build you will use. Only used with `prolong` and `promote` method.\n* `tag`: The git tag name of the artifacts you are going to promote. To be used with `promote` method.\n* `workflow-name`: Name of the workflow file you want to have the Artifacts name. To be used with `get` method.\n* `args`: A list of key value pairs to use with the Index method.\n\n## Outputs\n\nThis action will output the following variables:\n\n* `name`: Will contain a generated name for the artifacts that will be used for a workflow. Each workflow will have a unique artifact name which can be shared among the jobs that are within.\n* `link`: The full url in which artifacts will be stored.\n* `redirect-link`: The full url that will redirect clients to a pre-signed S3 url\n  providing data through the S3 bucket instead of the Artifacts service.\n\n## Scenarios\n\nYou will find some interactive workflow files to demonstrate scenarios\nthat are possibles when combining multiple methods or\nGitHub Actions features with this Action.\n\n### Sharing an artifact to two different job\n\nWhen inside a workflow where you upload a content into Artifacts and\nwant to retrieve this content into another job inside the same workflow\nyou can use action and job `outputs` to achieve this.\n\nCheckout the [share-artifacts.yaml] workflow file.\n\n### Promote a build when a tag is created\n\nWhen a tag is created on the repository and you want to automatically\npromote a build from a specific workflow, combine the `on.push.tags`\nevent along with the `get` and `promote` method on Artifacts.\n\nCheckout the [promote-release.yaml] workflow file.\n\n[Artifacts]: https://github.com/scality/artifacts\n[promote-release.yaml]: https://github.com/scality/action-artifacts/blob/HEAD/.github/workflows/promote-release.yaml\n[share-artifacts.yaml]: https://github.com/scality/action-artifacts/blob/HEAD/.github/workflows/share-artifacts.yaml\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscality%2Faction-artifacts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscality%2Faction-artifacts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscality%2Faction-artifacts/lists"}