我有一个执行数据流作业的bash脚本,如下所示
/deploy.sh
python3 main.py \
--runner DataflowRunner \
--region us-west1 \
--job_name name \
--project project \
--autoscaling_algorithm THROUGHPUT_BASED \
--max_num_workers 10 \
--environment prod \
--staging_location gs staging loc \
--temp_location temp loc \
--setup_file ./setup.py \
--subnetwork subnetwork \
--experiments use_network_tags=internal-ssh-server所以我使用gitlab ci来运行这个
./gitlab-ci.yml
Deploy Prod:
stage: Deploy Prod
environment: production
script:
- *setup-project
- pip3 install --upgrade pip;
- pip install -r requirements.txt;
- chmod +x deploy.sh
- ./deploy.sh
only:
- master现在,我的代码运行并记录在gitlab管道和数据流中的日志查看器中。我希望能够做的是,一旦gitlab看到JOB_STATE_RUNNING,它就会将管道标记为已通过,并停止向gitlab输出日志。也许在bash脚本中有一种方法可以做到这一点?或者可以在gitlab ci中完成?

发布于 2021-10-29 07:17:20
GitLab不具备此功能,因此您只需编写解决方案脚本。
这样的代码应该可以监视输出,并在遇到该文本时退出。
python3 myscript.py > logfile.log &
( tail -f -n0 logfile.log & ) | grep -q "JOB_STATE_RUNNING"
echo "Job is running. We're done here"
exit 0参考:https://superuser.com/a/900134/654263
您需要担心脚本中的其他一些事情,但这是基本思想。遗憾的是,GitLab没有基于跟踪输出的成功条件。
https://stackoverflow.com/questions/69729663
复制相似问题