continuous-integration - Bitbucket Pipeline:在 pdfLaTeX 之后存储 .pdf 工件
问题描述
我尝试将 Bitbucket 的管道功能用于 LaTeX git 存储库。我只想构建我的 .tex 文件并将 .pdf 工件存储到存储库下载文件夹。我在这里找到了一些有用的指南,并在SO找到了类似的答案。
这是我的pipeline.yml
options:
docker: true
image: kaspersoerensen/latex-docker
pipelines:
default:
- step:
script:
- pdflatex --shell-escape TEST.tex # Build once
#- bibtex TEST # Build bibtex
- pdflatex -shell-escape TEST.tex # Build again
- pdflatex -shell-escape TEST.tex # And last time
- curl -X POST --user "${BB_AUTH_STRING}" "https://api.bitbucket.org/2.0/repositories/${BITBUCKET_REPO_OWNER}/${BITBUCKET_REPO_SLUG}/downloads" --form files=@"TEST.pdf"
为了进行设置curl
,我使用了 Atlassian 的官方指南。
一切似乎都很好,构建成功,没有任何错误。
问题:我的存储库下载文件夹不包含任何工件。
编辑
构建输出:
Build setup
4s
pdflatex --shell-escape TEST.tex
1s
pdflatex -shell-escape TEST.tex
1s
pdflatex -shell-escape TEST.tex
1s
curl -X POST --user "${BB_AUTH_STRING}" "https://api.bitbucket.org/2.0/repositories/${BITBUCKET_REPO_OWNER}/${BITBUCKET_REPO_SLUG}/downloads" --form files=@"TEST.pdf"
<1s
Build teardown
码头工人输出:
time="2019-12-20T14:56:23.511294820Z" level=warning msg="could not change group /var/run/docker.sock to docker: group docker not found"
time="2019-12-20T14:56:23.511451739Z" level=warning msg="[!] DON'T BIND ON ANY IP ADDRESS WITHOUT setting --tlsverify IF YOU DON'T KNOW WHAT YOU'RE DOING [!]"
time="2019-12-20T14:56:23.544238141Z" level=warning msg="failed to load plugin io.containerd.snapshotter.v1.btrfs" error="path /var/lib/docker/165536.165536/containerd/daemon/io.containerd.snapshotter.v1.btrfs must be a btrfs filesystem to be used with the btrfs snapshotter"
time="2019-12-20T14:56:23.562813661Z" level=warning msg="failed to load plugin io.containerd.snapshotter.v1.aufs" error="modprobe aufs failed: "ip: can't find device 'aufs'\nmodprobe: can't change directory to '/lib/modules': No such file or directory\n": exit status 1"
time="2019-12-20T14:56:23.563473734Z" level=warning msg="failed to load plugin io.containerd.snapshotter.v1.zfs" error="path /var/lib/docker/165536.165536/containerd/daemon/io.containerd.snapshotter.v1.zfs must be a zfs filesystem to be used with the zfs snapshotter"
time="2019-12-20T14:56:23.563610398Z" level=warning msg="could not use snapshotter btrfs in metadata plugin" error="path /var/lib/docker/165536.165536/containerd/daemon/io.containerd.snapshotter.v1.btrfs must be a btrfs filesystem to be used with the btrfs snapshotter"
time="2019-12-20T14:56:23.563626718Z" level=warning msg="could not use snapshotter aufs in metadata plugin" error="modprobe aufs failed: "ip: can't find device 'aufs'\nmodprobe: can't change directory to '/lib/modules': No such file or directory\n": exit status 1"
time="2019-12-20T14:56:23.563636848Z" level=warning msg="could not use snapshotter zfs in metadata plugin" error="path /var/lib/docker/165536.165536/containerd/daemon/io.containerd.snapshotter.v1.zfs must be a zfs filesystem to be used with the zfs snapshotter"
time="2019-12-20T14:56:23.695604523Z" level=warning msg="Running modprobe bridge br_netfilter failed with message: ip: can't find device 'bridge'\nbridge 167936 1 br_netfilter\nstp 16384 1 bridge\nllc 16384 2 bridge,stp\nip: can't find device 'br_netfilter'\nbr_netfilter 24576 0 \nbridge 167936 1 br_netfilter\nmodprobe: can't change directory to '/lib/modules': No such file or directory\n, error: exit status 1"
time="2019-12-20T14:56:23.706219675Z" level=warning msg="Running modprobe nf_nat failed with message: `ip: can't find device 'nf_nat'\nnf_nat_ipv6 16384 1 ip6table_nat\nnf_nat_ipv4 16384 2 ipt_MASQUERADE,iptable_nat\nnf_nat 32768 3 nf_nat_ipv6,xt_nat,nf_nat_ipv4\nnf_conntrack 139264 8 nf_nat_ipv6,nf_conntrack_netlink,xt_nat,xt_conntrack,ip_vs,ipt_MASQUERADE,nf_nat_ipv4,nf_nat\nlibcrc32c 16384 3 ip_vs,nf_nat,nf_conntrack\nmodprobe: can't change directory to '/lib/modules': No such file or directory`, error: exit status 1"
time="2019-12-20T14:56:23.716309547Z" level=warning msg="Running modprobe xt_conntrack failed with message: `ip: can't find device 'xt_conntrack'\nxt_conntrack 16384 42 \nnf_conntrack 139264 8 nf_nat_ipv6,nf_conntrack_netlink,xt_nat,xt_conntrack,ip_vs,ipt_MASQUERADE,nf_nat_ipv4,nf_nat\nmodprobe: can't change directory to '/lib/modules': No such file or directory`, error: exit status 1"
解决方案
我建议使用bitbucket-upload-file管道而不是使用 curl 发送 API 请求来上传 Bitbucket 中的文件。如果出现问题,管道将提供更好的反馈。这是一个示例,您可以如何做到这一点:
options:
docker: true
image: kaspersoerensen/latex-docker
pipelines:
default:
- step:
name: Build the pdf
script:
- pdflatex --shell-escape TEST.tex
artifacts:
- TEST.pdf
- step:
name: Upload
script:
- pipe: atlassian/bitbucket-upload-file:0.1.2
variables:
BITBUCKET_USERNAME: $BITBUCKET_USERNAME
BITBUCKET_APP_PASSWORD: $BITBUCKET_APP_PASSWORD
FILENAME: 'TEST.pdf'
请注意,我使用分离步骤来构建和上传,这被认为是构建管道的好方法。
推荐阅读
- r - R闪亮的嵌套模块,输入不可用
- android - 在键盘打开时调整Android ImageView的大小,保持纵横比
- ruby-on-rails - 遍历rails中的哈希
- javascript - 如何在 Vue.js 中将选项 api 转换为组合 api?
- javascript - 如何使用 jquery 中的变量选择 div id
- python - 在 pandas 中删除带有 dict 的列表
- c++ - const int 模板似乎在结构中不起作用
- julia - 我想在 Julia 中运行丢失的数据代码,但看到此错误,但不知道为什么
- php - 如何显示点赞帖子的人数
- r - 在 R 中使用 paste 跨列应用变异