Skip to content

Commit d99fa39

Browse files
authored
Nightly building and pushing of many implementations head (#85)
* Add Jenkinsfile to build heads * Add more heads * Updates to Gambit, Stak and Meevax
1 parent 2b2cb7e commit d99fa39

File tree

30 files changed

+447
-66
lines changed

30 files changed

+447
-66
lines changed

Jenkinsfile

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
pipeline {
2+
agent {
3+
label 'linux-x86_64'
4+
}
5+
6+
triggers {
7+
cron('0 1 * * *')
8+
}
9+
10+
options {
11+
disableConcurrentBuilds()
12+
buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10'))
13+
}
14+
15+
environment {
16+
DOCKER_HUB_USERNAME = credentials('DOCKER_HUB_USERNAME')
17+
DOCKER_HUB_TOKEN = credentials('DOCKER_HUB_TOKEN')
18+
}
19+
20+
stages {
21+
stage('Docker login') {
22+
steps {
23+
sh 'docker login -u ${DOCKER_HUB_USERNAME} -p ${DOCKER_HUB_TOKEN}'
24+
}
25+
}
26+
27+
stage('Heads') {
28+
steps {
29+
script {
30+
def implementations = "biwascheme chezscheme chibi chicken foment gauche ironscheme kawa lips loko meevax mit-scheme mosh sagittarius skint stak stklos tr7 ypsilon".split()
31+
parallel implementations.collectEntries { implementation->
32+
[(implementation): {
33+
stage("${implementation} build") {
34+
timeout(time: 6, unit: 'HOURS') {
35+
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
36+
dir("implementations/${implementation}/head") {
37+
sh "docker build . --tag=schemers/${implementation}:head"
38+
}
39+
}
40+
}
41+
}
42+
stage("${implementation} push") {
43+
timeout(time: 6, unit: 'HOURS') {
44+
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
45+
dir("implementations/${implementation}/head") {
46+
sh "docker push schemers/${implementation}:head"
47+
}
48+
}
49+
}
50+
}
51+
}
52+
]
53+
}
54+
}
55+
}
56+
}
57+
58+
stage('Docker logout') {
59+
steps {
60+
sh "docker logout"
61+
}
62+
}
63+
64+
stage('cyclone') {
65+
steps {
66+
timeout(time: 6, unit: 'HOURS') {
67+
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
68+
dir("implementations/${STAGE_NAME}/head") {
69+
sh "docker build . --tag=schemers/${STAGE_NAME}:head"
70+
}
71+
sh 'docker login -u ${DOCKER_HUB_USERNAME} -p ${DOCKER_HUB_TOKEN}'
72+
sh "docker push schemers/${STAGE_NAME}:head"
73+
sh "docker logout"
74+
}
75+
}
76+
}
77+
}
78+
79+
stage('gambit') {
80+
steps {
81+
timeout(time: 6, unit: 'HOURS') {
82+
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
83+
dir("implementations/${STAGE_NAME}/head") {
84+
sh "docker build . --tag=schemers/${STAGE_NAME}:head"
85+
}
86+
sh 'docker login -u ${DOCKER_HUB_USERNAME} -p ${DOCKER_HUB_TOKEN}'
87+
sh "docker push schemers/${STAGE_NAME}:head"
88+
sh "docker logout"
89+
}
90+
}
91+
}
92+
}
93+
94+
stage('guile') {
95+
steps {
96+
timeout(time: 6, unit: 'HOURS') {
97+
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
98+
dir("implementations/${STAGE_NAME}/head") {
99+
sh "docker build . --tag=schemers/${STAGE_NAME}:head"
100+
}
101+
sh 'docker login -u ${DOCKER_HUB_USERNAME} -p ${DOCKER_HUB_TOKEN}'
102+
sh "docker push schemers/${STAGE_NAME}:head"
103+
sh "docker logout"
104+
}
105+
}
106+
}
107+
}
108+
109+
stage('racket') {
110+
steps {
111+
timeout(time: 6, unit: 'HOURS') {
112+
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
113+
dir("implementations/${STAGE_NAME}/head") {
114+
sh "docker build . --tag=schemers/${STAGE_NAME}:head"
115+
}
116+
sh 'docker login -u ${DOCKER_HUB_USERNAME} -p ${DOCKER_HUB_TOKEN}'
117+
sh "docker push schemers/${STAGE_NAME}:head"
118+
sh "docker logout"
119+
}
120+
}
121+
}
122+
}
123+
}
124+
125+
post {
126+
always {
127+
sh "docker logout"
128+
}
129+
}
130+
}
Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,17 @@
11
# -*- mode: dockerfile; coding: utf-8 -*-
22
FROM debian:bookworm-slim
33
RUN apt-get update && apt-get -y --no-install-recommends install \
4-
npm \
4+
nodejs \
5+
npm \
6+
ca-certificates \
7+
git \
58
&& rm -rf /var/lib/apt/lists/*
6-
RUN npm install -g biwascheme
9+
WORKDIR /build
10+
RUN git clone https://github.com/biwascheme/biwascheme.git
11+
WORKDIR /build/biwascheme
12+
RUN npm install
13+
RUN npm run build
14+
RUN npm pack
15+
RUN npm -g install biwascheme*.tgz
716
RUN ln -s biwas /usr/local/bin/scheme-banner
817
CMD ["scheme-banner"]
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# -*- mode: dockerfile; coding: utf-8 -*-
2+
FROM debian:bookworm-slim AS build
3+
RUN apt-get update && apt-get -y --no-install-recommends install \
4+
gcc \
5+
libc6-dev \
6+
libx11-dev \
7+
uuid-dev \
8+
make \
9+
ncurses-dev \
10+
build-essential \
11+
ca-certificates \
12+
git \
13+
&& rm -rf /var/lib/apt/lists/*
14+
WORKDIR /build
15+
RUN git clone https://github.com/cisco/ChezScheme.git --depth=1 --filter=blob:none chezscheme
16+
WORKDIR /build/chezscheme
17+
RUN ./configure --prefix=/usr/local
18+
RUN make PREFIX=/usr/local
19+
RUN make PREFIX=/usr/local install
20+
21+
FROM debian:bookworm-slim
22+
COPY --from=build /usr/local /usr/local
23+
RUN apt-get update && apt-get -y --no-install-recommends install \
24+
libncurses6 \
25+
&& rm -rf /var/lib/apt/lists/*
26+
COPY scheme-banner /usr/local/bin/
27+
RUN ln -s scheme /usr/bin/scheme-script \
28+
&& ln -s scheme /usr/bin/petite
29+
CMD ["scheme-banner"]
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/bin/sh
2+
# We need this script because argv[0] needs to be "scheme".
3+
exec scheme "$@"
Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,26 @@
11
# -*- mode: dockerfile; coding: utf-8 -*-
2-
FROM schemers/chicken AS build
2+
FROM debian:bookworm AS build
33
RUN apt-get update && apt-get -y --no-install-recommends install \
4-
git ca-certificates \
4+
git \
5+
ca-certificates \
56
build-essential \
7+
wget \
68
&& rm -rf /var/lib/apt/lists/*
79
WORKDIR /build
10+
RUN wget https://code.call-cc.org/dev-snapshots/2024/12/09/chicken-6.0.0pre1.tar.gz
11+
RUN tar -xf chicken-6.0.0pre1.tar.gz
12+
WORKDIR /build/chicken-6.0.0pre1
13+
RUN ./configure --prefix=/usr/local-other && make && make install
14+
WORKDIR /build
815
RUN git clone https://code.call-cc.org/git/chicken-core.git chicken
916
WORKDIR /build/chicken
10-
RUN make PLATFORM=linux spotless
11-
RUN make PLATFORM=linux CHICKEN=/usr/local/bin/chicken
12-
RUN make PLATFORM=linux install
17+
RUN ./configure --prefix=/usr/local
18+
RUN make CHICKEN=/usr/local-other/bin/chicken
19+
RUN make install
1320

1421
FROM debian:bookworm-slim
1522
RUN apt-get update && apt-get -y --no-install-recommends install \
1623
gcc libc-dev \
1724
&& rm -rf /var/lib/apt/lists/*
1825
COPY --from=build /usr/local/ /usr/local/
19-
RUN chicken-install r7rs
2026
CMD ["scheme-banner"]

implementations/cyclone/head/Dockerfile

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
11
# -*- mode: dockerfile; coding: utf-8 -*-
2-
3-
FROM schemers/cyclone AS build
2+
FROM debian:bookworm-slim AS build
43
RUN apt-get update && apt-get -y --no-install-recommends install \
5-
build-essential ca-certificates git \
4+
build-essential \
5+
ca-certificates \
6+
libck-dev \
7+
git \
68
&& rm -rf /var/lib/apt/lists/*
79
WORKDIR /build
10+
RUN git clone https://github.com/justinethier/cyclone-bootstrap.git --depth=1
11+
WORKDIR /build/cyclone-bootstrap
12+
RUN make
13+
RUN make install
14+
WORKDIR /build
815
RUN git clone https://github.com/justinethier/cyclone.git
916
WORKDIR /build/cyclone
1017
RUN echo "Bootstrapping from Cyclone $(cyclone -vn)"

implementations/gambit/4/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ RUN apt-get update && apt-get -y --no-install-recommends install \
55
&& rm -rf /var/lib/apt/lists/*
66
WORKDIR /build
77
COPY checksum checksum
8-
ADD https://github.com/gambit/gambit/archive/refs/tags/v4.9.6.tar.gz gambit.tgz
8+
ADD https://gambitscheme.org/latest/gambit-v4_9_7.tgz gambit.tgz
99
RUN sha256sum gambit.tgz && sha256sum -c checksum
1010
RUN mkdir gambit && tar -C gambit --strip-components 1 -xf gambit.tgz
1111
WORKDIR /build/gambit

implementations/gambit/4/checksum

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
6fc1fa06262e03c1b4215977e75bdbbd80d09b3819683ac2124c5ac94781272c gambit.tgz
1+
5243d3d5cc3a82e718601680b12f482594d2914b1a892b8a4c8012bb9d343c22 gambit.tgz
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# -*- mode: dockerfile; coding: utf-8 -*-
2+
3+
# NB: There is an official Gerbil Dockerfile at
4+
# <https://github.com/vyzo/gerbil/blob/master/Dockerfile>
5+
FROM debian:bookworm-slim AS build
6+
RUN apt-get update && apt-get -y --no-install-recommends install \
7+
git \
8+
ca-certificates \
9+
build-essential \
10+
libsqlite3-dev \
11+
libssl-dev \
12+
openssl \
13+
sqlite3 \
14+
zlib1g-dev \
15+
&& rm -rf /var/lib/apt/lists/*
16+
WORKDIR /build
17+
RUN git clone https://github.com/mighty-gerbils/gerbil.git
18+
WORKDIR /build/gerbil
19+
RUN ./configure
20+
RUN make -j16
21+
RUN make install
22+
23+
FROM debian:bookworm-slim
24+
RUN apt-get update && apt-get -y --no-install-recommends install \
25+
ca-certificates gcc git libc-dev \
26+
&& rm -rf /var/lib/apt/lists/*
27+
COPY --from=build /opt/gerbil /opt/gerbil
28+
ENV PATH=/opt/gerbil/bin:${PATH}
29+
RUN ln -s /opt/gerbil/bin/gxi /usr/local/bin/scheme-banner
30+
CMD ["scheme-banner"]
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# -*- mode: dockerfile; coding: utf-8 -*-
2+
FROM debian:bookworm-slim AS build
3+
RUN apt-get update && apt-get -y --no-install-recommends install \
4+
gpg \
5+
wget \
6+
ca-certificates \
7+
git \
8+
&& rm -rf /var/lib/apt/lists/*
9+
RUN wget https://packages.microsoft.com/keys/microsoft.asc && cat microsoft.asc | gpg --dearmor -o microsoft.asc.gpg
10+
RUN wget https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
11+
RUN dpkg -i packages-microsoft-prod.deb
12+
ENV DOTNET_CLI_TELEMETRY_OPTOUT=true
13+
RUN apt-get update && apt-get install -y dotnet-sdk-9.0
14+
WORKDIR /build
15+
RUN git clone https://github.com/IronScheme/IronScheme.git \
16+
-b master --recurse-submodules
17+
WORKDIR /build/IronScheme/IronScheme
18+
RUN sh build.sh
19+
#RUN sh test.sh
20+
#RUN sh package.sh
21+
#RUN sh nuget.sh
22+
23+
FROM debian:bookworm-slim
24+
RUN apt-get update && apt-get -y --no-install-recommends install \
25+
gpg \
26+
wget \
27+
ca-certificates \
28+
&& rm -rf /var/lib/apt/lists/*
29+
RUN wget https://packages.microsoft.com/keys/microsoft.asc && cat microsoft.asc | gpg --dearmor -o microsoft.asc.gpg
30+
RUN wget https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
31+
RUN dpkg -i packages-microsoft-prod.deb
32+
ENV DOTNET_CLI_TELEMETRY_OPTOUT=true
33+
RUN apt-get update && apt-get install -y aspnetcore-runtime-9.0
34+
COPY --from=build /build/IronScheme/IronScheme /usr/local/IronScheme/
35+
ENV LANG C.UTF-8
36+
COPY ironscheme /usr/local/bin/
37+
RUN ln -s ironscheme /usr/local/bin/isc && \
38+
ln -s ironscheme /usr/local/bin/scheme-banner && \
39+
ln -s ironscheme /usr/local/bin/scheme-script
40+
CMD ["scheme-banner"]

0 commit comments

Comments
 (0)