首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Github操作在作业之间共享工作区/工件?

Github操作在作业之间共享工作区/工件?
EN

Stack Overflow用户
提问于 2019-08-14 16:24:50
回答 5查看 53.9K关注 0票数 143

尝试使用Github的beta操作时,我有两个任务,一个是构建代码,另一个是部署代码。但是,我似乎无法在部署作业中获得构建工件。

我最近的尝试是手动为每个作业设置一个具有相同卷的容器映像,根据docs --这应该是解决方案:集装箱容积

设置容器要使用的卷数组。您可以使用卷在服务或作业中的其他步骤之间共享数据。可以指定命名Docker卷、匿名Docker卷,或绑定主机上的挂载。

工作流

代码语言:javascript
复制
name: CI
on:
  push:
    branches:
    - master
    paths:
    - .github/workflows/server.yml
    - server/*
jobs:
  build:
    runs-on: ubuntu-latest
    container:
      image: docker://node:10
      volumes:
      - /workspace:/github/workspace
    steps:
    - uses: actions/checkout@master
    - run: yarn install
      working-directory: server
    - run: yarn build
      working-directory: server
    - run: yarn test
      working-directory: server
    - run: ls
      working-directory: server
  deploy:
    needs: build
    runs-on: ubuntu-latest
    container:
      image: docker://google/cloud-sdk:latest
      volumes:
      - /workspace:/github/workspace
    steps:
      - uses: actions/checkout@master
      - run: ls
        working-directory: server
      - run: gcloud --version

第一个作业( build )有一个build目录,但是当第二个作业(deploy)运行时,它不包含并且只包含源代码。

这个项目是一个mono,我试图将其部署在path server下,因此出现了所有working-directory标志。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-09-10 19:56:36

您可以使用Github操作-上载-工件和下载-工件在作业之间共享数据。

在job1中:

代码语言:javascript
复制
steps:
- uses: actions/checkout@v1

- run: mkdir -p path/to/artifact

- run: echo hello > path/to/artifact/world.txt

- uses: actions/upload-artifact@master
  with:
    name: my-artifact
    path: path/to/artifact

和job2:

代码语言:javascript
复制
steps:
- uses: actions/checkout@master

- uses: actions/download-artifact@master
  with:
    name: my-artifact
    path: path/to/artifact
    
- run: cat path/to/artifact/world.txt

https://github.com/actions/upload-artifact

https://github.com/actions/download-artifact

票数 116
EN

Stack Overflow用户

发布于 2020-12-19 11:22:13

对于那些有兴趣在两份工作之间分享一个码头形象的人,下面是我是如何做到的:

代码语言:javascript
复制
jobs:
  docker-build:
    name: Docker build
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Build Docker image
        run: |
          docker build -t foo/bar:$GITHUB_SHA
          mkdir -p path/to/artifacts
          docker save foo/bar:$GITHUB_SHA > path/to/artifacts/docker-image.tar
          
      - name: Temporarily save Docker image
        uses: actions/upload-artifact@v2
        with:
          name: docker-artifact
          path: path/to/artifacts
          retention-days: 1

  docker-deploy:
    name: Deploy to Docker Hub
    runs-on: ubuntu-latest
    needs: docker-build
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Retrieve saved Docker image
        uses: actions/download-artifact@v2
        with:
          name: docker-artifact
          path: path/to/artifacts

      - name: Docker load
        run: |
          cd path/to/artifacts
          docker load < docker-image.tar
          # docker_build_push.sh

非常受https://github.com/unfor19/install-aws-cli-action/actions/runs/400601222/workflow启发

Merci @unfor19 19

票数 28
EN

Stack Overflow用户

发布于 2020-01-14 21:46:39

如果您正在使用上载/下载GitHub操作,请注意工件的结构。

从2020年1月开始,请参见"GitHub操作:对工件下载体验的更改":

我们已经更改了GitHub操作中的工件下载体验,因此不再向下载的归档添加额外的根目录。 以前,如果您将下列文件和文件夹上传为名为foo的工件,则下载的归档文件将包含以下结构: foo/ foo file1.txt \-dir1 1/区-dir1 1-file1.txt 现在,您将得到一个只包含上载的文件和文件夹的存档: file1.txt dir1 1/dir1-dir1 1-file1.txt

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57498605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档