Switch to GitHub Actions for CI
Travis CI is slow, builds are first queued up forever and then the builds themselves are slow, too. GitHub Actions run pretty much immediately and are fast. Also separate jobs run at the same time unlike on Travis CI.
This commit is contained in:
parent
ff3b53e34a
commit
139017ba7c
72
.github/workflows/ci.yml
vendored
Normal file
72
.github/workflows/ci.yml
vendored
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
name: Invidious CI
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Install Crystal
|
||||||
|
uses: oprypin/install-crystal@v1.2.4
|
||||||
|
|
||||||
|
# - name: Cache dependencies
|
||||||
|
# uses: actions/cache@v2
|
||||||
|
# with:
|
||||||
|
# path: ./lib
|
||||||
|
# key: shards-${{ hashFiles('shard.lock') }} # shard.lock isn't tracked atm
|
||||||
|
|
||||||
|
# Docs at https://crystal-lang.org/reference/the_shards_command
|
||||||
|
#
|
||||||
|
# `shards install`
|
||||||
|
#
|
||||||
|
# Resolves and installs dependencies into the lib folder. If not already present, generates a shard.lock
|
||||||
|
# file from resolved dependencies, locking version numbers or Git commits.
|
||||||
|
# Reads and enforces locked versions and commits if a shard.lock file is present. The install command may
|
||||||
|
# fail if a locked version doesn't match a requirement, but may succeed if a new dependency was added, as
|
||||||
|
# long as it doesn't generate a conflict, thus generating a new shard.lock file.
|
||||||
|
#
|
||||||
|
# `shards update`
|
||||||
|
#
|
||||||
|
# Resolves and updates all dependencies into the lib folder again, whatever the locked versions and
|
||||||
|
# commits in the shard.lock file. Eventually generates a new shard.lock file.
|
||||||
|
#
|
||||||
|
# --------------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# running either `shards install` or `shards update` without a `shard.lock` file does the same thing,
|
||||||
|
# downloading shards into the `lib` folder and writing a `shard.lock` file
|
||||||
|
#
|
||||||
|
# if there is a `shard.lock` file `shards install` installs the versions from the lock file while
|
||||||
|
# `shards update` does a `shards install` that pretends there isn't a lock file present
|
||||||
|
- name: Update and install shards
|
||||||
|
run: shards update
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: crystal spec
|
||||||
|
|
||||||
|
- name: Run lint
|
||||||
|
run: |
|
||||||
|
if ! crystal tool format --check; then
|
||||||
|
crystal tool format
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: crystal build --warnings all --error-on-warnings --error-trace src/invidious.cr
|
||||||
|
|
||||||
|
build-docker:
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Build Docker
|
||||||
|
run: docker-compose up -d
|
||||||
|
|
||||||
|
- name: Test Docker
|
||||||
|
run: while curl -Isf http://localhost:3000; do sleep 1; done
|
||||||
|
|
47
.travis.yml
47
.travis.yml
|
@ -1,47 +0,0 @@
|
||||||
dist: bionic
|
|
||||||
|
|
||||||
# Work around broken Travis Crystal image
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
packages:
|
|
||||||
- gcc
|
|
||||||
- pkg-config
|
|
||||||
- git
|
|
||||||
- tzdata
|
|
||||||
- libpcre3-dev
|
|
||||||
- libevent-dev
|
|
||||||
- libyaml-dev
|
|
||||||
- libgmp-dev
|
|
||||||
- libssl-dev
|
|
||||||
- libxml2-dev
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
include:
|
|
||||||
- stage: build
|
|
||||||
# TODO: Shallowly clone again once the .git folder is no longer required for building
|
|
||||||
git:
|
|
||||||
depth: false
|
|
||||||
language: crystal
|
|
||||||
crystal: latest
|
|
||||||
before_install:
|
|
||||||
- crystal --version
|
|
||||||
- shards update
|
|
||||||
- shards install
|
|
||||||
install:
|
|
||||||
- crystal build --warnings all --error-on-warnings src/invidious.cr
|
|
||||||
script:
|
|
||||||
- crystal tool format --check
|
|
||||||
- crystal spec
|
|
||||||
|
|
||||||
- stage: build_docker
|
|
||||||
# TODO: Shallowly clone again once the .git folder is no longer required for building
|
|
||||||
git:
|
|
||||||
depth: false
|
|
||||||
language: minimal
|
|
||||||
services:
|
|
||||||
- docker
|
|
||||||
install:
|
|
||||||
- docker-compose build
|
|
||||||
script:
|
|
||||||
- docker-compose up -d
|
|
||||||
- while curl -Isf http://localhost:3000; do sleep 1; done
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Invidious
|
# Invidious
|
||||||
|
|
||||||
[![Build Status](https://travis-ci.org/iv-org/invidious.svg?branch=master)](https://travis-ci.org/github/iv-org/invidious) [![Translation Status](https://hosted.weblate.org/widgets/invidious/-/translations/svg-badge.svg)](https://hosted.weblate.org/engage/invidious/)
|
[![Build Status](https://github.com/iv-org/invidious/workflows/Invidious%20CI/badge.svg)](https://github.com/iv-org/invidious/actions) [![Translation Status](https://hosted.weblate.org/widgets/invidious/-/translations/svg-badge.svg)](https://hosted.weblate.org/engage/invidious/)
|
||||||
|
|
||||||
## Invidious is an alternative front-end to YouTube
|
## Invidious is an alternative front-end to YouTube
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue