From 6fb521f80ac51fef714367341f315808af138d28 Mon Sep 17 00:00:00 2001 From: Sebastian Serth Date: Mon, 7 Dec 2020 12:25:08 +0100 Subject: [PATCH] Use GitHub Actions for CI --- .github/workflows/ci.yml | 87 +++++++++++++++++++ .rspec.travis | 2 - .travis.yml | 62 ------------- ...mailer.yml.travis => action_mailer.yml.ci} | 0 ...ode_ocean.yml.travis => code_ocean.yml.ci} | 0 .../{database.yml.travis => database.yml.ci} | 4 +- ...ocker.yml.erb.travis => docker.yml.erb.ci} | 0 ...{mnemosyne.yml.travis => mnemosyne.yml.ci} | 0 config/{secrets.yml.travis => secrets.yml.ci} | 0 9 files changed, 90 insertions(+), 65 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 100644 .rspec.travis delete mode 100644 .travis.yml rename config/{action_mailer.yml.travis => action_mailer.yml.ci} (100%) rename config/{code_ocean.yml.travis => code_ocean.yml.ci} (100%) rename config/{database.yml.travis => database.yml.ci} (50%) rename config/{docker.yml.erb.travis => docker.yml.erb.ci} (100%) rename config/{mnemosyne.yml.travis => mnemosyne.yml.ci} (100%) rename config/{secrets.yml.travis => secrets.yml.ci} (100%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..3682bc82 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,87 @@ +name: CI +on: [push, pull_request] +jobs: + test: + runs-on: ubuntu-20.04 + services: + db: + image: postgres:13 + env: + POSTGRES_PASSWORD: postgres + ports: + - 5432:5432 + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + co_execenv_python: + image: openhpi/co_execenv_python + co_execenv_java: + image: openhpi/co_execenv_java + + steps: + - name: Configure Docker host + run: | + echo $'{"hosts": ["tcp://127.0.0.1:2376", "unix:///var/run/docker.sock"], "iptables": false, "live-restore": true}' | sudo tee /etc/docker/daemon.json + sudo mkdir -p /etc/systemd/system/docker.service.d + echo $'[Service]\nExecStart=\nExecStart=/usr/bin/dockerd --containerd /var/run/containerd/containerd.sock' | sudo tee /etc/systemd/system/docker.service.d/override.conf + sudo systemctl daemon-reload + sudo systemctl restart docker + docker restart $(docker ps -aq) + + - name: Checkout code + uses: actions/checkout@v2 + + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: 2.7 + bundler-cache: true + + - name: Setup Node + uses: actions/setup-node@v1 + with: + node-version: 12 + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn config get cacheFolder)" + - name: Manage yarn cache + uses: actions/cache@v2 + # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) + id: yarn-cache + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + - name: Install yarn packages + run: yarn install --pure-lockfile + + - name: Prepare config files + run: | + cp config/action_mailer.yml.ci config/action_mailer.yml + cp config/code_ocean.yml.ci config/code_ocean.yml + cp config/database.yml.ci config/database.yml + cp config/secrets.yml.ci config/secrets.yml + cp config/docker.yml.erb.ci config/docker.yml.erb + cp config/mnemosyne.yml.ci config/mnemosyne.yml + + - name: Create database + env: + RAILS_ENV: test + run: | + bundler exec rake db:schema:load RAILS_ENV=test + - name: Run tests + env: + RAILS_ENV: test + CC_TEST_REPORTER_ID: true + run: | + bundle exec rspec --color --format progress --require spec_helper --require rails_helper + + - name: Send coverage to CodeClimate + uses: paambaati/codeclimate-action@v2.7.4 + continue-on-error: true + if: ${{ success() || failure() }} + env: + CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }} diff --git a/.rspec.travis b/.rspec.travis deleted file mode 100644 index 5f164763..00000000 --- a/.rspec.travis +++ /dev/null @@ -1,2 +0,0 @@ ---color ---format progress diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 3981451b..00000000 --- a/.travis.yml +++ /dev/null @@ -1,62 +0,0 @@ -os: linux -dist: xenial - -services: - - docker - - xvfb - -language: ruby -rvm: - - 2.7.2 -cache: - bundler: true - directories: - - node_modules # NPM and yarn packages - -env: - global: - - secure: "DkOGGPCrRgV08KGgav3Bl+keZQqb11TINQRVQS2aeMaYR5GW7Rt9zEcZzhUE0JdKVVOvm4Cclft7BO4OyMd6Cq9XnZkOOHY+Yn8Qv923761SKrRgkGUkO8eeVKMawAA8lS53XGrMZWCP2xaLsLQYq8xzinnE3GqstoZJaHLnqVs=" - -addons: - postgresql: "10" - firefox: "latest-esr" - -before_install: - - sudo sed -i '/ExecStart=\/usr\/bin\/dockerd -H fd:\/\//c\ExecStart=\/usr\/bin\/dockerd' /lib/systemd/system/docker.service - - sudo systemctl daemon-reload - - "echo '{\"hosts\": [\"tcp://127.0.0.1:2376\", \"unix:///var/run/docker.sock\"], \"iptables\": false}' | sudo tee /etc/docker/daemon.json > /dev/null" - - sudo service docker restart - - sleep 5 - - docker pull openhpi/co_execenv_python - - docker pull openhpi/co_execenv_java - - mkdir ~/geckodriver - - wget -O ~/geckodriver/download.tar.gz https://github.com/mozilla/geckodriver/releases/download/v0.27.0/geckodriver-v0.27.0-linux64.tar.gz - - tar -xvzf ~/geckodriver/download.tar.gz -C ~/geckodriver/ - - rm ~/geckodriver/download.tar.gz - - chmod +x ~/geckodriver/geckodriver - - export PATH=~/geckodriver/:$PATH - - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter - - chmod +x ./cc-test-reporter - -install: - - bundle install --jobs=3 --retry=3 --deployment --path=${BUNDLE_PATH:-vendor/bundle} - - nvm install stable - - nvm use stable - - yarn install - -before_script: - - cp .rspec.travis .rspec - - cp config/action_mailer.yml.travis config/action_mailer.yml - - cp config/code_ocean.yml.travis config/code_ocean.yml - - cp config/database.yml.travis config/database.yml - - cp config/secrets.yml.travis config/secrets.yml - - cp config/docker.yml.erb.travis config/docker.yml.erb - - cp config/mnemosyne.yml.travis config/mnemosyne.yml - - psql --command='CREATE DATABASE travis_ci_test;' --username=postgres - - bundle exec rake db:schema:load RAILS_ENV=test - - ./cc-test-reporter before-build - -script: bundle exec rspec --color --format documentation --require spec_helper --require rails_helper - -after_script: - - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT diff --git a/config/action_mailer.yml.travis b/config/action_mailer.yml.ci similarity index 100% rename from config/action_mailer.yml.travis rename to config/action_mailer.yml.ci diff --git a/config/code_ocean.yml.travis b/config/code_ocean.yml.ci similarity index 100% rename from config/code_ocean.yml.travis rename to config/code_ocean.yml.ci diff --git a/config/database.yml.travis b/config/database.yml.ci similarity index 50% rename from config/database.yml.travis rename to config/database.yml.ci index 87184366..8a62703f 100644 --- a/config/database.yml.travis +++ b/config/database.yml.ci @@ -1,5 +1,7 @@ test: adapter: postgresql - database: travis_ci_test + database: postgres pool: 32 + host: localhost username: postgres + password: postgres diff --git a/config/docker.yml.erb.travis b/config/docker.yml.erb.ci similarity index 100% rename from config/docker.yml.erb.travis rename to config/docker.yml.erb.ci diff --git a/config/mnemosyne.yml.travis b/config/mnemosyne.yml.ci similarity index 100% rename from config/mnemosyne.yml.travis rename to config/mnemosyne.yml.ci diff --git a/config/secrets.yml.travis b/config/secrets.yml.ci similarity index 100% rename from config/secrets.yml.travis rename to config/secrets.yml.ci