- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Docker 容器中的 Jenkins 中运行 Angular 12 构建,在尝试将 Assets 文件复制到 dist
文件夹时看到此错误:
✖ Copying of assets failed.
Unable to copy assets: EPERM: operation not permitted, copyfile '/var/jenkins_home/workspace/MY-Web-App/src/assets/building.svg' -> '/var/jenkins_home/workspace/MY-Web-App/dist/my-web-app/assets/building.svg'
问题是在我们于 2021 年 6 月 15 日更新 Ubuntu docker 主机上的所有操作系统包后开始的。
首先想到的是 seccomp 是错误的,但我在 docker-compose 中有这个:
jenkins:
build: ./jenkins
image: my-ci-jenkins
hostname: ....
user: root
volumes:
- /data/ci/jenkins/jenkins_home:/var/jenkins_home
- artifactsvolume:/var/jenkins_home/workspace/artifacts/dist/my-web-app
ports:
- '8080:8080'
- '50000:50000'
security_opt:
- seccomp:./jenkins/seccomp.json
depends_on:
- mariadb
- gitea
environment:
- TZ=America/Los_Angeles
- JENKINS_HOME=/var/jenkins_home
restart: always
networks:
my-ci-net:
ipv4_address: ....
除此之外,在 seccomp.json 中:
{
"defaultAction": "SCMP_ACT_ERRNO",
"syscalls": [
...
{
"name": "copyfile",
"action": "SCMP_ACT_ALLOW",
"args": null
}, ...
]
}
然后,也许是权限,NodeJS,npm?不,我目前以 root 身份运行该进程,清理了 node_modules
,在 Jenkinsfile
中输入大量日志以查看发生了什么。我正在使用 Jenkins 管道运行构建——这些是结帐、日志记录和构建步骤:
checkout scm
sh 'rm -rf ./node_modules'
sh 'npm install'
sh 'mkdir -p ./dist/my-web-app/assets'
sh 'chmod 766 ./dist/my-web-app/assets'
sh 'ls -al ./dist/my-web-app'
sh 'whoami'
sh 'pwd'
sh 'ls -al'
sh 'node --version'
sh 'npm --version'
sh 'ls -al /var/jenkins_home/workspace/My-Web-App/src/assets'
sh 'ng build --configuration=staging'
产生以下日志:
Building...
[Pipeline] sh
+ mkdir -p ./dist/my-web-app/assets
[Pipeline] sh
+ chmod 766 ./dist/my-web-app/assets
[Pipeline] sh
+ ls -al ./dist/my-web-app
total 5848
.....
drwxrw-rw- 2 root root 4096 Jun 23 17:44 assets
.....
[Pipeline] sh
+ whoami
root
[Pipeline] sh
+ pwd
/var/jenkins_home/workspace/My-Web-App
[Pipeline] sh
+ ls -al
total 720
.....
drwxr-xr-x 3 root root 4096 Jun 23 17:43 dist
-rw-r--r-- 1 root root 95 Feb 28 2020 docker-compose.yml
-rw-r--r-- 1 root root 3522 Jun 23 16:48 Jenkinsfile
.....
[Pipeline] sh
+ node --version
v14.17.1
[Pipeline] sh
+ npm --version
6.14.13
[Pipeline] sh
+ ls -al /var/jenkins_home/workspace/My-Web-App/src/assets
total 2080
drwxr-xr-x 2 root root 4096 Jun 23 18:39 .
drwxr-xr-x 6 root root 4096 Jun 23 18:39 ..
-rw-r--r-- 1 root root 3737 Feb 28 2020 building.svg
.....
[Pipeline] sh
+ ng build --configuration=staging
- Generating browser application bundles (phase: setup)...
Compiling @angular/core : es2015 as esm2015
.....
✔ Browser application bundle generation complete.
- Generating ES5 bundles for differential loading...
✔ Browser application bundle generation complete.
✔ ES5 bundle generation complete.
- Copying assets...
✖ Copying of assets failed.
Unable to copy assets: EPERM: operation not permitted,
copyfile '/var/jenkins_home/workspace/My-Web-App/src/assets/building.svg'
-> '/var/jenkins_home/workspace/My-Web-App/dist/my-web-app/assets/building.svg'
构建成功地在 dist 文件夹中创建了 main-...js
文件等,但只是没有复制 Assets 。我可以成功创建一个文件,然后将其复制到 Jenkinsfile sh
中,但在 Angular 构建期间不能:
[Pipeline] sh
+ touch ./dist/my-web-app/assets/me.txt
[Pipeline] sh
+ cp ./dist/my-web-app/assets/me.txt ./dist/my-web-app/assets/me-copy.txt
[Pipeline] sh
+ ls -al ./dist/my-web-app/assets
total 8
drwxrw-rw- 2 root root 4096 Jun 24 10:40 .
drwxr-xr-x 3 root root 4096 Jun 23 18:43 ..
-rw-r--r-- 1 root root 0 Jun 24 10:40 me-copy.txt
-rw-r--r-- 1 root root 0 Jun 24 10:40 me.txt
也许是 Angular 版本?我在 Angular 9、10、11 和 12 上尝试过同样的事情,结果相同,所以看起来问题不是 Angular 造成的。 Angular 人员建议这不是 Angular 问题:https://github.com/angular/angular-cli/issues/21198
angular.config(配置)
"configurations": {
"staging": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.staging.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"namedChunks": false,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"budgets": [
{
"type": "initial",
"maximumWarning": "2.7mb",
"maximumError": "15mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "8kb",
"maximumError": "10kb"
}
]
},
...
节点,NPM?我尝试过使用 Node 12 和 14。我尝试过 npm cache clean --force
、npm cache verify
并且如上所示,还删除了整个 node_modules
文件夹。
docker ?我使用 jenkins/jenkins:latest
作为基础多次重建了 docker 镜像和容器
我已经阅读并尝试了很多 StackOverflow、Github 等来自有类似问题的人的评论,建议重新启动、重建、检查权限、升级等,但没有运气,同样的问题。
不确定问题出在哪里:Angular、Docker、Jenkins、config、perms、colour-of-socks-im-wearing...非常感谢接受任何建议。
最佳答案
关于Angular Build EPERM : operation not permitted, 复制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68120537/
我试图设置 POSIX 消息队列的大小,但似乎不被允许。 msgctl() 手册页指出: IPC_SET can only be executed by a process with appropri
好的,我在尝试对 MOV 文件进行编码时收到“av_interleaved_write_frame(): Operation not allowed”错误。首先,我需要概述其背后的条件。 我通过在 c
我有一个运行带有选项 allow_other 和 umask 0 的 fuse fs。这给了我一组权限设置为 777 的文件。虽然当我尝试 ls -l 时在包含文件的目录中,我得到以下输出: ls:
我已经安装了 JENKINS 并创建了一个 bob,但是作业因以下错误而失败。我尝试了很多方法,例如授予权限,但都无法使其运行。 谁能告诉我可能是什么原因以及如何让它运行。 13:45:49 Star
我有这行简单的代码: mkdir($path_to_rpi, 0755); chgrp($path_to_rpi, 'sambashare'); 目录创建为 www-data
我是初学者。我尝试使用 git 创建用户名。但是当我打字的时候 git config --global user.name "XXX" 消息显示 Unable to read current work
我的代码如下: calcstep ::Integral a => a -> a calcstep n = calcstep2 n 0 calcstep2 :: Integral (Integral
我们正在gitlab CI中的Alpine Docker镜像中运行vault-cli。 升级后,在调用保管库时会得到以下信息: /bin/bash: line 117: /usr/sbin/vault
在 WinSCP 中,如果您从本地服务器打开了一个文件,并进行更改并按 (Ctrl + S),基本上保存它,您会得到错误提示: /path of the file/ set times: Operat
尽管使用 sudo,pip install 命令有时会生成类似于以下内容的错误: ...Installing collected packages: setuptools, protobuf, whe
我的任务是为系统上的所有用户列出用户所属的所有组。这个想法是通过 /etc/passwd 并为每个用户打印其组。 [编辑] 成功了: if( getgrouplist(passwd->pw_name,
我正在研究 UNIX 网络编程中的示例,并且我已将“daytimeclientcli.c”改编为此处特定于 linux 的代码(这些示例使用 BSD)。我在 here 上针对时间服务器运行了该程序.无
import config from flask import Flask from flask_redis import Redis from werkzeug.contrib.fixers imp
HugeTLB - Large Page Support in the Linux Kernel #include #include #include #include #define MB_
我正在开发一个 Google App Engine Go 应用程序,需要在我的一个包中使用一些 HTML 模板。当前文件结构为: GOPATH/github.com/NAME/PROJECT/
我正在使用 isolate ,一个隔离器,用于隔离另一个使用 Linux 容器的程序的执行。它非常方便,并且在我的本地计算机上运行良好(我可以运行 fork 炸弹和无限循环,它可以保护一切)。 现在我
我正在尝试在用户空间中使用 mmap 来读取“mem_map”开始的物理内存。它是一个包含所有物理页面的数组。这是一台运行 3.0 内核的 i386 机器。 代码是这样的: .... //define
我有问题,我需要通过 php 脚本为系统中的不同用户设置文件所有者权限 所以我通过以下命令执行此操作,其中 1002 是系统的用户 ID。 file_put_contents($filename, $
在拉取一些 docker 镜像(但不是全部)时出现此错误: failed to register layer: Error processing tar file(exit status 1): op
我有一个带有 Rails API 的 React SPA。我最近更改了 React 端的 API 请求以通过 axios 而不是 jquery,我的 axios 设置是: export default
我是一名优秀的程序员,十分优秀!