Skip to content

Commit 4417261

Browse files
author
Brian J. Cardiff
authored
Bintray publishing scripts (#72)
* Initial tasks to publish packages in bintray * WIP reorganize makefile, initial setup instructions * Add repo creation targets * Drop moved script * Split build output directory. Prepare for signing process * Automated sign of deb and rpm * Allow Makefile to sign (or not) packages * Update apt/setup.sh to work for ubuntu and debian Add test script * Split deb 64 and deb 32 targets Cleanup unused PACKAGE_BRANDING_ARGS, they are included in FPM_FLAGS * Allow .tar.gz to be named different than version-iteration by stripping the first component when building the .deb and .rpm * Allow --crystal=x.y and discover last package-iteration * Add support for --channel=stable|unstable to pick nightlies * WIP rpm setup script with version lookup * Create rpm for all distro and one for Centos6 * Add channels, rename repo to deb * Add publish scripts and rebuild * Update typos * Add install.sh with distro detection * Explicit call trigger deb calc_metadata * Fix to run on CI * Tidy up docs and initial rebuild * Apply suggestions
1 parent eb799b7 commit 4417261

18 files changed

+811
-0
lines changed

bintray/.dockerignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
*

bintray/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
/Makefile.local
2+
/build/

bintray/Dockerfile-fpm

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
FROM ruby:2.5
2+
3+
RUN apt-get update \
4+
&& apt-get install -y rpm \
5+
# cleanup
6+
&& apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
7+
8+
ENV PATH="/usr/local/bundle/bin/:${PATH}"
9+
RUN gem install --no-document fpm -v 1.10.2

bintray/Dockerfile-sign-centos

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
FROM centos:7
2+
3+
RUN yum install -y gnupg-agent gnupg2 rpm-sign expect
4+
5+
RUN echo "%_signature gpg" > ~/.rpmmacros
6+
RUN echo "%_gpg_name 7CC06B54" >> ~/.rpmmacros
7+
RUN echo "%__gpg_check_password_cmd /bin/true" >> ~/.rpmmacros
8+
RUN echo '%__gpg_sign_cmd %{__gpg} \
9+
gpg --batch --no-verbose --no-armor \
10+
--passphrase-file /tmp/passphrase_file \
11+
%{?_gpg_digest_algo:--digest-algo %{_gpg_digest_algo}} \
12+
--no-secmem-warning \
13+
-u "%{_gpg_name}" -sbo %{__signature_filename} %{__plaintext_filename}' >> ~/.rpmmacros
14+
15+
16+
CMD \
17+
gpg-agent --daemon --pinentry-program=/usr/bin/pinentry-curses \
18+
--use-standard-socket; \
19+
while gpg-connect-agent /bye; do \
20+
sleep 2; \
21+
done

bintray/Dockerfile-sign-debian

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
FROM debian:jessie
2+
3+
RUN \
4+
apt-get update && \
5+
DEBIAN_FRONTEND=noninteractive apt-get install -y dpkg-sig gnupg-agent gnupg2 && \
6+
apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
7+
8+
CMD \
9+
gpg-agent --daemon --pinentry-program=/usr/bin/pinentry-curses \
10+
--use-standard-socket; \
11+
while gpg-connect-agent /bye; do \
12+
sleep 2; \
13+
done

bintray/Makefile

Lines changed: 249 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,249 @@
1+
-include Makefile.local # for local options BINTRAY_USERNAME, BINTRAY_API_KEY
2+
3+
# Secrets configuration
4+
BINTRAY_USERNAME ?=
5+
BINTRAY_API_KEY ?=
6+
BINTRAY_SIGNING_PASSPHRASE ?= # Optional signing passphrase
7+
8+
# Public configuration
9+
BINTRAY_SUBJECT ?= crystal
10+
BINTRAY_PACKAGE ?= crystal
11+
BINTRAY_DEB_REPO ?= deb
12+
BINTRAY_RPM_REPO ?= rpm
13+
BINTRAY_PACKAGE_VCS ?= https://github.com/crystal-lang/crystal.git
14+
BINTRAY_PACKAGE_WEBSITE ?= http://crystal-lang.org/
15+
# Possible channels are:
16+
#
17+
# - stable: for tagged releases
18+
# - unstable: for -rc, -pre releases,
19+
# - nightly: for nightly packages
20+
#
21+
CHANNEL ?= stable
22+
23+
# Package build configuration
24+
sign ?= true ## Sign the .deb and .rpm files using ./sign.sh
25+
force ?= ## Force publish of existing file
26+
CRYSTAL_LINUX64_TARGZ ?= ## url or path to crystal-{version}-{package}-linux-x86_64.tar.gz
27+
CRYSTAL_LINUX32_TARGZ ?= ## url or path to crystal-{version}-{package}-linux-i686.tar.gz
28+
29+
# Package branding configuration
30+
CRYSTAL_VERSION ?= ## How the binaries should be branded
31+
PACKAGE_ITERATION ?= 1
32+
PACKAGE_MAINTAINER ?= Crystal Team <[email protected]>
33+
34+
OUTPUT_TARGZ = $(OUTPUT_DIR)/targz
35+
OUTPUT_UNSIGNED = $(OUTPUT_DIR)/unsigned
36+
OUTPUT_SIGNED = $(OUTPUT_DIR)/signed
37+
OUTPUT_LINUX64_TARGZ = $(OUTPUT_TARGZ)/crystal-$(CRYSTAL_VERSION)-$(PACKAGE_ITERATION)-linux-x86_64.tar.gz
38+
OUTPUT_LINUX32_TARGZ = $(OUTPUT_TARGZ)/crystal-$(CRYSTAL_VERSION)-$(PACKAGE_ITERATION)-linux-i686.tar.gz
39+
DEB_NAME64 = crystal_$(CRYSTAL_VERSION)-$(PACKAGE_ITERATION)_amd64.deb
40+
DEB_NAME32 = crystal_$(CRYSTAL_VERSION)-$(PACKAGE_ITERATION)_i386.deb
41+
OUTPUT_UNSIGNED_DEB_NAME64 = $(OUTPUT_UNSIGNED)/$(DEB_NAME64)
42+
OUTPUT_UNSIGNED_DEB_NAME32 = $(OUTPUT_UNSIGNED)/$(DEB_NAME32)
43+
OUTPUT_SIGNED_DEB_NAME64 = $(OUTPUT_SIGNED)/$(DEB_NAME64)
44+
OUTPUT_SIGNED_DEB_NAME32 = $(OUTPUT_SIGNED)/$(DEB_NAME32)
45+
46+
DEB_DISTROS = all
47+
PUBLISH_FLAGS = publish=1$(if $(force),;override=1)
48+
49+
CURL_BINTRAY_AUTH = -u$(BINTRAY_USERNAME):$(BINTRAY_API_KEY)
50+
CURL_BINTRAY_PASSPHRASE = $(if $(BINTRAY_SIGNING_PASSPHRASE),-H "X-GPG-PASSPHRASE: $(BINTRAY_SIGNING_PASSPHRASE)")
51+
52+
FPM_FLAGS = --name $(BINTRAY_PACKAGE) \
53+
--version $(CRYSTAL_VERSION) \
54+
--iteration $(PACKAGE_ITERATION) \
55+
--vendor \"$(PACKAGE_MAINTAINER)\" \
56+
--maintainer \"$(PACKAGE_MAINTAINER)\" \
57+
--url \"https://crystal-lang.org/\" \
58+
--description \"Crystal programming language compiler\" \
59+
--license APACHE-2.0 \
60+
--provides crystal --provides shards
61+
62+
63+
OUTPUT_DIR = build
64+
65+
SHELL := /bin/bash
66+
67+
clean:
68+
rm -Rf $(OUTPUT_DIR)
69+
70+
clean_targz:
71+
rm -Rf $(OUTPUT_TARGZ)
72+
73+
clean_deb:
74+
rm -Rf $(OUTPUT_DIR)/unsigned/*.deb
75+
rm -Rf $(OUTPUT_DIR)/signed/*.deb
76+
77+
clean_rpm:
78+
rm -Rf $(OUTPUT_DIR)/unsigned/*.rpm
79+
rm -Rf $(OUTPUT_DIR)/signed/*.rpm
80+
81+
.PHONY: docker-fpm
82+
docker-fpm: Dockerfile-fpm
83+
docker build $(DOCKER_BUILD_ARGS) -t crystal-fpm -f Dockerfile-fpm .
84+
85+
ALL_RPM_OUTPUTS =
86+
ALL_RPM_PUBLISH =
87+
ALL_RPM_CALC_METADATA =
88+
89+
.PHONY: all
90+
all: targz deb rpm
91+
92+
.PHONY: publish
93+
publish: rpm_publish deb_publish
94+
95+
define download_or_copy
96+
mkdir -p $(OUTPUT_TARGZ)
97+
if [[ "$(1)" =~ ^http(s?):\/\/ ]]; \
98+
then curl -L -o $(2) "$(1)"; \
99+
else cp "$(1)" $(2); \
100+
fi
101+
endef
102+
103+
define create_signed # (rpm|deb, path/to/unsigned.[rpm|deb])
104+
if [[ "$(strip $(sign))" == "true" ]]; \
105+
then ./sign.sh sign-$(1) $(2); \
106+
else ./sign.sh skip-sign $(2); \
107+
fi
108+
endef
109+
110+
.PHONY: targz
111+
targz: $(OUTPUT_LINUX64_TARGZ) $(OUTPUT_LINUX32_TARGZ)
112+
113+
$(OUTPUT_LINUX64_TARGZ):
114+
$(call download_or_copy,$(CRYSTAL_LINUX64_TARGZ),$(OUTPUT_LINUX64_TARGZ))
115+
116+
$(OUTPUT_LINUX32_TARGZ):
117+
$(call download_or_copy,$(CRYSTAL_LINUX32_TARGZ),$(OUTPUT_LINUX32_TARGZ))
118+
119+
$(OUTPUT_SIGNED_DEB_NAME64): $(OUTPUT_UNSIGNED_DEB_NAME64)
120+
$(call create_signed,deb,$(OUTPUT_UNSIGNED_DEB_NAME64))
121+
122+
$(OUTPUT_SIGNED_DEB_NAME32): $(OUTPUT_UNSIGNED_DEB_NAME32)
123+
$(call create_signed,deb,$(OUTPUT_UNSIGNED_DEB_NAME32))
124+
125+
.PHONY: deb
126+
deb: deb64 deb32
127+
128+
.PHONY: deb64
129+
deb64: $(OUTPUT_SIGNED_DEB_NAME64)
130+
131+
.PHONY: deb32
132+
deb32: $(OUTPUT_SIGNED_DEB_NAME32)
133+
134+
.PHONY: deb_publish
135+
deb_publish: deb64_publish deb32_publish
136+
137+
.PHONY: deb64_publish
138+
deb64_publish:
139+
curl -T $(OUTPUT_SIGNED_DEB_NAME64) $(CURL_BINTRAY_AUTH) $(CURL_BINTRAY_PASSPHRASE) "https://api.bintray.com/content/$(BINTRAY_SUBJECT)/$(BINTRAY_DEB_REPO)/$(BINTRAY_PACKAGE)/$(CRYSTAL_VERSION)/$(DEB_NAME64);deb_distribution=$(DEB_DISTROS);deb_component=$(CHANNEL);deb_architecture=amd64;$(PUBLISH_FLAGS)"
140+
141+
.PHONY: deb32_publish
142+
deb32_publish:
143+
curl -T $(OUTPUT_SIGNED_DEB_NAME32) $(CURL_BINTRAY_AUTH) $(CURL_BINTRAY_PASSPHRASE) "https://api.bintray.com/content/$(BINTRAY_SUBJECT)/$(BINTRAY_DEB_REPO)/$(BINTRAY_PACKAGE)/$(CRYSTAL_VERSION)/$(DEB_NAME32);deb_distribution=$(DEB_DISTROS);deb_component=$(CHANNEL);deb_architecture=i386;$(PUBLISH_FLAGS)"
144+
145+
.PHONY: deb_calc_metadata
146+
deb_calc_metadata:
147+
curl -X POST $(CURL_BINTRAY_AUTH) "https://api.bintray.com/calc_metadata/crystal/deb"
148+
149+
$(OUTPUT_UNSIGNED_DEB_NAME64): docker-fpm $(OUTPUT_LINUX64_TARGZ)
150+
mkdir -p $(OUTPUT_UNSIGNED)
151+
docker run --rm -v $(CURDIR)/build:/build crystal-fpm /bin/sh -c "\
152+
mkdir -p /tmp/crystal \
153+
&& tar -C /tmp/crystal --strip-components 1 -xf $(OUTPUT_LINUX64_TARGZ) \
154+
&& mv /tmp/crystal/share/licenses/crystal/LICENSE /tmp/crystal/share/doc/crystal/copyright \
155+
&& rm -Rf /tmp/crystal/share/licenses \
156+
&& fpm --input-type dir --output-type deb \
157+
--architecture x86_64 \
158+
--depends gcc --depends pkg-config --depends libpcre3-dev --depends libevent-dev \
159+
--deb-recommends git --deb-recommends libssl-dev --deb-recommends libz-dev \
160+
--deb-suggests libxml2-dev --deb-suggests libgmp-dev --deb-suggests libyaml-dev --deb-suggests libreadline-dev \
161+
--force --package $(OUTPUT_UNSIGNED_DEB_NAME64) \
162+
--prefix /usr \
163+
--chdir /tmp/crystal \
164+
$(FPM_FLAGS) bin lib share"
165+
166+
$(OUTPUT_UNSIGNED_DEB_NAME32): docker-fpm $(OUTPUT_LINUX32_TARGZ)
167+
mkdir -p $(OUTPUT_UNSIGNED)
168+
docker run --rm -v $(CURDIR)/build:/build crystal-fpm /bin/sh -c "\
169+
mkdir -p /tmp/crystal \
170+
&& tar -C /tmp/crystal --strip-components 1 -xf $(OUTPUT_LINUX32_TARGZ) \
171+
&& mv /tmp/crystal/share/licenses/crystal/LICENSE /tmp/crystal/share/doc/crystal/copyright \
172+
&& rm -Rf /tmp/crystal/share/licenses \
173+
&& fpm --input-type dir --output-type deb \
174+
--architecture i386 \
175+
--depends gcc --depends pkg-config --depends libpcre3-dev --depends libevent-dev \
176+
--deb-recommends git --deb-recommends libssl-dev --deb-recommends libz-dev \
177+
--deb-suggests libxml2-dev --deb-suggests libgmp-dev --deb-suggests libyaml-dev --deb-suggests libreadline-dev \
178+
--force --package $(OUTPUT_UNSIGNED_DEB_NAME32) \
179+
--prefix /usr \
180+
--chdir /tmp/crystal \
181+
$(FPM_FLAGS) bin lib share"
182+
183+
define rpm_template # (distro,arch,extra-fpm-flags)
184+
$(eval this_rpm_output_name = crystal-$(CRYSTAL_VERSION)-$(PACKAGE_ITERATION).$(1).$(2).rpm)
185+
$(eval this_unsigned_rpm_output = $(OUTPUT_UNSIGNED)/$(this_rpm_output_name))
186+
$(eval this_signed_rpm_output = $(OUTPUT_SIGNED)/$(this_rpm_output_name))
187+
188+
$(eval ALL_RPM_OUTPUTS += $(this_signed_rpm_output))
189+
$(eval ALL_RPM_PUBLISH += rpm_publish_$(1)_$(2))
190+
$(eval ALL_RPM_CALC_METADATA += rpm_calc_metadata_$(1)_$(2))
191+
192+
$(this_unsigned_rpm_output): docker-fpm $(OUTPUT_LINUX64_TARGZ)
193+
mkdir -p $(OUTPUT_UNSIGNED)
194+
docker run --rm -v $(CURDIR)/build:/build crystal-fpm /bin/sh -c "\
195+
mkdir -p /tmp/crystal \
196+
&& tar -C /tmp/crystal --strip-components 1 -xf $(OUTPUT_LINUX64_TARGZ) \
197+
&& fpm --input-type dir --output-type rpm \
198+
--architecture $(2) \
199+
$(3) \
200+
--force --package $(this_unsigned_rpm_output) \
201+
--prefix /usr \
202+
--chdir /tmp/crystal \
203+
$(FPM_FLAGS) bin lib share"
204+
205+
$(this_signed_rpm_output): $(this_unsigned_rpm_output)
206+
$(call create_signed,rpm,$(this_unsigned_rpm_output))
207+
208+
.PHONY: rpm_publish_$(1)_$(2)
209+
rpm_publish_$(1)_$(2):
210+
curl -T $(this_signed_rpm_output) $(CURL_BINTRAY_AUTH) $(CURL_BINTRAY_PASSPHRASE) "https://api.bintray.com/content/$(BINTRAY_SUBJECT)/$(BINTRAY_RPM_REPO)/$(BINTRAY_PACKAGE)/$(CRYSTAL_VERSION)/$(1)/$(2)/$(CHANNEL)/$(this_rpm_output_name);$(PUBLISH_FLAGS)"
211+
212+
.PHONY: rpm_calc_metadata_$(1)_$(2)
213+
rpm_calc_metadata_$(1)_$(2):
214+
curl -X POST $(CURL_BINTRAY_AUTH) "https://api.bintray.com/calc_metadata/crystal/rpm/$(1)/$(2)/$(CHANNEL)"
215+
endef
216+
217+
# It would be great to use --depends 'libevent-devel >= 2.0 or libevent2-devel', but
218+
# * CentOS 6/7 have rpm <= 4.13 which does not support expressions https://rpm.org/user_doc/boolean_dependencies.html
219+
# * CentOS 7/8 does not have libevent2-devel. Only CentOS 6 uses libevent2-devel.
220+
$(eval $(call rpm_template,el6,x86_64,--depends gcc --depends pkgconfig --depends pcre-devel --depends libevent2-devel))
221+
$(eval $(call rpm_template,all,x86_64,--depends gcc --depends pkgconfig --depends pcre-devel --depends libevent-devel))
222+
223+
.PHONY: rpm
224+
rpm: $(ALL_RPM_OUTPUTS)
225+
226+
.PHONY: rpm_publish
227+
rpm_publish: $(ALL_RPM_PUBLISH)
228+
229+
.PHONY: rpm_calc_metadata
230+
rpm_calc_metadata: $(ALL_RPM_CALC_METADATA)
231+
232+
# Other Bintray API
233+
234+
.PHONY: create_bintray_deb_repo
235+
create_bintray_deb_repo:
236+
curl --data '{"type":"debian","gpg_sign_metadata":true,"gpg_sign_files":false,"gpg_use_owner_key":false}' -H "Content-Type: application/json" -X POST $(CURL_BINTRAY_AUTH) "https://api.bintray.com/repos/$(BINTRAY_SUBJECT)/$(BINTRAY_DEB_REPO)"
237+
curl --data '{"name":"$(BINTRAY_PACKAGE)","licenses": ["Apache-2.0"],"vcs_url":"$(BINTRAY_PACKAGE_VCS)","website_url":"$(BINTRAY_PACKAGE_WEBSITE)"}' -H "Content-Type: application/json" -X POST $(CURL_BINTRAY_AUTH) "https://api.bintray.com/packages/$(BINTRAY_SUBJECT)/$(BINTRAY_DEB_REPO)"
238+
239+
.PHONY: create_bintray_rpm_repo
240+
create_bintray_rpm_repo:
241+
# yum_metadata_depth=3 : DISTRO/ARCH/CHANNEL
242+
curl --data '{"type":"rpm","yum_metadata_depth":3,"gpg_sign_metadata":true,"gpg_sign_files":false,"gpg_use_owner_key":false}' -H "Content-Type: application/json" -X POST $(CURL_BINTRAY_AUTH) "https://api.bintray.com/repos/$(BINTRAY_SUBJECT)/$(BINTRAY_RPM_REPO)"
243+
curl --data '{"name":"$(BINTRAY_PACKAGE)","licenses": ["Apache-2.0"],"vcs_url":"$(BINTRAY_PACKAGE_VCS)","website_url":"$(BINTRAY_PACKAGE_WEBSITE)"}' -H "Content-Type: application/json" -X POST $(CURL_BINTRAY_AUTH) "https://api.bintray.com/packages/$(BINTRAY_SUBJECT)/$(BINTRAY_RPM_REPO)"
244+
245+
# $ make set_version_date CRYSTAL_VERSION=0.33.0 CRYSTAL_VERSION_DATE=2020-02-14
246+
.PHONY: set_version_date
247+
set_version_date:
248+
curl -v --data '{"released": "$(CRYSTAL_VERSION_DATE)T12:00:00.000Z"}' -H "Content-Type: application/json" -X PATCH $(CURL_BINTRAY_AUTH) "https://api.bintray.com/packages/$(BINTRAY_SUBJECT)/$(BINTRAY_DEB_REPO)/$(BINTRAY_PACKAGE)/versions/$(CRYSTAL_VERSION)"
249+
curl -v --data '{"released": "$(CRYSTAL_VERSION_DATE)T12:00:00.000Z"}' -H "Content-Type: application/json" -X PATCH $(CURL_BINTRAY_AUTH) "https://api.bintray.com/packages/$(BINTRAY_SUBJECT)/$(BINTRAY_RPM_REPO)/$(BINTRAY_PACKAGE)/versions/$(CRYSTAL_VERSION)"

bintray/README.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
2+
# Publishing package in Bintray
3+
4+
The following environment variables need to be defined
5+
6+
- `BINTRAY_USERNAME`
7+
- `BINTRAY_API_KEY`
8+
- `CRYSTAL_SIGNING_KEY` Path to the private signing key file
9+
- `CRYSTAL_SIGNING_PASSPHRASE_FILE` Path to signing key passphrase
10+
11+
On Bintray the deb and rpm repositories are defined with automatic metadata signing by bintray.
12+
The .deb and .rpm files for the stable and unstable channels are uploaded already signed.
13+
The .deb and .rpm files for the nightly channel are uploaded without signing.
14+
15+
## To create the Bintray repositories
16+
17+
```terminal-session
18+
$ make create_bintray_apt_repo create_bintray_rpm_repo
19+
```
20+
21+
## To publish a new release
22+
23+
Use scripts `publish-stable.sh`, `publish-unstable.sh`, `publish-nightly.sh` build
24+
and publish the packages in the indicated channel.
25+
26+
For stable and unstable channel the signing container should be started.
27+
28+
```terminal-session
29+
$ ./sign.sh build
30+
$ ./sign.sh up
31+
$ ./publish-stable VERSION YYYY-MM-DD CRYSTAL_LINUX64_TARGZ CRYSTAL_LINUX32_TARGZ
32+
```
33+
34+
Under the hood the following targets will be executed:
35+
36+
```terminal-session
37+
$ make deb rpm publish set_version_date deb_calc_metadata rpm_calc_metadata \
38+
CRYSTAL_VERSION=$crystal_version \
39+
CRYSTAL_LINUX64_TARGZ=https://github.com/crystal-lang/crystal/releases/download/$crystal_version/crystal-$crystal_version-1-linux-x86_64.tar.gz \
40+
CRYSTAL_LINUX32_TARGZ=https://github.com/crystal-lang/crystal/releases/download/$crystal_version/crystal-$crystal_version-1-linux-i686.tar.gz
41+
CRYSTAL_VERSION_DATE=YYYY-MM-DD
42+
```
43+
44+
That will:
45+
46+
1. Download tar.gz in build/targz
47+
2. Create unsigned .deb and .rpm in build/unsigned
48+
3. Create signed .deb and .rpm in build/signed
49+
4. Upload signed packages to Bintray
50+
51+
The `rebuild.sh` scripts declares how to publish existing releases in Bintray.

bintray/docker-compose.yml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
version: '3'
2+
3+
services:
4+
centos:
5+
build:
6+
context: .
7+
dockerfile: Dockerfile-sign-centos
8+
volumes:
9+
- gnupg_centos:/root/.gnupg
10+
- ./build:/build
11+
- ./support:/support
12+
13+
debian:
14+
build:
15+
context: .
16+
dockerfile: Dockerfile-sign-debian
17+
volumes:
18+
- gnupg_debian:/root/.gnupg
19+
- ./build:/build
20+
21+
volumes:
22+
gnupg_centos:
23+
gnupg_debian:

bintray/publish-nightly.sh

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/usr/bin/env bash
2+
3+
# $ ./publish-nightly VERSION VERSION_DATE CRYSTAL_LINUX64_TARGZ CRYSTAL_LINUX32_TARGZ
4+
5+
make deb rpm sign=false \
6+
CRYSTAL_VERSION=$1 \
7+
CRYSTAL_LINUX64_TARGZ=$3 \
8+
CRYSTAL_LINUX32_TARGZ=$4
9+
10+
make publish set_version_date deb_calc_metadata rpm_calc_metadata force=1 CHANNEL=nightly \
11+
CRYSTAL_VERSION=$1 \
12+
CRYSTAL_VERSION_DATE=$2

0 commit comments

Comments
 (0)