我正在设置持续集成和持续交付基础设施,我的解决方案包含 Web 项目、dll 和控制台应用程序。我的问题是,除了控制台应用程序之外,我的所有项目都包含在构建工件中这是我使用的默认 MSBuild 参数
/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactstagingdirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"
Run Code Online (Sandbox Code Playgroud) 在我的 jenkins 管道中,我正在使用Pipeline Utility Steps插件读取存储在 yaml 文件中的数据
我可以从文件中读取数据,现在我想更新该值并将其写回文件,如下所示:
pipeline {
agent any
stages {
stage('JOb B ....'){
steps{
script{
def datas = readYaml file:"${WORKSPACE}/Version.yml"
echo datas.MAJOR_VERSION //output is 111
datas = ['MAJOR_VERSION': '222']
writeYaml file:"${WORKSPACE}/Version.yml", data: datas
}
}//steps
}//stage
}//stages
}//pipeline
Run Code Online (Sandbox Code Playgroud)
但我收到错误 - Version.yml 已经存在:
java.nio.file.FileAlreadyExistsException: /var/lib/jenkins/workspace/t-cicd-swarm-example_hdxts-job-B/Version.yml already exist.
at org.jenkinsci.plugins.pipeline.utility.steps.conf.WriteYamlStep$Execution.run(WriteYamlStep.java:175)
at org.jenkinsci.plugins.pipeline.utility.steps.conf.WriteYamlStep$Execution.run(WriteYamlStep.java:159)
at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Finished: FAILURE
Run Code Online (Sandbox Code Playgroud)
看来它只能写入一个新文件,而不能覆盖现有文件。如何从上面显示的脚本更新现有 yaml 文件的内容?
continuous-integration build continuous-deployment jenkins jenkins-pipeline
.gitlab-ci.yml通常我会通过 SSH 在远程服务器上执行以下命令:
# The job
deploy:
script:
# I've omitted the SSH setup here
- |
ssh gitlab@example.com "
# Makes the server print the executed commands to stdout. Otherwise only the command output is printed. Required for monitoring and debug.
set -x &&
# Executes some commands
cd /var/www/example &&
command1 &&
command2 &&
command3 &&
command4 &&
command5
"
Run Code Online (Sandbox Code Playgroud)
它工作正常,但 YAML 代码看起来太复杂:
set -x命令更像是一个样板文件,而不是有用的代码。普通 CI 命令不需要它,因为 GitLab CI 会自动打印它们。&&每行都有样板。当其中一个命令失败时,它们会使执行停止。否则,当一个命令失败时,将执行下一个命令(与普通作业命令相反)。情况:我在虚拟服务器上安装了 Jenkins 并设置了“自由式管道”。我通过 webhook 推送将它连接到我的 github,它可以工作(当我推送到存储库时,一个新的构建作业在 jenkins 中启动)。
问题:我似乎找不到执行 git pull 的工作目录。我已经搜索答案,很多人说 $JENKINS_HOME,但echo $JENKINS_HOME为我返回一个空行。我做错了什么吗?或者我的项目在哪里?另外,我可以将存储库拉取到自定义路径的路径设置为自定义路径(例如/root/myprojectname)吗?
编辑:我可以在 Jenkins webuserinterface 中看到工作区,但在虚拟服务器驱动器上找不到相应的文件夹。
continuous-integration continuous-deployment jenkins continuous-delivery
我有一个工作服务应用程序,我通过复制其二进制文件并使用 PowerShell 通过“New-Service”命令进行安装,在开发服务器上手动安装该应用程序。
我们正在寻找 CI/CD 来自动化构建和部署其工件。我不知道如何将“构建”文件从 Azure 获取到本地服务器,我已经查看了诸如部署组之类的内容,但这些似乎不是用于复制的发布工具中的选项。我已经查看了“复制”工具和构建工具,但我被困住了。
有些人似乎使用“经典”提到这一点,我想我使用的是 YAML,但不是经典。
有人能指出我正确的方向吗?
我在 gitlab 中有一个 django 存储库设置,我正在尝试使用 gitlab CI/CD 在谷歌云上自动构建和部署。
该应用程序必须部署在 App Engine 上,并且必须使用 CloudSQL 进行动态数据存储。
我面临的问题是在部署应用程序之前在数据库上执行迁移时。
我应该运行./manage.py migrate它连接到cloudSQL。
我读到我们可以使用云代理连接到cloudSQL并迁移数据库。但这有点像黑客。有没有办法通过 CI/CD 管道脚本迁移我的数据库?
任何帮助表示赞赏。谢谢。
django continuous-integration continuous-deployment google-cloud-sql gcloud
我正在使用over部署Nuxt应用程序,但我遇到了问题,因为整个部署过程非常慢(大约 30 多分钟)。AppveyorAzure App Service Zip Deploy
似乎整个构建过程都按预期进行,但压缩文件大约需要一两分钟 (106 MB),并且文件在合理的时间内成功推送到应用程序服务。然而,令人难以置信的等待时间是在Site Under Construction白页阶段,导致整个网站瘫痪。
Site Under Construction页吗?例如,有没有一种方法可以解压缩到另一个文件夹并在完成所有操作后移动文件,以便我在网站上获得最少的停机时间?azure continuous-deployment appveyor azure-web-app-service nuxt.js
我正在尝试建立从 GitHub 操作到 GAE 的部署管道。
我首先遵循此文档https://github.com/google-github-actions/auth#setup,使用设置工作负载身份联合方法。
看起来一切似乎都工作顺利,直到我使用gcloud app deploy或gcloud services list --enabled任何需要身份验证的命令的部分(在“构建”步骤中)。
.github\workflows\app-engine.yml
name: Build using Cloud Build
on:
push:
branches:
- main
env:
PROJECT_ID: testinfra3
SERVICE_NAME: default
jobs:
setup-build-deploy:
name: Setup, Build, and Deploy
runs-on: ubuntu-latest
permissions:
contents: 'read'
id-token: 'write'
steps:
- name: Checkout
uses: actions/checkout@v3
- id: 'auth'
name: 'Authenticate to Google Cloud'
uses: 'google-github-actions/auth@v0'
with:
workload_identity_provider: 'projects/123456789/locations/global/workloadIdentityPools/my-pool/providers/my-provider'
service_account: 'my-service-account@my-project.iam.gserviceaccount.com'
- name: 'Set up Cloud SDK'
uses: google-github-actions/setup-gcloud@v0
- …Run Code Online (Sandbox Code Playgroud) google-app-engine continuous-deployment google-cloud-platform github-actions
我使用Cypress.io进行自动化测试并使用Github Actions在 CI/D 中触发它。配置cypress.json文件具有嵌套env值,如下所示:
{
"baseUrl": "<url-to-login>",
"env": {
"roles": {
"admin": {
"PASSWORD": "<password>",
"USERNAME": "<username>"
},
"employee": {
"PASSWORD": "<password>",
"USERNAME": "<username>"
},
"client": {
"PASSWORD": "<password>",
"USERNAME": "<username>"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,Cypress 无法访问深层环境变量,因此我创建的配置cypress.json如下:
name: Cypress Tests
on: [push]
jobs:
cypress-run:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
# creates cypress.json file to run Cypress
- name: Create Cypress config files
run: |
echo …Run Code Online (Sandbox Code Playgroud) javascript continuous-integration continuous-deployment cypress github-actions
谁有过gradle的经验?我正在考虑将它用于持续部署......我正在考虑使用我自己的脚本(python)或gradle.
任何人都可以从经验中看出他认为推荐的方式是什么?请注意我已经使用maven,我不打算离开我的依赖管理和项目管理.
谢谢