electron Gitlab-CI如何在不同的管道中使用工件

frebpwbc  于 11个月前  发布在  Electron
关注(0)|答案(4)|浏览(156)

目前,我有两个主要项目。
1-)Vue项目包含(IOS和Android的网络视图,网站和我们的Electron渲染器),它们共享组件和API。
2-)Electron Project,为Windows、达尔文、Linux构建桌面应用程序
我想自动化我们的建设,释放过程.我目前的设置..

before_script: 
                - apt-get update
                - apt-get install zip unzip 
                - rm -rf vue-project
                - git clone vue-project
                - cd vue-project
                - git checkout dev
                - git pull
                - sed -i "/\b\(areaCode\|inline-svg-loader\)\b/d" ./packages/devtool/package.json
                - yarn install
                - ln -s vue-project/packages/desktop/ web
                - npm install

            build_darwin:
                stage: build
                script:
                    - npm run package -- darwin --deploy
                cache:
                    paths:
                        - vue-project/node_modules
                        - node_modules

字符串
基本上在捆绑电子项目之前,它克隆了vue-project安装依赖项并捆绑了电子渲染器,然后当它完成时。
我想把这两个不同的工作分开。我可以使用来自不同项目gitlab-CI管道的工件吗?
任何帮助将是一个感激。

xggvc2p6

xggvc2p61#

Gitlab有一个API来做很多技巧。

curl --header "PRIVATE-TOKEN:YOURPRIVATETOKEN" "https://gitlab.example.com/api/v4/projects/1/jobs/artifacts/master/download?job=test"

字符串
下载它作为一个文件。

curl --header "PRIVATE-TOKEN:YOURPRIVATETOKEN" -o artifacts.zip "http://gitlab.example.net/api/v4/projects/<projectnumber>/jobs/artifacts/master/download?job=build_desktop

dgiusagp

dgiusagp2#

Gitlab当然可以支持这一点。要实现这一点,请遵循以下步骤:

伪影生成

在您的Vue项目中,修改您感兴趣的作业以存储与Electron项目相关的工件。每个作业的工件都使用Gitlab Job Artifacts表示法定义,并在作业完成时上传到Gitlab,并与您的 Project,* 分支 * 和 Job 关联存储。
注意:* 分支经常被忽略,当您想要检索工件时,它很重要,稍后将详细介绍。*
举例说明:

Vue Project .gitlab_ci.yml

stages:
- stage1
- ...

vue-job1:
  stage: stage1
  script:
    - echo "vue-job1 artifact1" > ./artifact1
    - echo "vue-job1 artifact2" > ./artifact2
  artifacts:
    when: always
    paths:
    - ./artifact1
    - ./artifact2
    expire_in: 90 days

vue-job2:
  stage: stage1
  script:
    # error, would overwrite job1's artifacts since working
    # directory is a global space shared by all pipeline jobs
    # - echo "vue-job2 artifact1" > ./artifact1
    - echo "vue-job2 artifact1" > ./artifact3
  artifacts:
    when: always
    paths:
    - ./artifact3
    expire_in: 90 days

字符串
上面生成的工件被写入到工作目录,这是项目存储库的克隆。所以要小心文件名冲突。为了安全起见,将工件放在一个目录中(例如:cat“foo”> ./subdir/artifact),并以相同的方式引用它们(路径:- ./subdir/artifact)。您可以在脚本中使用'ls'来查看工作目录。
作业完成后,您可以使用Gitlab UI确认存储在Gitlb中的工件。查看作业输出,并使用右侧面板上作业工件下的浏览按钮。

文物检索

在您的Electron Project中,修改您感兴趣的作业,以使用Gitlab Job Artifacts APIcurl 检索存储在Vue Project中的工件。为了访问Vue工件,您将需要创建工件的Vue Project、* 分支 * 和 Job
项目:对于项目,使用Gitlab UI项目详细信息屏幕中显示的 * 项目ID*。
分支:通常为 master,但取决于管道执行的分支。尽管这与您的问题无关,但如果您在同一管道的执行中生成和消费工件,请为分支使用Gitlab变量 $CI_COMMIT_BRANCH
职位:通常是为您的项目生成工件的 Job Name。但如果您需要由特定Job生成的工件,则使用 Job Number 和相应的检索API。
举例说明:

Electron Project .gitlab_ci.yml

stages:
- stage1
- ...

electron-job1:
  stage: stage1
  script:
  - curl -o ./artifact1 -H "PRIVATE-TOKEN:$TOKEN" https://gitlab.example.com/api/v4/projects/$VUE_PROJECT_ID/jobs/artifacts/$BRANCH/raw/artifact1?job=vue-job1
  - curl -o ./artifact2 -H "PRIVATE-TOKEN:$TOKEN" https://gitlab.example.com/api/v4/projects/$VUE_PROJECT_ID/jobs/artifacts/$BRANCH/raw/artifact2?job=vue-job1
  - curl -o ./artifact3 -H "PRIVATE-TOKEN:$TOKEN" https://gitlab.example.com/api/v4/projects/$VUE_PROJECT_ID/jobs/artifacts/$BRANCH/raw/artifact3?job=vue-job2


这个脚本将工件单独检索到Electron项目的工作目录中。也有一些选项可以将所有工件作为zip存档一次检索。

酒店其他

虽然这不是所提出的问题,但值得注意的是,您可以在单个管道执行的生命周期内使用工件在作业之间传递信息。您也可以使用它在同一项目内的管道执行之间传递信息。

mhd8tkvw

mhd8tkvw3#

对于最新版本的gitlab,这可以通过使用多项目管道功能(然后在一个项目中启动管道会触发另一个项目的构建)来实现:请参阅documentation
或者您也可以使用“needs:project”机制,它允许一个作业从其他管道下载工件(请参阅文档Use needs:project to download artifacts from up to five jobs in other pipelines.

dpiehjr4

dpiehjr44#

GitLab 16.7(2023年12月)增加了一种新的可能性。

artifacts:public CI/CD关键字现已正式发布

以前,artifacts:public关键字仅作为自管理示例的默认禁用功能可用。
现在在GitLab 16.7中,我们已经使artifacts:public关键字对所有用户普遍可用。现在您可以在CI/CD配置文件中使用artifacts:public关键字来控制作业工件是否应该公开访问。
参见文档和Issue
这意味着Étienneanswer中提到的URL可以工作,即使没有凭据。

相关问题