GitHub Actions的Artifacts怎么使用

本人github

在 GitHub Actions 中,Artifacts 是一种用于在工作流程运行期间保存文件并在不同的作业间共享或下载的机制。你可以用它来存储构建产物、测试报告、日志文件等。以下是使用 Artifacts 的方法:

1. 创建和上传 Artifacts

在 GitHub Actions 中,你可以使用 actions/upload-artifact 动作来创建和上传 Artifacts。例如,以下代码片段会将 output 文件夹作为 Artifact 上传。

name: Build and Test

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Run build script
        run: |
          mkdir output
          echo "Hello, World!" > output/hello.txt

      - name: Upload artifact
        uses: actions/upload-artifact@v4
        with:
          name: build-output  # Artifact 名称
          path: output         # 要保存的文件或文件夹路径

2. 下载 Artifacts

可以通过 GitHub 网站直接下载上传的 Artifacts。在 Actions 页面中,选择某次工作流程运行记录,在相应的作业下会看到上传的 Artifacts,并可以下载。

3. 在作业间共享 Artifacts

Artifacts 可以用于在 GitHub Actions 的不同作业之间共享数据。比如,一个作业可以上传一个 Artifact,另一个作业可以下载并使用它。示例如下:

name: Build and Test

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Create artifact
        run: |
          mkdir output
          echo "Build results" > output/build.txt

      - name: Upload artifact
        uses: actions/upload-artifact@v4
        with:
          name: build-artifact
          path: output/

  test:
    runs-on: ubuntu-latest
    needs: build  # 依赖 build 作业

    steps:
      - name: Download artifact
        uses: actions/download-artifact@v4
        with:
          name: build-artifact  # 下载名为 build-artifact 的 Artifact
          path: ./              # 解压的目录位置

      - name: Verify artifact
        run: cat output/build.txt  # 查看上一步下载的内容

在这个示例中,build 作业会上传一个包含构建结果的 Artifact,test 作业会下载并使用这个 Artifact。

4. 设置 Artifact 的保留期限

默认情况下,Artifact 在 GitHub 上会被保存 90 天。你可以通过 retention-days 参数调整保存时间,范围在 1 到 90 天之间。

      - name: Upload artifact with custom retention
        uses: actions/upload-artifact@v4
        with:
          name: build-output
          path: output
          retention-days: 30  # 保留 30 天

5. 删除 Artifacts

Artifacts 可以通过在仓库设置中手动删除。你也可以使用 GitHub API 自动化管理 Artifact

GitHub Actions中,你可以通过添加自定义脚本来自动管理artifacts的生命周期,包括删除旧的artifacts。以下是一种常见的做法: 1. **创建一个工作流**: 创建一个新的`.yml`文件,例如`delete-old-artifacts.yml`,并在GitHub仓库的工作流程目录下。 2. **添加工作流程内容**: ```yaml on: schedule: # 定义删除旧artifacts的时间点,例如每天凌晨1点 - cron: '0 1 * * *' jobs: delete-old-artifacts: runs-on: ubuntu-latest permissions: contents: read steps: - id: fetch_artifacts name: Fetch Artifacts uses: actions/download-artifacts@v2 with: name: old-artifacts path: /path/to/artifacts # 替换为你实际的artifacts路径 - id: clean_artifacts name: Clean Old Artifacts run: | find /path/to/artifacts -type f -mtime +7 -exec rm {} \; # `-mtime +7` 表示移除超过7天的文件,根据需求调整这个条件 - id: upload-status name: Upload Delete Status run: | echo "::set-output name=status::Cleanup completed" # 输出消息以便查看流水线结果 ``` 上述脚本会在每天的指定时间运行,首先下载名为`old-artifacts`的artifacts,然后查找并删除超过7天未更新的文件(这里假设默认期限)。最后,它会报告清理状态。 3. **启用工作流程**: 确保该文件处于`.github/workflows`目录下,并保存。然后访问工作流程设置,启用并配置定时任务。 请注意,此操作会永久删除旧的artifacts,所以在执行之前请谨慎设定规则,确保不会意外删除重要数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我想要身体健康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值