github.com/lalkh/containerd@v1.4.3/.github/workflows/ci.yml (about)

     1  name: CI
     2  on:
     3    push:
     4      branches:
     5        - master
     6        - 'release/**'
     7    pull_request:
     8      branches:
     9        - master
    10        - 'release/**'
    11  
    12  jobs:
    13    #
    14    # golangci-lint
    15    #
    16    linters:
    17      name: Linters
    18      runs-on: ${{ matrix.os }}
    19      timeout-minutes: 10
    20  
    21      strategy:
    22        matrix:
    23          os: [ubuntu-18.04, macos-10.15] # TODO: pass linters on 'windows-2019'
    24  
    25      steps:
    26        - name: Install Go
    27          uses: actions/setup-go@v1
    28          with:
    29            go-version: '1.15.5'
    30  
    31        - name: Set env
    32          shell: bash
    33          run: |
    34            echo "GOPATH=${{ github.workspace }}" >> $GITHUB_ENV
    35            echo "${{ github.workspace }}/bin" >> $GITHUB_PATH
    36  
    37        - name: Checkout
    38          uses: actions/checkout@v2
    39          with:
    40            path: src/github.com/containerd/containerd
    41  
    42        - name: Install dev tools
    43          env:
    44            GO111MODULE: off
    45          shell: bash
    46          run: script/setup/install-dev-tools
    47          working-directory: src/github.com/containerd/containerd
    48  
    49        - name: Make check
    50          shell: bash
    51          run: make check
    52          working-directory: src/github.com/containerd/containerd
    53  
    54    #
    55    # Project checks
    56    #
    57    project:
    58      name: Project Checks
    59      runs-on: ubuntu-18.04
    60      timeout-minutes: 5
    61  
    62      steps:
    63        - uses: actions/checkout@v2
    64          with:
    65            path: src/github.com/containerd/containerd
    66            fetch-depth: 100
    67  
    68        - uses: containerd/project-checks@v1
    69          with:
    70            working-directory: src/github.com/containerd/containerd
    71  
    72    #
    73    # Protobuf checks
    74    #
    75    protos:
    76      name: Protobuf
    77      runs-on: ubuntu-18.04
    78      timeout-minutes: 5
    79  
    80      steps:
    81        - name: Set up Go
    82          uses: actions/setup-go@v1
    83          with:
    84            go-version: '1.15.5'
    85  
    86        - name: Set env
    87          shell: bash
    88          run: |
    89            echo "GOPATH=${{ github.workspace }}" >> $GITHUB_ENV
    90            echo "${{ github.workspace }}/bin" >> $GITHUB_PATH
    91  
    92        - name: Checkout
    93          uses: actions/checkout@v2
    94          with:
    95            path: src/github.com/containerd/containerd
    96  
    97        - name: Install protobuf
    98          env:
    99            GO111MODULE: off
   100          working-directory: src/github.com/containerd/containerd
   101          run: |
   102            sudo env PATH=$PATH GOPATH=$GOPATH script/setup/install-protobuf
   103            sudo chmod +x /usr/local/bin/protoc
   104            sudo chmod og+rx /usr/local/include/google /usr/local/include/google/protobuf /usr/local/include/google/protobuf/compiler
   105            sudo chmod -R og+r /usr/local/include/google/protobuf/
   106            protoc --version
   107  
   108        - name: Install dev tools
   109          env:
   110            GO111MODULE: off
   111          run: script/setup/install-dev-tools
   112          working-directory: src/github.com/containerd/containerd
   113  
   114        - name: Make
   115          env:
   116            GO111MODULE: off
   117          working-directory: src/github.com/containerd/containerd
   118          run: |
   119            export PATH=$PATH:$(go env GOPATH)/bin
   120            make check-protos check-api-descriptors
   121  
   122    man:
   123      name: Manpages
   124      runs-on: ubuntu-18.04
   125      timeout-minutes: 5
   126  
   127      steps:
   128        - name: Install Go
   129          uses: actions/setup-go@v1
   130          with:
   131            go-version: '1.15.5'
   132  
   133        - name: Set env
   134          shell: bash
   135          run: |
   136            echo "GOPATH=${{ github.workspace }}" >> $GITHUB_ENV
   137            echo "${{ github.workspace }}/bin" >> $GITHUB_PATH
   138  
   139        - name: Checkout
   140          uses: actions/checkout@v2
   141          with:
   142            path: src/github.com/containerd/containerd
   143  
   144        - name: Install dependencies
   145          run: GO111MODULE=on go get github.com/cpuguy83/go-md2man/v2@v2.0.0
   146  
   147        - name: Make
   148          run: make man
   149          working-directory: src/github.com/containerd/containerd
   150  
   151    #
   152    # Build containerd binaries
   153    #
   154    binaries:
   155      name: Binaries
   156      runs-on: ${{ matrix.os }}
   157      timeout-minutes: 10
   158      needs: [project, linters, protos, man]
   159  
   160      strategy:
   161        matrix:
   162          os: [ubuntu-18.04, macos-10.15, windows-2019]
   163  
   164      steps:
   165        - name: Install Go
   166          uses: actions/setup-go@v1
   167          with:
   168            go-version: '1.15.5'
   169  
   170        - name: Set env
   171          shell: bash
   172          run: |
   173            echo "GOPATH=${{ github.workspace }}" >> $GITHUB_ENV
   174            echo "${{ github.workspace }}/bin" >> $GITHUB_PATH
   175  
   176        - name: Checkout
   177          uses: actions/checkout@v2
   178          with:
   179            path: src/github.com/containerd/containerd
   180  
   181        - name: Make
   182          run: |
   183            make build
   184            make binaries
   185          working-directory: src/github.com/containerd/containerd
   186  
   187    #
   188    # Integration and CRI tests
   189    #
   190    integration-windows:
   191      name: Windows Integration
   192      runs-on: windows-2019
   193      timeout-minutes: 30
   194      needs: [project, linters, protos, man]
   195  
   196      steps:
   197        - name: Install Go
   198          uses: actions/setup-go@v1
   199          with:
   200            go-version: '1.15.5'
   201  
   202        - name: Set env
   203          shell: bash
   204          run: |
   205            echo "GOPATH=${{ github.workspace }}" >> $GITHUB_ENV
   206            echo "${{ github.workspace }}/src/github.com/containerd/containerd/bin" >> $GITHUB_PATH
   207  
   208        - name: Checkout containerd
   209          uses: actions/checkout@v2
   210          with:
   211            path: src/github.com/containerd/containerd
   212        - name: Checkout Microsoft/hcsshim
   213          uses: actions/checkout@v2
   214          with:
   215            repository: Microsoft/hcsshim
   216            path: src/github.com/Microsoft/hcsshim
   217  
   218        - name: Install Build Deps
   219          shell: bash
   220          run: |
   221            cd src/github.com/containerd/containerd
   222            script/setup/install-dev-tools
   223        - name: Binaries
   224          shell: bash
   225          run: |
   226            set -o xtrace
   227            export CGO_ENABLED=1
   228            cd src/github.com/containerd/containerd
   229            mingw32-make.exe binaries
   230            bindir="$(pwd)"
   231            SHIM_COMMIT=$(grep Microsoft/hcsshim vendor.conf | awk '{print $2}')
   232            cd ../../Microsoft/hcsshim
   233            git fetch --tags origin "${SHIM_COMMIT}"
   234            git checkout "${SHIM_COMMIT}"
   235            GO111MODULE=on go build -mod=vendor -o "${bindir}/containerd-shim-runhcs-v1.exe" ./cmd/containerd-shim-runhcs-v1
   236  
   237        - name: Tests
   238          shell: bash
   239          env:
   240            CGO_ENABLED: 1
   241          run: |
   242            cd src/github.com/containerd/containerd
   243            mingw32-make.exe test root-test
   244  
   245        - name: Integration 1
   246          shell: bash
   247          run: |
   248            cd src/github.com/containerd/containerd
   249            export CGO_ENABLED=1
   250            mingw32-make.exe integration
   251        # Run the integration suite a second time. See discussion in github.com/containerd/containerd/pull/175
   252        - name: Integration 2
   253          shell: bash
   254          run: |
   255            cd src/github.com/containerd/containerd
   256            export TESTFLAGS_PARALLEL=1
   257            export CGO_ENABLED=1
   258            mingw32-make.exe integration
   259  
   260    integration-linux:
   261      name: Linux Integration
   262      runs-on: ubuntu-18.04
   263      timeout-minutes: 15
   264      needs: [project, linters, protos, man]
   265  
   266      strategy:
   267        matrix:
   268          runtime: [io.containerd.runtime.v1.linux, io.containerd.runc.v1, io.containerd.runc.v2]
   269          runc: [runc, crun]
   270          exclude:
   271            - runtime: io.containerd.runc.v1
   272              runc: crun
   273            - runtime: io.containerd.runtime.v1.linux
   274              runc: crun
   275  
   276      steps:
   277        - name: Install Go
   278          uses: actions/setup-go@v1
   279          with:
   280            go-version: '1.15.5'
   281  
   282        - name: Set env
   283          shell: bash
   284          run: |
   285            echo "GOPATH=${{ github.workspace }}" >> $GITHUB_ENV
   286            echo "${{ github.workspace }}/bin" >> $GITHUB_PATH
   287  
   288        - name: Checkout containerd
   289          uses: actions/checkout@v2
   290          with:
   291            path: src/github.com/containerd/containerd
   292  
   293        - name: Install containerd dependencies
   294          env:
   295            RUNC_FLAVOR: ${{ matrix.runc }}
   296          run: |
   297            sudo -E PATH=$PATH script/setup/install-seccomp
   298            sudo -E PATH=$PATH script/setup/install-runc
   299            sudo -E PATH=$PATH script/setup/install-cni
   300            sudo -E PATH=$PATH script/setup/install-critools
   301          working-directory: src/github.com/containerd/containerd
   302  
   303        - name: Install criu
   304          run: |
   305            sudo apt-get install -y \
   306              libprotobuf-dev \
   307              libprotobuf-c-dev \
   308              protobuf-c-compiler \
   309              protobuf-compiler \
   310              python-protobuf \
   311              libnl-3-dev \
   312              libnet-dev \
   313              libcap-dev \
   314              python-future
   315            wget https://github.com/checkpoint-restore/criu/archive/v3.13.tar.gz -O criu.tar.gz
   316            tar -zxf criu.tar.gz
   317            cd criu-3.13
   318            sudo make install-criu
   319  
   320        - name: Install containerd
   321          env:
   322            CGO_ENABLED: 1
   323          run: |
   324            make binaries
   325            sudo make install
   326          working-directory: src/github.com/containerd/containerd
   327  
   328        - name: Tests
   329          env:
   330            GOPROXY: direct
   331            SKIPTESTS: github.com/containerd/containerd/snapshots/devmapper
   332          run: |
   333            make test
   334            sudo -E PATH=$PATH GOPATH=$GOPATH GOPROXY=$GOPROXY make root-test
   335          working-directory: src/github.com/containerd/containerd
   336  
   337        - name: Integration 1
   338          env:
   339            GOPROXY: direct
   340            TEST_RUNTIME: ${{ matrix.runtime }}
   341            RUNC_FLAVOR: ${{ matrix.runc }}
   342          run: |
   343            sudo GOPATH=$GOPATH GOPROXY=$GOPROXY TEST_RUNTIME=$TEST_RUNTIME RUNC_FLAVOR=$RUNC_FLAVOR make integration EXTRA_TESTFLAGS=-no-criu TESTFLAGS_RACE=-race
   344          working-directory: src/github.com/containerd/containerd
   345  
   346        # Run the integration suite a second time. See discussion in github.com/containerd/containerd/pull/1759
   347        - name: Integration 2
   348          env:
   349            GOPROXY: direct
   350            TEST_RUNTIME: ${{ matrix.runtime }}
   351            RUNC_FLAVOR: ${{ matrix.runc }}
   352          run: |
   353            sudo GOPATH=$GOPATH GOPROXY=$GOPROXY TEST_RUNTIME=$TEST_RUNTIME RUNC_FLAVOR=$RUNC_FLAVOR TESTFLAGS_PARALLEL=1 make integration EXTRA_TESTFLAGS=-no-criu
   354          working-directory: src/github.com/containerd/containerd
   355  
   356        - name: CRI test
   357          env:
   358            TEST_RUNTIME: ${{ matrix.runtime }}
   359          run: |
   360            BDIR="$(mktemp -d -p $PWD)"
   361            mkdir -p ${BDIR}/{root,state}
   362            cat > ${BDIR}/config.toml <<EOF
   363              [plugins.cri.containerd.default_runtime]
   364                runtime_type = "${TEST_RUNTIME}"
   365            EOF
   366            ls /etc/cni/net.d
   367            sudo PATH=$PATH BDIR=$BDIR /usr/local/bin/containerd -a ${BDIR}/c.sock --config ${BDIR}/config.toml --root ${BDIR}/root --state ${BDIR}/state --log-level debug &> ${BDIR}/containerd-cri.log &
   368            sudo PATH=$PATH BDIR=$BDIR /usr/local/bin/ctr -a ${BDIR}/c.sock version
   369            sudo PATH=$PATH BDIR=$BDIR GOPATH=$GOPATH critest --runtime-endpoint=unix:///${BDIR}/c.sock --parallel=8
   370            TEST_RC=$?
   371            test $TEST_RC -ne 0 && cat ${BDIR}/containerd-cri.log
   372            sudo pkill containerd
   373            sudo BDIR=$BDIR rm -rf ${BDIR}
   374            test $TEST_RC -eq 0 || /bin/false
   375  
   376    cgroup2:
   377      name: CGroupsV2 and SELinux Integration
   378      # nested virtualization is only available on macOS hosts
   379      runs-on: macos-10.15
   380      timeout-minutes: 40
   381      needs: [project, linters, protos, man]
   382      strategy:
   383        matrix:
   384          # Currently crun is disabled to decrease CI flakiness.
   385          # We can enable crun again when we get a better CI infra.
   386          runc: [runc]
   387      steps:
   388        - name: Checkout containerd
   389          uses: actions/checkout@v2
   390  
   391        - name: Start vagrant
   392          run: vagrant up
   393  
   394        - name: Integration
   395          env:
   396            RUNC_FLAVOR: ${{ matrix.runc }}
   397            # SELinux: replace Permissive with Enforcing after https://github.com/containers/container-selinux/pull/98
   398            # is merged and the package becomes generally available.
   399            SELINUX: Permissive
   400          run: vagrant up --provision-with=selinux,install-runc,test-integration
   401  
   402        - name: CRI test
   403          env:
   404            RUNC_FLAVOR: ${{ matrix.runc }}
   405            # SELinux: replace Permissive with Enforcing after https://github.com/containers/container-selinux/pull/98
   406            # is merged and the package becomes generally available.
   407            SELINUX: Permissive
   408          run: vagrant up --provision-with=selinux,install-runc,test-cri