Dalam file .gitlab-ci.yml saya, saya mencoba dan mengatur variabel yang berisi stempel waktu di bagian before_script. Saya kemudian ingin memperluas variabel itu dan menambahkannya ke arsip yang saya buat untuk build. Filenya kira-kira seperti ini:

#.gitlab-ci.yml

image: node:14.4.0-buster

before_script:
  - export DATETIME=$(date "+%Y%m%d%H%M%S")

stages:
  #- test  # not relevant for this question
  - build
  - deploy

build:
  stage: build
  script:
    - npm install
    - npm run build
    - ls -la build
    - tar cvfJ build_${DATETIME}.tar.xz build/
    - sha1sum build_${DATETIME}.tar.xz
  artifacts:
    paths:
    - build_${DATETIME}.tar.xz

deploy:
  image: node:14.4.0-buster
  stage: deploy
  script:
    - sha1sum build_${DATETIME}.tar.xz
    - tar xvfJ build_${DATETIME}.tar.xz
    # do the actual deploy
  only:
  - master

Tahap deploy gagal pada sha1sum. Outputnya adalah:

$ sha1sum build_${DATETIME}.tar.xz
sha1sum: build_20200702165854.tar.xz: No such file or directory

Ini menunjukkan bahwa ekspansi dilakukan dengan benar, namun ada yang salah.

Apa yang saya lewatkan?

1
Jir 3 Juli 2020, 00:00

1 menjawab

Jawaban Terbaik

before_script dijalankan pada awal setiap tugas, sehingga export DATETIME=$(date "+%Y%m%d%H%M%S") akan berbeda untuk kedua tahap.

Mungkin akan lebih baik untuk menggunakan ${CI_COMMIT_SHORT_SHA} sebagai gantinya.

1
Rekovni 2 Juli 2020, 21:43