Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit a453c23

Browse files
committed
Merge branch 'cirrus-ci' into test-cirrus-ci
2 parents aa193f6 + 0aa9518 commit a453c23

File tree

3 files changed

+209
-0
lines changed

3 files changed

+209
-0
lines changed

.cirrus.yml

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
freebsd_instance:
2+
image: freebsd-11-2-release-amd64
3+
4+
freebsd_build_task:
5+
6+
env:
7+
matrix:
8+
- node_js: 11
9+
nodeTxzKey: node-11
10+
npmTxzKey: npm-6
11+
- node_js: 10
12+
nodeTxzKey: node10
13+
npmTxzKey: npm-node10
14+
- node_js: 8
15+
nodeTxzKey: node8
16+
npmTxzKey: npm-node8
17+
- node_js: 6
18+
nodeTxzKey: node6
19+
npmTxzKey: npm-node6
20+
21+
env:
22+
matrix:
23+
- abi: freebsd:11:x86:64
24+
- abi: freebsd:11:x86:32
25+
jailName: j11i386
26+
execPrefix: cbsd jexec jname=j11i386
27+
28+
env:
29+
GH_API_TOKEN: ENCRYPTED[5e482f417304528148bb96eca8d030eacd6ab9972d482485fc4d42907283b995f658b351e0676e9493a37d815398f541]
30+
31+
prepare_script:
32+
- sed -i '' 's/quarterly/latest/g' /etc/pkg/FreeBSD.conf
33+
- |
34+
if test "$abi" = "freebsd:11:x86:32"; then
35+
./scripts/configure_freebsd_ci_jail.sh $jailName $CIRRUS_WORKING_DIR;
36+
$execPrefix sed -i -- '' 's/quarterly/latest/g' /etc/pkg/FreeBSD.conf;
37+
$execPrefix pkg update -f;
38+
$execPrefix pkg install -y python2 > /dev/null;
39+
fi
40+
- $execPrefix pkg install -y c-ares gmake icu libnghttp2 libuv git > /dev/null
41+
- |
42+
fetch http://pkg.freebsd.org/$abi/latest/All/ -o list
43+
nodeTxz=$(sed -n "/\"$nodeTxzKey/s/.*\"\($nodeTxzKey[^\"]*\).*/\1/p" list)
44+
npmTxz=$(sed -n "/\"$npmTxzKey/s/.*\"\($npmTxzKey[^\"]*\).*/\1/p" list)
45+
$execPrefix pkg add http://pkg.freebsd.org/$abi/latest/All/$nodeTxz
46+
$execPrefix pkg add http://pkg.freebsd.org/$abi/latest/All/$npmTxz
47+
- $execPrefix node --version
48+
- $execPrefix npm --version
49+
- $execPrefix clang++ --version
50+
51+
build_script:
52+
- |
53+
if test "$abi" = "freebsd:11:x86:32"; then
54+
changeDir="cd /etc/skel &&"
55+
fi
56+
echo "$changeDir npm install --unsafe-perm" | $execPrefix /bin/sh
57+
58+
publish_script:
59+
- |
60+
if test "$CIRRUS_TAG" != ""; then
61+
for file in `ls vendor/**/*.node`; do
62+
parent=${file%/*};
63+
name=${parent##*/};
64+
fullyQualifiedName="$(pwd)/$parent/${name}_binding.node";
65+
mv "$file" "$parent/${name}_binding.node";
66+
echo -e "New filename\072 $fullyQualifiedName";
67+
./scripts/upload-github-release-asset.sh github_api_token=$GH_API_TOKEN owner=sass repo=node-sass tag=$CIRRUS_TAG filename=$fullyQualifiedName;
68+
done
69+
fi

