github.com/edwarnicke/govpp@v0.0.0-20230130211138-14ef5d20b1d0/.github/workflows/ci.yaml (about)

     1  ---
     2  name: ci
     3  on:
     4    push:
     5      branches:
     6        - main
     7      tags:
     8        - v*
     9      paths-ignore:
    10        - '**.md'
    11    pull_request:
    12      paths-ignore:
    13        - '**.md'
    14  jobs:
    15    yamllint:
    16      name: yamllint
    17      runs-on: ubuntu-latest
    18      steps:
    19        - name: Check out code into the Go module directory
    20          uses: actions/checkout@v2
    21        - name: yaml-lint
    22          uses: ibiqlik/action-yamllint@v1
    23          with:
    24            config_file: .ci/yamllint.yml
    25            strict: true
    26    generate:
    27      name: generate
    28      runs-on: ubuntu-latest
    29      steps:
    30        - name: Check out code
    31          uses: actions/checkout@v2
    32        - uses: actions/setup-go@v1
    33          with:
    34            go-version: 1.15.3
    35        # This is a hack around secrets.* in steps.if statements not being supported
    36        - name: Assign Secrets
    37          id: secrets
    38          run: |
    39            echo '::set-output name=GHCR_TOKEN::${{secrets.GHCR_TOKEN}}'
    40        - name: Docker Login
    41          if: ${{steps.secrets.outputs.GHCR_TOKEN != '' }}
    42          run: echo ${{secrets.GHCR_TOKEN}} | docker login ghcr.io -u ${{github.repository_owner}} --password-stdin
    43        - name: Set Swap Space
    44          uses: pierotofy/set-swap-space@v1.0
    45          with:
    46            swap-size-gb: 4
    47        - name: Memory usage
    48          run: free -m
    49        - name: List installed packages
    50          run: dpkg -la
    51        - name: Free Disk Space for Docker
    52          run: |
    53            df -h
    54            sudo apt-get remove aria2 azure-cli shellcheck rpm xorriso zsync \
    55                 clang-12 lld-12 clang-format-12 \
    56                 clang-13 lld-13 clang-format-13 \
    57                 clang-14 lld-14 clang-format-14 \
    58                 g++-9 g++-10 g++-12 g++-11 gfortran-9 gfortran-10 gfortran-11 google-chrome-stable \
    59                 google-cloud-sdk \
    60                 imagemagick \
    61                 libmagickcore-dev libmagickwand-dev libmagic-dev ant ant-optional \
    62                 mercurial apt-transport-https mono-complete mysql-client libmysqlclient-dev \
    63                 mysql-server mssql-tools unixodbc-dev yarn libssl-dev \
    64                 libfreetype6 libfreetype6-dev libfontconfig1 libfontconfig1-dev \
    65                 php-common \
    66                 php-pear \
    67                 php8.1 \
    68                 php8.1-amqp \
    69                 php8.1-apcu \
    70                 php8.1-bcmath \
    71                 php8.1-bz2 \
    72                 php8.1-cgi \
    73                 php8.1-cli \
    74                 php8.1-common \
    75                 php8.1-curl \
    76                 php8.1-dba \
    77                 php8.1-dev \
    78                 php8.1-enchant \
    79                 php8.1-fpm \
    80                 php8.1-gd \
    81                 php8.1-gmp \
    82                 php8.1-igbinary \
    83                 php8.1-imagick \
    84                 php8.1-imap \
    85                 php8.1-interbase \
    86                 php8.1-intl \
    87                 php8.1-ldap \
    88                 php8.1-mbstring \
    89                 php8.1-memcache \
    90                 php8.1-memcached \
    91                 php8.1-mongodb \
    92                 php8.1-msgpack \
    93                 php8.1-mysql \
    94                 php8.1-odbc \
    95                 php8.1-opcache \
    96                 php8.1-pcov \
    97                 php8.1-pgsql \
    98                 php8.1-phpdbg \
    99                 php8.1-pspell \
   100                 php8.1-readline \
   101                 php8.1-redis \
   102                 php8.1-snmp \
   103                 php8.1-soap \
   104                 php8.1-sqlite3 \
   105                 php8.1-sybase \
   106                 php8.1-tidy \
   107                 php8.1-xdebug \
   108                 php8.1-xml \
   109                 php8.1-xsl \
   110                 php8.1-yaml \
   111                 php8.1-zip \
   112                 php8.1-zmq \
   113                 snmp pollinate libpq-dev powershell ruby-full nginx shim-signed \
   114                 libnginx-mod-http-image-filter libmono-system-web4.0-cil monodoc-http \
   115                 sphinxsearch subversion -yq --allow-remove-essential
   116            sudo apt-get autoremove -y
   117            sudo apt-get autoclean -y
   118            sudo rm -rf /usr/local/lib/android
   119            sudo apt clean
   120            docker rmi $(docker image ls -aq)
   121            df -h
   122        - name: Docker Build
   123          run: |
   124            docker build .
   125            VPP_VERSION=$(docker run $(docker build -q . --target version))
   126            echo "VPP_VERSION=${VPP_VERSION}" >> $GITHUB_ENV
   127            TAG=v${VPP_VERSION/\~/-}
   128            echo "TAG=${TAG}" >> $GITHUB_ENV
   129            docker build -t ghcr.io/${{github.repository}}/vpp:${TAG} . --target vpp
   130            docker build -t ghcr.io/${{github.repository}}/vpp-dbg:${TAG} . --target vpp-dbg
   131        - name: Generate files
   132          run: go generate ./...
   133        - name: Check for changes in generated code
   134          run: |
   135            git diff -- binapi || (echo "Rerun go generate ./... locally and resubmit" && exit -1)
   136        - name: Go Build
   137          run: go build ./...
   138        - name: Docker Push
   139          if: ${{steps.secrets.outputs.GHCR_TOKEN != '' && github.head_ref == ''}}
   140          run: |
   141            docker push ghcr.io/${{github.repository}}/vpp:${TAG}
   142            docker push ghcr.io/${{github.repository}}/vpp-dbg:${TAG}
   143        - name: Tag
   144          if: ${{steps.secrets.outputs.GHCR_TOKEN != '' && github.head_ref == ''}}
   145          id: tag
   146          uses: mathieudutour/github-tag-action@v5.6
   147          with:
   148            github_token: ${{ secrets.GITHUB_TOKEN }}
   149            custom_tag: ${{ env.TAG }}
   150            tag_prefix: ""