From 782ef33dfc9b467ee83d06e283289ec3229daafa Mon Sep 17 00:00:00 2001 From: "David M. Johnson" Date: Wed, 27 Feb 2019 17:56:09 -0700 Subject: [PATCH] Add a gitlab-ci configuration that builds bios/native/efi grub2pxe our way. --- .gitlab-ci.yml | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 000000000..4b216fae1 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,63 @@ +stages: + - build + - deploy + +emulab-grub2-x86: + stage: build + image: gitlab.flux.utah.edu:4567/emulab/emulab-grub2/u16-grub2-builder:latest + script: + - mkdir -p $CI_JOB_NAME-$CI_COMMIT_REF_NAME/tftpboot + - ./autogen.sh + - ./configure && make && make install + - grub-mknetdir --net-directory=/tftpboot --subdir=grub2.0 + - grub-mknetdir --net-directory=/tftpboot --subdir=grub2pxe-bios-vga + - grub-mknetdir --net-directory=/tftpboot --subdir=grub2pxe-bios-sio1 + - grub-mknetdir --net-directory=/tftpboot --subdir=grub2pxe-bios-sio2 + - grub-mknetdir --net-directory=/tftpboot --subdir=grub2pxe-native-vga + - grub-mknetdir --net-directory=/tftpboot --subdir=grub2pxe-native-sio1 + - grub-mknetdir --net-directory=/tftpboot --subdir=grub2pxe-native-sio2 + - make clean + - ./configure --with-platform=efi --target=x86_64 && make && make install + - grub-mknetdir --net-directory=/tftpboot -d /usr/local/lib/grub/x86_64-efi --subdir=grub2.0 + - grub-mknetdir --net-directory=/tftpboot --subdir=grub2pxe-efi-vga + - grub-mknetdir --net-directory=/tftpboot --subdir=grub2pxe-efi-sio1 + - grub-mknetdir --net-directory=/tftpboot --subdir=grub2pxe-efi-sio2 + - for tdir in /tftpboot/grub2pxe-{bios,native}-* ; do cp -p $tdir/i386-pc/core.0 $tdir/grub2pxe ; rm -rf $tdir/{i386-pc,fonts,locale} ; cd $tdir && ln -s ../grub2.0/locale . && ln -s ../grub2.0/i386-pc . && ln -s ../grub2.0/fonts . ; done + - for tdir in /tftpboot/grub2pxe-efi-* ; do cp -p $tdir/x86_64-efi/core.0 $tdir/grub2pxe ; rm -rf $tdir/{x86_64-efi,fonts,locale} ; cd $tdir && ln -s ../grub2.0/locale . && ln -s ../grub2.0/x86_64-efi . && ln -s ../grub2.0/fonts . ; done + - for tdir in /tftpboot/grub2pxe* ; do cp -p emulab/grub.cfg $tdir ; btype=`basename $tdir | cut -d- -f2` ; ctype=`basename $tdir | cut -d- -f3` ; ntype=pxe ; if [ $ctype = "efi" ]; then ntype=efi ; fi ; echo $btype $ctype $ntype ; sed -ie "s/^set console=.*$/set console=$ctype/" $tdir/grub.cfg ; sed -ie "s/^set diskdrivers=.*$/set diskdrivers=$btype/" $tdir/grub.cfg ; sed -ie "s/^set netdrivers=.*$/set netdrivers=$ntype/" $tdir/grub.cfg ; done + - rsync -a /tftpboot/ $CI_JOB_NAME-$CI_COMMIT_REF_NAME/tftpboot/ + artifacts: + paths: + - $CI_JOB_NAME-$CI_COMMIT_REF_NAME + only: + - master + +.deploy_template: + stage: deploy + image: gitlab.flux.utah.edu:4567/emulab/emulab-grub2/u16-grub2-builder:latest + variables: + GIT_STRATEGY: none + dependencies: + - emulab-grub2-x86 + before_script: + - eval $(ssh-agent -s) + - echo "$GRUB_UPLOAD_PRIVKEY" | tr -d '\r' | ssh-add - >/dev/null + - mkdir -p ~/.ssh + - chmod 700 ~/.ssh + only: + - master + +deploy_testing: + extends: .deploy_template + script: + - echo 'put ./emulab-grub2-x86-master' | sftp -o StrictHostKeyChecking=no -r $MFS_UPLOAD_USER@$MFS_UPLOAD_HOST:$GRUB_TESTING_DIR + environment: + name: testing + +deploy_production: + extends: .deploy_template + script: + - echo 'put ./emulab-grub2-x86-master' | sftp -o StrictHostKeyChecking=no -r $MFS_UPLOAD_USER@$MFS_UPLOAD_HOST:$GRUB_PROD_DIR + environment: + name: production + when: manual -- GitLab