scripts/configure_freebsd_ci_jail.sh

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
#!/usr/bin/env sh
2+
3+
set -o xtrace
4+
5+
jailName=$1
6+
skelDirectory=$2
7+
cbsd_workdir=/usr/jails
8+
jail_arch="i386"
9+
jail_ver="11.2"
10+
11+
pkg install -y cbsd
12+
13+
# determine uplink ip address
14+
# determine uplink iface
15+
auto_iface=$( /sbin/route -n get 0.0.0.0 |/usr/bin/awk '/interface/{print $2}' )
16+
my_ipv4=$( /sbin/ifconfig ${auto_iface} | /usr/bin/awk '/inet [0-9]+/{print $2}' )
17+
18+
if [ -z "${my_ipv4}" ]; then
19+
echo "IPv4 not detected"
20+
exit 1
21+
fi
22+
23+
echo "Writing '${jailName}' configuration file"
24+
cat > /tmp/${jailName}.jconf << EOF
25+
jname="${jailName}"
26+
path="${cbsd_workdir}/${jailName}"
27+
host_hostname="${jailName}.my.domain"
28+
ip4_addr="${my_ipv4}"
29+
mount_devfs="1"
30+
allow_mount="1"
31+
allow_devfs="1"
32+
allow_nullfs="1"
33+
allow_raw_sockets="1"
34+
mount_fstab="${cbsd_workdir}/jails-fstab/fstab.${jailName}"
35+
arch="${jail_arch}"
36+
mkhostsfile="1"
37+
devfs_ruleset="4"
38+
ver="${jail_ver}"
39+
basename=""
40+
baserw="0"
41+
mount_src="0"
42+
mount_obj="0"
43+
mount_kernel="0"
44+
mount_ports="1"
45+
astart="1"
46+
data="${cbsd_workdir}/jails-data/${jailName}-data"
47+
vnet="0"
48+
applytpl="1"
49+
mdsize="0"
50+
rcconf="${cbsd_workdir}/jails-rcconf/rc.conf_${jailName}"
51+
floatresolv="1"
52+
exec_poststart="0"
53+
exec_poststop=""
54+
exec_prestart="0"
55+
exec_prestop="0"
56+
exec_master_poststart="0"
57+
exec_master_poststop="0"
58+
exec_master_prestart="0"
59+
exec_master_prestop="0"
60+
pkg_bootstrap="1"
61+
interface="0"
62+
jailskeldir="$skelDirectory"
63+
exec_start="/bin/sh /etc/rc"
64+
exec_stop="/bin/sh /etc/rc.shutdown"
65+
EOF
66+
67+
echo "Initializing cbsd environment"
68+
env workdir=${cbsd_workdir} /usr/local/cbsd/sudoexec/initenv /usr/local/cbsd/share/initenv.conf
69+
70+
echo "Creating ${jailName}"
71+
cbsd jcreate jconf=/tmp/${jailName}.jconf inter=0
72+
cbsd jailscp /etc/resolv.conf ${jailName}:/etc/resolv.conf
73+
74+
cat > ~cbsd/jails-fstab/fstab.${jailName}.local <<EOF
75+
${skelDirectory} /etc/skel nullfs rw 0 0
76+
EOF
77+
78+
cbsd jstart jname=${jailName} inter=0
79+
80+
echo "${jailName} created"
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
#!/usr/bin/env sh
2+
#
3+
# Modified version of: https://gist.github.com/stefanbuck/ce788fee19ab6eb0b4447a85fc99f447
4+
#
5+
#
6+
# This script accepts the following parameters:
7+
#
8+
# * owner
9+
# * repo
10+
# * tag
11+
# * filename
12+
# * github_api_token
13+
#
14+
# Script to upload a release asset using the GitHub API v3.
15+
#
16+
# Example:
17+
#
18+
# upload-github-release-asset.sh github_api_token=TOKEN owner=stefanbuck repo=playground tag=v0.1.0 filename=./build.zip
19+
#
20+
21+
set -e
22+
23+
# Validate settings.
24+
[ "$TRACE" ] && set -x
25+
26+
for line in "$@"; do
27+
eval "$line"
28+
done
29+
30+
# Define variables.
31+
GH_API="https://api.github.com"
32+
GH_REPO="$GH_API/repos/$owner/$repo"
33+
GH_RELEASES="$GH_REPO/releases"
34+
GH_TAGS="$GH_RELEASES/tags/$tag"
35+
AUTH="Authorization: token $github_api_token"
36+
37+
if test "$tag" == "LATEST"; then
38+
GH_TAGS="$GH_REPO/releases/latest"
39+
fi
40+
41+
# Validate token.
42+
curl -o /dev/null -sH "$AUTH" $GH_REPO || { echo "Error: Invalid repo, token or network issue!"; exit 1; }
43+
44+
# Create a release from tag if it does not exist.
45+
curl -s -d "{\"tag_name\":\"$tag\"}" -H "$AUTH" "$GH_RELEASES" > /dev/null
46+
47+
# Read asset tags.
48+
response=$(curl -sH "$AUTH" $GH_TAGS)
49+
50+
# Get ID of the asset based on given filename.
51+
eval "$(echo "$response" | grep -m 1 "id.:" | grep -w id | tr : = | tr -cd '[[:alnum:]]=')"
52+
[ -n "$id" ] || { echo "Error: Failed to get release id for tag: $tag"; echo "$response" | awk 'length($0)<100' >&2; exit 1; }
53+
54+
# Upload asset
55+
echo "Uploading asset... "
56+
57+
# Construct url
58+
GH_ASSET="https://uploads.github.com/repos/$owner/$repo/releases/$id/assets?name=$(basename $filename)"
59+
60+
curl "$GITHUB_OAUTH_BASIC" --data-binary @"$filename" -H "$AUTH" -H "Content-Type: application/octet-stream" $GH_ASSET

0 commit comments

Comments
 (0)