forgeplus/lib/tasks/dev_ops_languages.rake

753 lines
10 KiB
Ruby

desc "Initialize the data for dev ops languages"
namespace :dev_ops_languages do
task init: :environment do
# DevOps::Language.bulk_insert do |worker|
# languages.each do |attrs|
# worker.add(attrs)
# end
# end
languages.each do |l|
content = Base64.encode64 l[:content]
Ci::Language.create!(name: l[:name], content: content)
end
end
def languages
[
{
name: "C",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: gcc
commands:
- ./configure
- make
- make test"
},
{
name: "C++",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: gcc
commands:
- ./configure
- make
- make test"
},
{
name: "Docker",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: docker:dind
volumes:
- name: dockersock
path: /var/run/docker.sock
commands:
- docker ps -a
volumes:
- name: dockersock
host:
path: /var/run/docker.sock"
},
{
name: "Java",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: maven:3-jdk-10
commands:
- mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -V
- mvn test -B"
},
{
name: "R",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: r-base
commands:
- R -e 'install.packages(c('package1','package2'))'
- R CMD build ."
},
{
name: "Ruby",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: ruby
commands:
- bundle install --jobs=3 --retry=3
- rake"
},
{
name: "PHP",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: install
image: composer
commands:
- composer install
- name: test
image: php:7
commands:
- vendor/bin/phpunit --configuration config.xml"
},
{
name: "Python",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: python
commands:
- pip install -r requirements.txt
- pytest"
},
{
name: "MySQL",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: mysql
commands:
- sleep 15
- mysql -u root -h database --execute='SELECT VERSION();'
services:
- name: database
image: mysql
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
MYSQL_DATABASE: test"
},
{
name: "MongoDB",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: ping
image: mongo:4
commands:
- sleep 5
- mongo --host mongo --eval 'db.version()'
services:
- name: mongo
image: mongo:4
command: [ --smallfiles ]"
},
{
name: "Clojure",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: clojure
commands:
- lein test"
},
{
name: "CouchDB",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: couchdb:2.2
commands:
- sleep 15
- curl http://database:5984
services:
- name: database
image: couchdb:2.2"
},
{
name: "Crystal",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: crystallang/crystal
commands:
- shards install
- crystal spec.2"
},
{
name: "D",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: dlanguage/dmd
commands:
- dub test"
},
{
name: "Dart",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: google/dart
commands:
- pub get
- pub run test"
},
{
name: "Docker (dind)",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: docker:dind
volumes:
- name: dockersock
path: /var/run
commands:
- sleep 5 # give docker enough time to start
- docker ps -a
services:
- name: docker
image: docker:dind
privileged: true
volumes:
- name: dockersock
path: /var/run
volumes:
- name: dockersock
temp: {}"
},
{
name: "Elasticsearch",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: alpine:3.8
commands:
- apk add curl
- sleep 45
- curl http://database:9200
services:
- name: database
image: elasticsearch:5-alpine"
},
{
name: "Elixir",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: elixir:1.5
commands:
- mix local.rebar --force
- mix local.hex --force
- mix deps.get
- mix test"
},
{
name: "Erlang",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: erlang:21
commands:
- rebar get-deps
- rebar compile
- rebar skip_deps=true eunit"
},
{
name: "20.Go (with Gopath)",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
workspace:
base: /go
path: src/hello-world
steps:
- name: test
image: golang
commands:
- go get
- go test"
},
{
name: "21.Go (with Modules)",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: golang
commands:
- go test
- go build"
},
{
name: "Gradle",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: gradle:jdk10
commands:
- gradle assemble
- gradle check"
},
{
name: "Groovy",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: gradle:2.5-jdk8
commands:
- ./gradlew assemble
- ./gradlew check"
},
{
name: "Haskell",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: haskell
commands:
- cabal install --only-dependencies --enable-tests
- cabal configure --enable-tests
- cabal build
- cabal test"
},
{
name: "Haxe",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: haxe
commands:
- haxelib install build.hxml
- haxe build.hxml"
},
{
name: "MariaDB",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: mariadb
commands:
- sleep 15
- mysql -u root -h database --execute='SELECT VERSION();'
services:
- name: database
image: mariadb
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
MYSQL_DATABASE: test"
},
{
name: "Maven",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: maven:3-jdk-10
commands:
- mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -V
- mvn test -B"
},
{
name: "Memcached",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: ubuntu
commands:
- apt-get update -qq
- apt-get install -y -qq telnet > /dev/null
- (sleep 1; echo 'stats'; sleep 2; echo 'quit';) | telnet cache 11211 || true
services:
- name: cache
image: memcached:alpine
command: [ -vv ]"
},
{
name: "Nats",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: ruby:2
commands:
- gem install nats
- nats-pub -s tcp://nats:4222 greeting 'hello'
- nats-pub -s tcp://nats:4222 greeting 'world'
services:
- name: nats
image: nats:1.3.0"
},
{
name: "Node",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: node
commands:
- npm install
- npm test"
},
{
name: "Perl",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: perl
commands:
- cpanm --quiet --installdeps --notest .
- perl Build.PL
- ./Build test"
},
{
name: "Postgres",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: postgres:9-alpine
commands:
- psql -U postgres -d test -h database
services:
- name: database
image: postgres:9-alpine
environment:
POSTGRES_USER: postgres
POSTGRES_DB: test"
},
{
name: "Redis",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: redis
commands:
- sleep 5
- redis-cli -h redis ping
- redis-cli -h redis set FOO bar
- redis-cli -h redis get FOO
services:
- name: redis
image: redis"
},
{
name: "RethinkDB",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: node:9
commands:
- npm install -s -g recli
- recli -h database -j 'r.db('rethinkdb').table('stats')'
services:
- name: database
image: rethinkdb:2
command: [ rethinkdb, --bind, all ]"
},
{
name: "Rust",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: rust:1.30
commands:
- cargo build --verbose --all
- cargo test --verbose --all"
},
{
name: "Swift",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: swift:4
commands:
- swift build
- swift test"
},
{
name: "Vault",
content: "
kind: pipeline
name: default
platform:
os: linux
arch: arm64
steps:
- name: test
image: vault:1.0.0-beta2
environment:
VAULT_ADDR: http://vault:8200
VAULT_TOKEN: dummy
commands:
- sleep 5
- vault kv put secret/my-secret my-value=s3cr3t
- vault kv get secret/my-secret
services:
- name: vault
image: vault:1.0.0-beta2
environment:
VAULT_DEV_ROOT_TOKEN_ID: dummy"
}
]
end
end