github.com/Ali-iotechsys/sqlboiler/v4@v4.0.0-20221208124957-6aec9a5f1f71/.circleci/config.yml (about)

     1  version: 2
     2  jobs:
     3    build:
     4      working_directory: /root
     5      docker:
     6        - image: aarondl0/sqlboiler-test:v3
     7  
     8        - image: postgres:9.6
     9          environment:
    10            POSTGRES_PASSWORD: psqlpassword
    11  
    12        - image: mysql:5.7
    13          environment:
    14            MYSQL_ROOT_PASSWORD: mysqlpassword
    15  
    16        - image: microsoft/mssql-server-linux:2017-GDR
    17          environment:
    18            ACCEPT_EULA: 'Y'
    19            SA_PASSWORD: 'Sqlboiler@1234'
    20  
    21      environment:
    22        GOPATH: /go
    23        ROOTPATH: /go/src/github.com/volatiletech/sqlboiler
    24  
    25      steps:
    26        - run:
    27            name: 'Make GOPATH'
    28            command: mkdir -p $ROOTPATH
    29  
    30        - checkout:
    31            name: 'Checkout'
    32            path: /go/src/github.com/volatiletech/sqlboiler
    33  
    34        # Workaround to allow the use of the circleci local cli.
    35        - run:
    36            name: 'Checkout (local)'
    37            command: |
    38              if [ ! -z "$ROOTPATH" ]; then rmdir $ROOTPATH; ln -s /root $ROOTPATH; fi
    39  
    40        - run:
    41            name: 'Add PSQL Credentials'
    42            command: |
    43              echo "*:*:*:*:psqlpassword" > /root/.pgpass
    44              chmod 600 /root/.pgpass
    45  
    46        - run:
    47            name: 'Add MySQL Credentials'
    48            command: |
    49              echo -e "[client]\nuser = root\npassword = mysqlpassword\nhost = localhost\nprotocol = tcp" > /root/.my.cnf
    50              chmod 600 /root/.my.cnf
    51  
    52        - run:
    53            name: 'Wait for PSQL'
    54            command: >
    55              c=0;
    56              for i in `seq 30`; do
    57                echo "Waiting for psql"
    58                psql --host localhost --username postgres --dbname template1 -c 'select * from information_schema.tables;' > /dev/null && c=0 && break || c=$? && sleep 1
    59              done;
    60              exit $c
    61  
    62        - run:
    63            name: 'Wait for MySQL'
    64            command: >
    65              c=0;
    66              for i in `seq 30`; do
    67                echo "Waiting for mysql"
    68                mysql --execute 'select * from information_schema.tables;' > /dev/null > /dev/null && c=0 && break || c=$? && sleep 1
    69              done;
    70              exit $c
    71  
    72        - run:
    73            name: Wait for MSSQL
    74            command: >
    75              c=0;
    76              for i in `seq 30`; do
    77                echo "Waiting for mssql"
    78                sqlcmd -H localhost -U sa -P Sqlboiler@1234 -Q "select * from information_schema.tables;" > /dev/null > /dev/null && c=0 && break || c=$? && sleep 1
    79              done;
    80              exit $c
    81  
    82        - run:
    83            name: 'Download dependencies (core, driver, test, generated)'
    84            command: |
    85              cd $ROOTPATH; go get -v -t ./...
    86  
    87        - run:
    88            name: 'Build SQLBoiler core and drivers'
    89            command: |
    90              cd $ROOTPATH; make build
    91              cd $ROOTPATH; make build-{psql,mysql,mssql}
    92  
    93        - run:
    94            name: 'Prepare for tests'
    95            command: |
    96              mkdir -p $HOME/test_results
    97  
    98        - run:
    99            name: 'Tests: All (except drivers,vendor)'
   100            command: |
   101              cd $ROOTPATH
   102              make test | tee $HOME/test_results/results.txt
   103              for engine in psql mysql mssql; do
   104                make test-user-${engine}
   105                make test-db-${engine}
   106                make test-generate-${engine}
   107                # workaround to fix failing tests due to the absence of 'table_schema.sql'
   108                if [ "${engine}" != "mssql" ]; then
   109                  make test-${engine} | tee $HOME/test_results/results.${engine}.txt
   110                fi
   111              done
   112  
   113        - run:
   114            name: 'Tests: Drivers'
   115            command: |
   116              cd $ROOTPATH
   117              for engine in psql mysql mssql; do
   118                make driver-db-${engine}
   119                make driver-user-${engine}
   120                make driver-test-${engine} | tee $HOME/test_results/results.driver-${engine}.txt
   121              done
   122  
   123        - run:
   124            name: 'Tests: Convert from plain to JUnit'
   125            command: |
   126              for file in $HOME/test_results/*.txt; do
   127                cat ${file} | go-junit-report > "${file%.txt}.xml"
   128              done
   129  
   130        - store_test_results:
   131            name: 'Store test results'
   132            path: test_results