将文件从管道推送到存储库

时间:2021-07-16 08:02:50

标签: git gitlab continuous-integration gitlab-ci pipeline

我有 GitLab 管道,我可以在其中从存储库获取文件、更新文件中的数据并希望将其推回原点

这是我的管道文件

    variables:
  NUGET_URL: ********
  GITLAB_BASE_URL: ******
  GITLAB_ENDPOINT: ********
  MAJOR_VERSION: ********

stages:
  - publish-nuget-package
   
step-publish-nuget-package:
  stage: publish-nuget-package
  image: mcr.microsoft.com/dotnet/core/sdk:3.1
  before_script:
    - dotnet tool install --global dotnet-ef
    - export PATH="$PATH:/root/.dotnet/tools"
    - dotnet tool install -g AWS.CodeArtifact.NuGet.CredentialProvider
    - dotnet codeartifact-creds install
  script:
    - apt-get update -y
    - apt-get upgrade -y
    - apt-get dist-upgrade -y 
    - apt-get -y autoremove
    - apt-get clean
    - apt-get -y install git
    - git config --list
    - x=$(awk '{print $2}' ./package-version.txt)
    - ((x++))
    - echo "${x}"
    - echo "VERSION_NUMBER:\ ${x}" > ./package-version.txt
    # - latestTag=$(git describe --abbrev=0 --tags)
    # - echo "$latestTag"
    # - ((latestTag++))
    # - git tag ${latestTag} --force
    - git remote set-url origin $GITLAB_BASE_URL$API_TOKEN$GITLAB_ENDPOINT
    - git remote -v
    - git push origin ./package-version.txt --force -o ci.skip
    # - git tag
    - cd Monspire.EmailSender.Contracts
    - dotnet pack -c Release /p:Version=$MAJOR_VERSION."${x}"
    - echo "VERSION_NUMBER:\ ${x}" > ./package-version.txt
    - cd Monspire.EmailSender.Contracts/bin/Release/
    - dotnet nuget push Monspire.EmailSender.Contracts.$MAJOR_VERSION."${x}".nupkg --source $NUGET_URL
  environment: development
  tags:
    - monspire
  only:
    - versioning

在这行 - git push origin package-version.txt --force -o ci.skip 我收到这个错误

<块引用>

$ git push origin ./package-version.txt --force -o ci.skip 致命:无效的 refspec './package-version.txt'

我需要如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

你在那里做什么很奇怪你正在更新、升级、dist-upgrading autoremoving 包。这是一场真正的战争。 至少我永远不会自动执行 dist-upgrading,因为 dist-upgrade 还可以添加一个新内核,而所有这些都在“不要问我-只是做-它”模式(-y)中非常有趣。最有趣的是,你还安装了 git 最后,然后我问自己你的 gitlab-runner 安装在哪里。但事情就是这样,你永远不会停止学习。

当然你不需要把像“git remote set-url”这样的命令放在你自动执行的管道中,也不需要每次都指定来源,因为你的Git记住了来源。

    - git init
    - git remote set-url --push <name> <url>

通常,您必须在添加源之前初始化您的存储库。 这应该成为管道的一部分。管道的用途是部署您的更改、进行测试或构建产品 因此,您首先将您所做的更改添加到本地工作区存储库,然后开始编辑您的管道

    - git add .

这会添加所有修改过的文件,但如果您只想添加一个文件...

    - git add -A -- C:\Users\Eugene\Workspace\Project\package-version.txt

然后你只需推(到)原点。不需要指定文件,这是git add的工作

    - git push

或者如果你有不同分支名称的复杂情况

    - git push origin branch_here:branch_there

并验证询问状态

    - git status

或使用 -u 向您显示要提交的未跟踪更改

这就是魔法