2

自動 RPM ビルドのセットアップに取り組んでおり、ビルド手順に進む前に SPEC ファイルで簡単なテストを実行したいと考えています。私が抱えている問題は、ジョブが常に展開段階にジャンプしているように見えることです。これは、私の .gitlab-ci.yml からの関連するスニペットです。

stages:
  - test
  - build
  - deploy

job1:
  stage: test
  script:
    # Test the SPEC file
    - su - newbuild -c "rpmbuild --nobuild -vv ~/rpmbuild/SPECS/package.SPEC"

  stage: build
  script:
    # Install our required packages
    - yum -y install openssl-devel freetype-devel fontconfig-devel libicu-devel sqlite-devel libpng-devel libjpeg-devel ruby

    # Initialize the submodules to build
    - git submodule update --init

    # build the RPM
    - su - newbuild -c "rpmbuild -ba --target=`uname -m` -vv ~/rpmbuild/SPECS/package.SPEC"

  stage: deploy
  script:
    # move the RPM/SRPM
    - mkdir -pv $BUILD_DIR/$RELEASEVER/{SRPMS,x86_64}
    - 'for f in $WORK_DIR/rpmbuild/RPMS/x86_64/*; do  cp -v "$f" $BUILD_DIR/$RELEASEVER/x86_64; done'
    - 'for f in $WORK_DIR/rpmbuild/SRPMS/*; do cp -v "$f" $BUILD_DIR/$RELEASEVER/SRPMS; done'

    # create the repo
    - createrepo -dvp $BUILD_DIR/$RELEASEVER

    # update latest
    - 'if [ $CI_BUILD_REF_NAME == "master" ]; then rm $PROJECT_DIR/latest; ln -sv $(basename $BUILD_DIR) $PROJECT_DIR/latest; fi'
    - 'if [ $CI_BUILD_REF_NAME == "devel" ]; then rm $PROJECT_DIR/latest-dev; ln -sv $(basename $BUILD_DIR) $PROJECT_DIR/latest-dev; fi'

  tags:
    - repos

これを適切に説明するための質問やオンラインドキュメントが見つからないので、助けていただければ幸いです。

4

2 に答える 2

1

機能しない 1 つのジョブにすべてのステージがあります。3 つの異なる段階の個々のジョブに分割する必要があります。

ドキュメントからの引用:

まず、ビルドのすべてのジョブが並行して実行されます。

ビルドのすべてのジョブが成功すると、テスト ジョブが並行して実行されます。

テストのすべてのジョブが成功すると、デプロイ ジョブが並行して実行されます。

デプロイのすべてのジョブが成功すると、コミットは成功としてマークされます。

以前のジョブのいずれかが失敗した場合、コミットは失敗としてマークされ、それ以降のステージのジョブは実行されません。

このようなものが動作するはずです:

stages:
  - test
  - build
  - deploy

do_things_on_stage_test:
  script:
    - do things
  stage: test


do_things_on_stage_build:
  script:
    - do things
  stage: build


do_things_on_stage_deploy:
  script:
    - do things
  stage: deploy
于 2016-02-12T10:48:32.653 に答える