提交 605139f4 编写于 作者: J Joao Moreno

cleanup snap build

上级 c850728d
pat
*.js
\ No newline at end of file
pat
\ No newline at end of file
#!/bin/bash
. ./scripts/env.sh
yarn gulp "vscode-linux-$ARCH-build-snap"
# Variables
PLATFORM_LINUX="linux-$ARCH"
PLATFORM_SNAP="linux-snap-$ARCH"
REPO="`pwd`"
ROOT="$REPO/.."
BUILDNAME="VSCode-$PLATFORM_LINUX"
BUILD="$ROOT/$BUILDNAME"
PACKAGEJSON="$BUILD/resources/app/package.json"
VERSION=$(node -p "require(\"$PACKAGEJSON\").version")
SNAP_FILENAME="$(ls $REPO/.build/linux/snap/$ARCH/ | grep .snap)"
SNAP_PATH="$REPO/.build/linux/snap/$ARCH/$SNAP_FILENAME"
node build/tfs/common/publish.js $VSCODE_QUALITY $PLATFORM_SNAP package $SNAP_FILENAME $VERSION true $SNAP_PATH
if [ -z "$VSCODE_QUALITY" ]; then
echo "VSCODE_QUALITY is not set, skipping repo package publish"
else
if [ -z "$SNAPCRAFT_LOGIN" ] || [ -z "$SNAPCRAFT_MACAROON" ] || [ -z "$SNAPCRAFT_UNBOUND_DISCHARGE" ]; then
echo "SNAPCRAFT* env vars not set, skipping repo package publish"
else
IS_FROZEN="$(node build/tfs/linux/frozen-check.js $VSCODE_QUALITY)"
AUTO_RELEASE=0
if [ "$IS_FROZEN" != "true" ]; then
if [ "$BUILD_SOURCEBRANCH" = "master" ] || [ "$BUILD_SOURCEBRANCH" = "refs/heads/master" ]; then
if [[ $BUILD_QUEUEDBY = *"Project Collection Service Accounts"* || $BUILD_QUEUEDBY = *"Microsoft.VisualStudio.Services.TFS"* ]]; then
if [ "$VSCODE_QUALITY" = "insider" ]; then
AUTO_RELEASE=1
fi
fi
fi
fi
LOGIN_FILE=snapcraft_login_file
echo -e '[login.ubuntu.com]\nmacaroon = '$SNAPCRAFT_MACAROON'\nunbound_discharge = '$SNAPCRAFT_UNBOUND_DISCHARGE'\nemail = '$VSCODE_SNAP_LOGIN'\n' > $LOGIN_FILE
snapcraft login --with $LOGIN_FILE
if [ "$AUTO_RELEASE" = "1" ]; then
echo "Pushing and releasing to Snap Store stable channel"
snapcraft push $SNAP_PATH --release stable
else
echo "Pushing to Snap Store"
snapcraft push $SNAP_PATH
fi
fi
fi
\ No newline at end of file
......@@ -16,26 +16,26 @@ steps:
- script: |
set -e
(cd build && yarn)
REPO="$(pwd)"
ARCH="$(VSCODE_ARCH)"
SNAP_ROOT="$REPO/.build/linux/snap/$ARCH"
# Install build dependencies
(cd build && yarn)
# Unpack snap tarball artifact, in order to preserve file perms
SNAP_TARBALL_PATH="$REPO/.build/linux/snap-tarball/snap-$ARCH.tar.gz"
(cd .build/linux && tar -xzf $SNAP_TARBALL_PATH)
ls -la "$SNAP_ROOT"
# Create snap package
BUILD_VERSION="$(date +%s)"
SNAP_FILENAME="code-$VSCODE_QUALITY-$BUILD_VERSION.snap"
PACKAGEJSON="$(ls $SNAP_ROOT/code*/usr/share/code*/resources/app/package.json)"
VERSION=$(node -p "require(\"$PACKAGEJSON\").version")
SNAP_PATH="$SNAP_ROOT/$SNAP_FILENAME"
(cd $SNAP_ROOT/code-* && snapcraft snap --output "$SNAP_PATH")
# Publish snap package
AZURE_DOCUMENTDB_MASTERKEY="$(AZURE_DOCUMENTDB_MASTERKEY)" \
AZURE_STORAGE_ACCESS_KEY_2="$(AZURE_STORAGE_ACCESS_KEY_2)" \
MOONCAKE_STORAGE_ACCESS_KEY="$(MOONCAKE_STORAGE_ACCESS_KEY)" \
......
FROM microsoft/vsts-agent:ubuntu-16.04-standard
MAINTAINER Daniel Imms <daimms@microsoft.com>
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update
# Dependencies
RUN apt-get install -y build-essential \
gcc-multilib \
g++-multilib \
git \
dpkg-dev \
zip \
rpm \
createrepo \
python-gtk2 \
jq \
xvfb \
fakeroot \
libgtk2.0-0 \
libgconf-2-4 \
libnss3 \
libasound2 \
libxtst6 \
libfuse2 \
libnotify-bin \
libx11-dev \
libxss1 \
libx11-xcb-dev \
libxkbfile-dev \
bc \
bsdmainutils \
libsecret-1-dev
# Xvfb
# Thanks https://medium.com/@griggheo/running-headless-selenium-webdriver-tests-in-docker-containers-342fdbabf756
ADD ./xvfb.init /etc/init.d/xvfb
RUN chmod +x /etc/init.d/xvfb
RUN update-rc.d xvfb defaults
# dbus
RUN ln -sf /bin/dbus-daemon /usr/bin/dbus-daemon
# nvm
ENV NVM_DIR /usr/local/nvm
RUN curl https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
# snapcraft
# From https://github.com/snapcore/snapcraft/tree/master/docker
RUN apt-get update && \
apt-get dist-upgrade --yes && \
apt-get install --yes \
curl sudo squashfs-tools && \
curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/core' | jq '.download_url' -r) --output core.snap && \
mkdir -p /snap/core && unsquashfs -d /snap/core/current core.snap && rm core.snap && \
curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/snapcraft?channel=beta' | jq '.download_url' -r) --output snapcraft.snap && \
mkdir -p /snap/snapcraft && unsquashfs -d /snap/snapcraft/current snapcraft.snap && rm snapcraft.snap && \
mkdir -p /snap/bin && \
echo "#!/bin/sh" > /snap/bin/snapcraft && \
echo 'exec $SNAP/usr/bin/python3 $SNAP/bin/snapcraft "$@"' >> /snap/bin/snapcraft && \
chmod a+x /snap/bin/snapcraft && \
apt-get autoclean --yes && \
apt-get clean --yes
ENV SNAP=/snap/snapcraft/current
ENV SNAP_NAME=snapcraft
ENV SNAP_VERSION=beta
ENV PATH=/snap/bin:$PATH
# Required by click.
ENV LC_ALL C.UTF-8
CMD (service xvfb start; service dbus start; export DISPLAY=:10; ./start.sh "16.04")
\ No newline at end of file
#!/bin/bash
if [ ! -f pat ]; then
echo "Error: file pat not found"
exit 1
fi
docker run \
-e VSTS_ACCOUNT="monacotools" \
-e VSTS_TOKEN="$(cat pat)" \
-e VSTS_AGENT="tb-lnx-x64-snap" \
-e VSTS_POOL="linux-x64-ubuntu-16-04-snap" \
-e VSTS_WORK="/var/vsts/work" \
--name "tb-lnx-x64-snap" \
-it daimms-snap-agent:latest
\ No newline at end of file
#!/bin/bash
#
# /etc/rc.d/init.d/xvfbd
#
# chkconfig: 345 95 28
# description: Starts/Stops X Virtual Framebuffer server
# processname: Xvfb
#
### BEGIN INIT INFO
# Provides: xvfb
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start xvfb at boot time
# Description: Enable xvfb provided by daemon.
### END INIT INFO
[ "${NETWORKING}" = "no" ] && exit 0
PROG="/usr/bin/Xvfb"
PROG_OPTIONS=":10 -ac"
PROG_OUTPUT="/tmp/Xvfb.out"
case "$1" in
start)
echo "Starting : X Virtual Frame Buffer "
$PROG $PROG_OPTIONS>>$PROG_OUTPUT 2>&1 &
disown -ar
;;
stop)
echo "Shutting down : X Virtual Frame Buffer"
killproc $PROG
RETVAL=$?
[ $RETVAL -eq 0 ] && /bin/rm -f /var/lock/subsys/Xvfb
/var/run/Xvfb.pid
echo
;;
restart|reload)
$0 stop
$0 start
RETVAL=$?
;;
status)
status Xvfb
RETVAL=$?
;;
*)
echo $"Usage: $0 (start|stop|restart|reload|status)"
exit 1
esac
exit $RETVAL
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册