컴파일된 .tex 파일(.pdf)을 Gitlab의 루트 저장소에 업로드합니다.

컴파일된 .tex 파일(.pdf)을 Gitlab의 루트 저장소에 업로드합니다.

다음 문제를 해결하려면 귀하의 도움이 필요합니다. .texGitLab에서 문서를 컴파일하고 컴파일된 .pdf파일을 루트 저장소에 넣으려고 합니다 . .gitlab-ci.yml다음 구성으로 파일을 만들었습니다 .

# Use the latest version of the TeX Live Docker image
image: texlive/texlive:latest

# Define a single stage named "build"
stages:
  - build

# Configuration for the "build" stage
build:
  stage: build
  # Specify the events that trigger the pipeline
  only:
    - push
  # Specify the commands to be executed in the pipeline
  script:
    - filename="main"
    - echo "Running latexmk with lualatex"
    - latexmk -pdf -pdflatex="lualatex %O %S" "$filename.tex"
    - echo "Moving .pdf file to root directory"
    - mv "$filename.pdf" ../
    - echo "Listing contents of root directory"
    - ls ../

파일 은 log나에게 다음을 알려줍니다

Latexmk: All targets () are up-to-date
$ echo "Moving .pdf file to root directory"
Moving .pdf file to root directory
$ mv "$filename.pdf" ../
$ echo "Listing contents of root directory"
Listing contents of root directory
$ ls ../
PhD
PhD.tmp
main.pdf
Cleaning up project directory and file based variables
Job succeeded

그러나 저장소에 액세스하면 로드된 파일이 표시되지 않습니다 main.pdf. 이 문제를 어떻게 해결할 수 있나요? 제가 이해하지 못하는 것이 있나요?

답변1

로그에 다음 줄이 표시되어야 합니다.

$ mv "$filename.pdf" ../

이는 변수가 확장되지 않았음을 의미합니다.

gitlab의 yaml 구문에서는 변수를 정의해야 합니다.

job:
   variables:
      var1: "apple"
      var2: "orange"

따라서 스크립트는 다음과 같아야 합니다.

# Configuration for the "build" stage
build:
  stage: build
  # Specify the events that trigger the pipeline
  only:
    - push
  variables:
    filename: "main"
  # Specify the commands to be executed in the pipeline
  script:
    - echo "Running latexmk with lualatex"
    - latexmk -pdf -pdflatex="lualatex %O %S" "$filename.tex"

여기를 읽어보세요: https://docs.gitlab.com/ee/ci/variables/

관련 정보