Skip to content

Attempt a Starlark module for configuration #14

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 5 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 22 additions & 17 deletions .cirrus.yml
Original file line number Diff line number Diff line change
@@ -1,18 +1,23 @@
freebsd_instance:
image: freebsd-12-2-release-amd64
#task:
# name: Julia on FreeBSD
# freebsd_instance:
# image: freebsd-12-2-release-amd64
# env:
# matrix:
# - JULIA_VERSION: 1.6
# - JULIA_VERSION: 1
# - JULIA_VERSION: nightly
# allow_failures: $JULIA_VERSION == 'nightly'
# install_script:
# - sh bin/install.sh
# build_script:
# - cirrusjl build
# test_script:
# - cirrusjl test
# coverage_script:
# - cirrusjl coverage codecov coveralls
task:
name: FreeBSD
env:
matrix:
- JULIA_VERSION: 1.6
- JULIA_VERSION: 1
- JULIA_VERSION: nightly
allow_failures: $JULIA_VERSION == 'nightly'
install_script:
- sh bin/install.sh
build_script:
- cirrusjl build
test_script:
- cirrusjl test
coverage_script:
- cirrusjl coverage codecov coveralls
name: Starlark setup
container:
image: gcr.io/cirrus-ci-community/cirrus-cli:latest
script: cirrus internal test
51 changes: 51 additions & 0 deletions lib.star
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
load("cirrus", environ="env")
load("github.com/cirrus-modules/helpers", "powershell", "script", "task")

def _os_from_instance(instance):
# Instances are `dict`s formatted as `{ type: descriptors }` where `type` is
# one of Cirrus' predefined execution environment names
if instance.get("container") or instance.get("arm_container"):
return "Linux"
elif instance.get("macos_instance"):
return "macOS"
elif instance.get("freebsd_instance"):
return "FreeBSD"
elif instance.get("windows_container"):
return "Windows"
else:
return "Unknown OS"

def cirrusjl_install(os):
base = "https://raw.githubusercontent.com/ararslan/CirrusCI.jl/master/bin"
if os == "Windows":
file = base + "/install.ps1"
cmd = "iex ((New-Object System.Net.WebClient).DownloadString('%s'))" % file
return powershell("install", cmd)
file = base + "/install.sh"
if os == "macOS":
download = "curl " + file
elif os == "FreeBSD":
download = "fetch %s -o -" % file
else:
download = "wget %s -q -O-" % file
cmd = "sh -c \"$(%s)\"" % download
return script("install", cmd)

def julia_instructions(os, coverage=None):
steps = [cirrusjl_install(os),
script("build", "cirrusjl build"),
script("test", "cirrusjl test")]
if coverage:
steps.append(script("coverage", "cirrusjl coverage %s" % coverage))
return steps

def julia_tasks(versions, instances, env={}, coverage=None, allow_failures=None):
tasks = []
for instance in instances:
os = _os_from_instance(instance)
instructions = julia_instructions(os, coverage=coverage)
for version in versions:
v = {"JULIA_VERSION": version}.update(env)
t = task(name=os, instance=instance, instructions=instructions, env=v)
tasks.append(t)
return tasks
34 changes: 34 additions & 0 deletions test/cirrusjl_install/.cirrus.expected.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
task:
name: FreeBSD
freebsd_instance:
image_family: freebsd-13-0
install_script:
- sh -c "$(fetch https://raw.githubusercontent.com/ararslan/CirrusCI.jl/master/bin/install.sh -o -)"
task:
name: Linux AArch64
arm_container:
image: ubuntu:latest
cpu: 2
memory: 4096
install_script:
- sh -c "$(wget https://raw.githubusercontent.com/ararslan/CirrusCI.jl/master/bin/install.sh -q -O-)"
task:
name: Linux musl
container:
image: alpine:3.14
cpu: 2
memory: 4096
install_script:
- sh -c "$(wget https://raw.githubusercontent.com/ararslan/CirrusCI.jl/master/bin/install.sh -q -O-)"
task:
name: Windows
windows_container:
image: cirrusci/windowsservercore
install_script:
- ps: iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/ararslan/CirrusCI.jl/master/bin/install.ps1'))
task:
name: macOS
macos_instance:
image: big-sur-xcode
install_script:
- sh -c "$(curl https://raw.githubusercontent.com/ararslan/CirrusCI.jl/master/bin/install.sh)"
14 changes: 14 additions & 0 deletions test/cirrusjl_install/.cirrus.star
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
load("../../lib.star", "cirrusjl_install")
load("github.com/cirrus-modules/helpers", "task", "windows_container", "freebsd_instance",
"macos_instance", "container", "arm_container")

def _task(name, instance):
os = name.split(" ")[0]
return task(name, instance, instructions=[cirrusjl_install(os)])

def main(ctx):
return [_task("FreeBSD", freebsd_instance("freebsd-13-0")),
_task("Linux AArch64", arm_container("ubuntu:latest")),
_task("Linux musl", container("alpine:3.14")),
_task("Windows", windows_container("cirrusci/windowsservercore")),
_task("macOS", macos_instance("big-sur-xcode"))]
22 changes: 22 additions & 0 deletions test/julia_instructions/.cirrus.expected.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
task:
name: No coverage
freebsd_instance:
image_family: freebsd-13-0
install_script:
- sh -c "$(fetch https://raw.githubusercontent.com/ararslan/CirrusCI.jl/master/bin/install.sh -o -)"
build_script:
- cirrusjl build
test_script:
- cirrusjl test
task:
name: Codecov
freebsd_instance:
image_family: freebsd-13-0
install_script:
- sh -c "$(fetch https://raw.githubusercontent.com/ararslan/CirrusCI.jl/master/bin/install.sh -o -)"
build_script:
- cirrusjl build
test_script:
- cirrusjl test
coverage_script:
- cirrusjl coverage codecov
8 changes: 8 additions & 0 deletions test/julia_instructions/.cirrus.star
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
load("../../lib.star", "julia_instructions")
load("github.com/cirrus-modules/helpers", "task", "freebsd_instance")

def main(ctx):
return [task("No coverage", freebsd_instance("freebsd-13-0"),
instructions=julia_instructions("FreeBSD")),
task("Codecov", freebsd_instance("freebsd-13-0"),
instructions=julia_instructions("FreeBSD", coverage="codecov"))]