我误解了什么吗? github 操作中的意外行为
Am I misunderstand something? Unexpected behaviour in github actions
所以我有一个 github 工作流程,工作如下:
docker:
name: Docker image
needs: test-n-build
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Set docker image tag
if: startsWith(github.ref, 'refs/tags/')
run: echo "DOCKER_TAG=:$(cargo read-manifest | sed 's/.*"version":"\{0,1\}\([^,"]*\)"\{0,1\}.*//')" >> $GITHUB_ENV
- name: Login to DockerHub
uses: docker/login-action@v1
- name: Build and push
uses: docker/build-push-action@v2
with:
push: ${{ startsWith(github.ref, 'refs/tags/') }}
显然,此工作流程会构建 docker 图像,如果标签被推送到分支,则会将其推送到注册表。正如所见,使用了 cargo 命令的 Set docker image tag
步骤,但是当我复制粘贴内容时,我忘记添加设置 rust 操作。但是该步骤已成功执行并且没有出现 command cargo not found
之类的错误。
是否因为该工作需要 test-n-build
我实际安装 rust 或 qemu 安装 rust 的工作?它如何找到 cargo
命令?
正如您在 Ubuntu-20.04 virtual environment 上看到的那样,它安装了一些 Rust 工具:
### Rust Tools
Cargo 1.58.0
Rust 1.58.1
Rustdoc 1.58.1
Rustup 1.24.3
因此,在这种情况下,您不需要任何额外的设置来安装它们。
您可以查看用作运行器的可用虚拟环境及其配置here。
所以我有一个 github 工作流程,工作如下:
docker:
name: Docker image
needs: test-n-build
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Set docker image tag
if: startsWith(github.ref, 'refs/tags/')
run: echo "DOCKER_TAG=:$(cargo read-manifest | sed 's/.*"version":"\{0,1\}\([^,"]*\)"\{0,1\}.*//')" >> $GITHUB_ENV
- name: Login to DockerHub
uses: docker/login-action@v1
- name: Build and push
uses: docker/build-push-action@v2
with:
push: ${{ startsWith(github.ref, 'refs/tags/') }}
显然,此工作流程会构建 docker 图像,如果标签被推送到分支,则会将其推送到注册表。正如所见,使用了 cargo 命令的 Set docker image tag
步骤,但是当我复制粘贴内容时,我忘记添加设置 rust 操作。但是该步骤已成功执行并且没有出现 command cargo not found
之类的错误。
是否因为该工作需要 test-n-build
我实际安装 rust 或 qemu 安装 rust 的工作?它如何找到 cargo
命令?
正如您在 Ubuntu-20.04 virtual environment 上看到的那样,它安装了一些 Rust 工具:
### Rust Tools
Cargo 1.58.0
Rust 1.58.1
Rustdoc 1.58.1
Rustup 1.24.3
因此,在这种情况下,您不需要任何额外的设置来安装它们。
您可以查看用作运行器的可用虚拟环境及其配置here。