在Azure管道中运行apt get以获取Docker映像
最近,我的工作场所已经从CircleCI过渡到Azure管道,因此我们一直在迁移我们所有的CI。虽然大多数都有点直截了当,但这个特定的管道需要在docker映像中运行我们的linux作业。以下是CircleCI的情况:在Azure管道中运行apt get以获取Docker映像,docker,azure-devops,electron,azure-pipelines,circleci,Docker,Azure Devops,Electron,Azure Pipelines,Circleci,最近,我的工作场所已经从CircleCI过渡到Azure管道,因此我们一直在迁移我们所有的CI。虽然大多数都有点直截了当,但这个特定的管道需要在docker映像中运行我们的linux作业。以下是CircleCI的情况: build: docker: - image: electronuserland/builder:wine-03.18 steps: - run: apt-get update - run: apt-get ins
build:
docker:
- image: electronuserland/builder:wine-03.18
steps:
- run: apt-get update
- run: apt-get install -y libgnome-keyring-dev icnsutils graphicsmagick xz-utils rpm bsdtar
- run: yarn install
# run tests!
- run: yarn test -- -u
- run: yarn test -- --maxWorkers 2
# Build the React app and the Electron app
- run:
name: yarn run electron-pack
VERSION=$(node -p "var ipVer = require('./package.json').version; \
var semVer = require('semver'); \
var sprintf = require('sprintf-js').sprintf; \
sprintf('%s.%s.%s%s', semVer.major(ipVer), semVer.minor(ipVer), semVer.patch(ipVer), '$ReleaseVAR');")
yarn version --no-git-tag-version --new-version VERSION
yarn run electron-pack
# Move the packages into a separate directory
- run: mkdir dist/packages
- run: mv dist/*.exe dist/packages
- run: mv dist/*.AppImage dist/packages
- run: mv dist/*.deb dist/packages
- run: mv dist/*.rpm dist/packages
下面是Azure管道中当前的外观:
jobs:
- job: Linux
pool:
name: 'Hosted Ubuntu 1604'
vmImage: 'ubuntu-16.04'
container:
image: electronuserland/builder:wine-03.18
options: --privileged
steps:
- task: NodeTool@0
inputs:
versionSpec: '8.x'
displayName: 'Install Node.js'
#- script: apt-get update
# displayName: apt-get update
#- script: sudo apt-get install -y libgnome-keyring-dev icnsutils graphicsmagick xz-utils rpm bsdtar
# displayName: apt-get install
#- script: sudo apt-get -f install
#- script: sudo apt-get install -y wine
- task: Npm@1
inputs:
command: 'install'
- script: yarn test -- -u --coverage
displayName: yarn -u
- script: yarn test -- --maxWorkers 2 --coverage
displayName: yarn maxWorkers 2
- script: |
VER=$(node -p "var ipVer = require('./package.json').version; \
var semVer = require('semver'); \
var sprintf = require('sprintf-js').sprintf; \
sprintf('%s.%s.%s%s', semVer.major(ipVer), semVer.minor(ipVer), semVer.patch(ipVer), '$(Build.BuildNumber)');")
yarn version --no-git-tag-version --new-version $(VER)
yarn run electron-pack
在最后一个脚本期间,在没有“apt get”行的情况下运行脚本的任何尝试都会失败,从而产生错误。
尝试
错误,尝试运行“sudo apt get”会导致错误
/__w/_temp/ac8e299a-ba1c-4e18-8baa-93d3f4a189e3.sh: line 1: sudo: command not found
错误。但是要安装sudo,我需要能够运行'apt get install sudo-y'
这会导致无法继续进行的循环。如何让apt get命令在Azure管道中运行?我应该注意的是,Mac版本的这个运行不需要任何修改或需要docker映像
如何让apt get命令在Azure管道中运行
这似乎与docker图像有关。正如我们所知,Docker映像通常没有sudo
,默认情况下,我们总是以根运行。在这种情况下,我们可以直接使用命令apt get
但是这个映像似乎是以非根运行的,所以对于根访问,您必须切换到根。在Dockerfile
中,您可以简单地使用用户指令切换用户身份;这通常默认为以root用户身份运行:
USER root
要解决此问题,您可能需要根据图像:electronuserland/builder:wine-03.18
自定义docker图像
您可以尝试查看更多详细信息
希望这有帮助
USER root