diff --git a/.cirrus.yml b/.cirrus.yml index 9d94fc69..25230078 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -11,7 +11,7 @@ env: GOPATH: &gopath "/var/tmp/go" GOBIN: "${GOPATH}/bin" GOCACHE: "${GOPATH}/cache" - GOSRC: &gosrc "/var/tmp/go/src/github.com/containers/podman" + GOSRC: &gosrc "/var/tmp/go/src/github.com/containers/skopeo" CIRRUS_WORKING_DIR: *gosrc # The default is 'sh' if unspecified CIRRUS_SHELL: "/bin/bash" @@ -37,6 +37,9 @@ env: UBUNTU_CONTAINER_FQIN: "quay.io/libpod/ubuntu_podman:${IMAGE_SUFFIX}" PRIOR_UBUNTU_CONTAINER_FQIN: "quay.io/libpod/prior-ubuntu_podman:${IMAGE_SUFFIX}" + # Equivilent to image produced by 'make build-container' + SKOPEO_CI_CONTAINER_FQIN: "quay.io/skopeo/ci:${DEST_BRANCH}" + # Default timeout for each task timeout_in: 30m @@ -45,6 +48,76 @@ timeout_in: 30m gcp_credentials: ENCRYPTED[52d9e807b531b37ab14e958cb5a72499460663f04c8d73e22ad608c027a31118420f1c80f0be0882fbdf96f49d8f9ac0] +validate_task: + # The git-validation tool doesn't work well on branch or tag push, + # under Cirrus-CI, due to challenges obtaining the starting commit ID. + # Only do validation for PRs. + only_if: $CIRRUS_PR != '' + container: &build_container + image: "${SKOPEO_CI_CONTAINER_FQIN}" + cpu: 4 + memory: 8 + script: make validate-local + + +vendor_task: + only_if: $CIRRUS_PR != '' + container: *build_container + script: make vendor && ./hack/tree_status.sh + + +test_task: + alias: test + depends_on: + - validate + - vendor + gce_instance: + image_project: libpod-218412 + zone: "us-central1-f" + cpu: 2 + memory: "4Gb" + # Required to be 200gig, do not modify - has i/o performance impact + # according to gcloud CLI tool warning messages. + disk: 200 + image_name: ${FEDORA_CACHE_IMAGE_NAME} + matrix: + - name: "Skopeo Test" + env: + BUILDTAGS: 'btrfs_noversion libdm_no_deferred_remove' + - name: "Skopeo Test w/ opengpg" + env: + BUILDTAGS: 'btrfs_noversion libdm_no_deferred_remove containers_image_openpgp' + env: + # TODO: Remove test technical-debt requiring integration tests to run + # inside a container and with --privileged. This is hiding bugs! + PODMANMAKE: >- + podman run -it --rm --privileged + -e GOPATH=$GOPATH + -v $GOPATH:$GOPATH:Z + -w $GOSRC + $SKOPEO_CI_CONTAINER_FQIN + make + setup_script: | + # This is required as part of the standard Fedora VM setup + growpart /dev/sda 1 + resize2fs /dev/sda1 + + # VM's come with the distro. skopeo pre-installed + dnf erase -y skopeo + + # Ensure we start with a clean-slate + podman system reset --force + # Note: We _HAVE_ to spam BUILDTAGS in this way due to how Cirrus-CI + # mangles quoted strings when performing in-line 'env' substitution. + main_script: | + set -x + $PODMANMAKE bin/skopeo BUILDTAGS="$BUILDTAGS" + $PODMANMAKE test-unit-local BUILDTAGS="$BUILDTAGS" + $PODMANMAKE test-integration-local BUILDTAGS="$BUILDTAGS" + # Do not run inside podman, uses containers internally. + make test-system-local BUILDTAGS="$BUILDTAGS" + + # This task is critical. It updates the "last-used by" timestamp stored # in metadata for all VM images. This mechanism functions in tandem with # an out-of-band pruning operation to remove disused VM images. @@ -79,6 +152,9 @@ success_task: alias: success # N/B: ALL tasks must be listed here, minus their '_task' suffix. depends_on: + - validate + - vendor + - test - meta container: *smallcontainer env: diff --git a/.travis.yml b/.travis.yml index 52837138..e78c8f71 100644 --- a/.travis.yml +++ b/.travis.yml @@ -67,14 +67,6 @@ jobs: - brew update && brew unlink python@2 && brew install gpgme script: - hack/travis_osx.sh - - stage: local-build - <<: *local-build - name: local build for linux - os: linux - services: - - docker - script: - - make vendor && ./hack/tree_status.sh && make local-cross && make check # Run 3 image-build-push tasks in parallel for linux/amd64, linux/s390x and linux/ppc64le platforms (for upstream and stable) - stage: image-build-push diff --git a/hack/get_ci_vm.sh b/hack/get_ci_vm.sh index 33d6e8ae..2744f866 100755 --- a/hack/get_ci_vm.sh +++ b/hack/get_ci_vm.sh @@ -44,7 +44,11 @@ elif [[ "$1" == "--setup" ]]; then # get_ci_vm container entrypoint calls us with this option on the # Cirrus-CI environment instance, to perform repo.-specific setup. cd $REPO_DIRPATH - echo "+ No further setup performed" > /dev/stderr + echo "+ Growing root filesystem" > /dev/stderr + growpart /dev/sda 1 + resize2fs /dev/sda1 + echo "+ Erasing pre-installed skopeo package" > /dev/stderr + dnf erase -y skopeo else # Create and access VM for specified Cirrus-CI task mkdir -p $HOME/.config/gcloud/ssh