sforkowany z mirror/docker-baseimage-cloud9
rodzic
3ed5bbfbc5
commit
9ba61d3828
25
Dockerfile
25
Dockerfile
|
@ -1,4 +1,4 @@
|
|||
FROM lsiobase/ubuntu:bionic
|
||||
FROM lsiobase/alpine:3.9
|
||||
|
||||
# set version label
|
||||
ARG BUILD_DATE
|
||||
|
@ -7,21 +7,36 @@ LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DA
|
|||
LABEL maintainer="thelamer"
|
||||
ARG NPM_CONFIG_UNSAFE_PERM=true
|
||||
|
||||
# add local files
|
||||
COPY /root /
|
||||
|
||||
RUN \
|
||||
echo "**** install build packages ****" && \
|
||||
apt-get update && \
|
||||
apt-get install -y \
|
||||
apk add --no-cache \
|
||||
g++ \
|
||||
gcc \
|
||||
git \
|
||||
libgcc \
|
||||
libxml2-dev \
|
||||
make \
|
||||
python && \
|
||||
nodejs \
|
||||
openssl-dev \
|
||||
python \
|
||||
tmux
|
||||
RUN \
|
||||
echo "**** Compile Cloud9 from source ****" && \
|
||||
git clone --depth 1 \
|
||||
https://github.com/c9/core.git c9sdk && \
|
||||
cd c9sdk && \
|
||||
sed -i \
|
||||
's/node-pty-prebuilt/node-pty/g' \
|
||||
plugins/node_modules/vfs-local/localfs.js && \
|
||||
mkdir -p /c9bins && \
|
||||
HOME=/c9bins scripts/install-sdk.sh && \
|
||||
sed -i \
|
||||
'/$URL/c\bash /install.sh' \
|
||||
scripts/install-sdk.sh && \
|
||||
HOME=/c9bins scripts/install-sdk.sh
|
||||
RUN \
|
||||
echo "**** Restructure files for copy ****" && \
|
||||
mkdir -p \
|
||||
/buildout && \
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
FROM lsiobase/ubuntu:arm64v8-bionic
|
||||
FROM lsiobase/alpine:arm64v8-3.9
|
||||
|
||||
# set version label
|
||||
ARG BUILD_DATE
|
||||
|
@ -7,21 +7,36 @@ LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DA
|
|||
LABEL maintainer="thelamer"
|
||||
ARG NPM_CONFIG_UNSAFE_PERM=true
|
||||
|
||||
# add local files
|
||||
COPY /root /
|
||||
|
||||
RUN \
|
||||
echo "**** install build packages ****" && \
|
||||
apt-get update && \
|
||||
apt-get install -y \
|
||||
apk add --no-cache \
|
||||
g++ \
|
||||
gcc \
|
||||
git \
|
||||
libgcc \
|
||||
libxml2-dev \
|
||||
make \
|
||||
python && \
|
||||
nodejs \
|
||||
openssl-dev \
|
||||
python \
|
||||
tmux
|
||||
RUN \
|
||||
echo "**** Compile Cloud9 from source ****" && \
|
||||
git clone --depth 1 \
|
||||
https://github.com/c9/core.git c9sdk && \
|
||||
cd c9sdk && \
|
||||
sed -i \
|
||||
's/node-pty-prebuilt/node-pty/g' \
|
||||
plugins/node_modules/vfs-local/localfs.js && \
|
||||
mkdir -p /c9bins && \
|
||||
HOME=/c9bins scripts/install-sdk.sh && \
|
||||
sed -i \
|
||||
'/$URL/c\bash /install.sh' \
|
||||
scripts/install-sdk.sh && \
|
||||
HOME=/c9bins scripts/install-sdk.sh
|
||||
RUN \
|
||||
echo "**** Restructure files for copy ****" && \
|
||||
mkdir -p \
|
||||
/buildout && \
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
FROM lsiobase/ubuntu:arm32v7-bionic
|
||||
FROM lsiobase/alpine:arm32v7-3.9
|
||||
|
||||
# set version label
|
||||
ARG BUILD_DATE
|
||||
|
@ -7,21 +7,36 @@ LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DA
|
|||
LABEL maintainer="thelamer"
|
||||
ARG NPM_CONFIG_UNSAFE_PERM=true
|
||||
|
||||
# add local files
|
||||
COPY /root /
|
||||
|
||||
RUN \
|
||||
echo "**** install build packages ****" && \
|
||||
apt-get update && \
|
||||
apt-get install -y \
|
||||
apk add --no-cache \
|
||||
g++ \
|
||||
gcc \
|
||||
git \
|
||||
libgcc \
|
||||
libxml2-dev \
|
||||
make \
|
||||
python && \
|
||||
nodejs \
|
||||
openssl-dev \
|
||||
python \
|
||||
tmux
|
||||
RUN \
|
||||
echo "**** Compile Cloud9 from source ****" && \
|
||||
git clone --depth 1 \
|
||||
https://github.com/c9/core.git c9sdk && \
|
||||
cd c9sdk && \
|
||||
sed -i \
|
||||
's/node-pty-prebuilt/node-pty/g' \
|
||||
plugins/node_modules/vfs-local/localfs.js && \
|
||||
mkdir -p /c9bins && \
|
||||
HOME=/c9bins scripts/install-sdk.sh && \
|
||||
sed -i \
|
||||
'/$URL/c\bash /install.sh' \
|
||||
scripts/install-sdk.sh && \
|
||||
HOME=/c9bins scripts/install-sdk.sh
|
||||
RUN \
|
||||
echo "**** Restructure files for copy ****" && \
|
||||
mkdir -p \
|
||||
/buildout && \
|
||||
|
|
|
@ -10,9 +10,6 @@ pipeline {
|
|||
environment {
|
||||
BUILDS_DISCORD=credentials('build_webhook_url')
|
||||
GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab')
|
||||
EXT_GIT_BRANCH = 'master'
|
||||
EXT_USER = 'c9'
|
||||
EXT_REPO = 'core'
|
||||
BUILD_VERSION_ARG = 'CLOUD9_VERSION'
|
||||
LS_USER = 'linuxserver'
|
||||
LS_REPO = 'docker-baseimage-cloud9'
|
||||
|
@ -20,16 +17,9 @@ pipeline {
|
|||
DOCKERHUB_IMAGE = 'lsiobase/cloud9'
|
||||
DEV_DOCKERHUB_IMAGE = 'lsiodev/cloud9-base'
|
||||
PR_DOCKERHUB_IMAGE = 'lspipepr/cloud9-base'
|
||||
DIST_IMAGE = 'ubuntu'
|
||||
DIST_IMAGE = 'alpine'
|
||||
MULTIARCH='true'
|
||||
CI='true'
|
||||
CI_WEB='false'
|
||||
CI_PORT='8000'
|
||||
CI_SSL='false'
|
||||
CI_DELAY='120'
|
||||
CI_DOCKERENV='TZ=US/Pacific'
|
||||
CI_AUTH='user:password'
|
||||
CI_WEBPATH=''
|
||||
CI='false'
|
||||
}
|
||||
stages {
|
||||
// Setup all the basic environment variables needed for the build
|
||||
|
@ -38,7 +28,7 @@ pipeline {
|
|||
script{
|
||||
env.EXIT_STATUS = ''
|
||||
env.LS_RELEASE = sh(
|
||||
script: '''docker run --rm alexeiled/skopeo sh -c 'skopeo inspect docker://docker.io/'${DOCKERHUB_IMAGE}':files 2>/dev/null' | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''',
|
||||
script: '''docker run --rm alexeiled/skopeo sh -c 'skopeo inspect docker://docker.io/'${DOCKERHUB_IMAGE}':files-alpine 2>/dev/null' | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''',
|
||||
returnStdout: true).trim()
|
||||
env.LS_RELEASE_NOTES = sh(
|
||||
script: '''cat readme-vars.yml | awk -F \\" '/date: "[0-9][0-9].[0-9][0-9].[0-9][0-9]:/ {print $4;exit;}' | sed -E ':a;N;$!ba;s/\\r{0,1}\\n/\\\\n/g' ''',
|
||||
|
@ -102,23 +92,16 @@ pipeline {
|
|||
/* ########################
|
||||
External Release Tagging
|
||||
######################## */
|
||||
// If this is a github commit trigger determine the current commit at head
|
||||
stage("Set ENV github_commit"){
|
||||
steps{
|
||||
script{
|
||||
env.EXT_RELEASE = sh(
|
||||
script: '''curl -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/commits/${EXT_GIT_BRANCH} | jq -r '. | .sha' | cut -c1-8 ''',
|
||||
returnStdout: true).trim()
|
||||
}
|
||||
}
|
||||
}
|
||||
// If this is a github commit trigger Set the external release link
|
||||
stage("Set ENV commit_link"){
|
||||
steps{
|
||||
script{
|
||||
env.RELEASE_LINK = 'https://github.com/' + env.EXT_USER + '/' + env.EXT_REPO + '/commit/' + env.EXT_RELEASE
|
||||
}
|
||||
}
|
||||
// If this is a custom command to determine version use that command
|
||||
stage("Set tag custom bash"){
|
||||
steps{
|
||||
script{
|
||||
env.EXT_RELEASE = sh(
|
||||
script: ''' echo c4d1c59d-alpine ''',
|
||||
returnStdout: true).trim()
|
||||
env.RELEASE_LINK = 'custom_command'
|
||||
}
|
||||
}
|
||||
}
|
||||
// Sanitize the release tag and strip illegal docker or github characters
|
||||
stage("Sanitize tag"){
|
||||
|
@ -130,10 +113,10 @@ pipeline {
|
|||
}
|
||||
}
|
||||
}
|
||||
// If this is a files build use live docker endpoints
|
||||
// If this is a files-alpine build use live docker endpoints
|
||||
stage("Set ENV live build"){
|
||||
when {
|
||||
branch "files"
|
||||
branch "files-alpine"
|
||||
environment name: 'CHANGE_ID', value: ''
|
||||
}
|
||||
steps {
|
||||
|
@ -151,7 +134,7 @@ pipeline {
|
|||
// If this is a dev build use dev docker endpoints
|
||||
stage("Set ENV dev build"){
|
||||
when {
|
||||
not {branch "files"}
|
||||
not {branch "files-alpine"}
|
||||
environment name: 'CHANGE_ID', value: ''
|
||||
}
|
||||
steps {
|
||||
|
@ -218,7 +201,7 @@ pipeline {
|
|||
// Use helper containers to render templated files
|
||||
stage('Update-Templates') {
|
||||
when {
|
||||
branch "files"
|
||||
branch "files-alpine"
|
||||
environment name: 'CHANGE_ID', value: ''
|
||||
expression {
|
||||
env.CONTAINER_NAME != null
|
||||
|
@ -229,15 +212,15 @@ pipeline {
|
|||
set -e
|
||||
TEMPDIR=$(mktemp -d)
|
||||
docker pull linuxserver/jenkins-builder:latest
|
||||
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=files -v ${TEMPDIR}:/ansible/jenkins linuxserver/jenkins-builder:latest
|
||||
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=files-alpine -v ${TEMPDIR}:/ansible/jenkins linuxserver/jenkins-builder:latest
|
||||
docker pull linuxserver/doc-builder:latest
|
||||
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=files -v ${TEMPDIR}:/ansible/readme linuxserver/doc-builder:latest
|
||||
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=files-alpine -v ${TEMPDIR}:/ansible/readme linuxserver/doc-builder:latest
|
||||
if [ "$(md5sum ${TEMPDIR}/${LS_REPO}/Jenkinsfile | awk '{ print $1 }')" != "$(md5sum Jenkinsfile | awk '{ print $1 }')" ] || \
|
||||
[ "$(md5sum ${TEMPDIR}/${CONTAINER_NAME}/README.md | awk '{ print $1 }')" != "$(md5sum README.md | awk '{ print $1 }')" ] || \
|
||||
[ "$(cat ${TEMPDIR}/${LS_REPO}/LICENSE | md5sum | cut -c1-8)" != "${LICENSE_TAG}" ]; then
|
||||
mkdir -p ${TEMPDIR}/repo
|
||||
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
|
||||
git --git-dir ${TEMPDIR}/repo/${LS_REPO}/.git checkout -f files
|
||||
git --git-dir ${TEMPDIR}/repo/${LS_REPO}/.git checkout -f files-alpine
|
||||
cp ${TEMPDIR}/${CONTAINER_NAME}/README.md ${TEMPDIR}/repo/${LS_REPO}/
|
||||
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/
|
||||
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/LICENSE ${TEMPDIR}/repo/${LS_REPO}/
|
||||
|
@ -269,7 +252,7 @@ pipeline {
|
|||
// Exit the build if the Templated files were just updated
|
||||
stage('Template-exit') {
|
||||
when {
|
||||
branch "files"
|
||||
branch "files-alpine"
|
||||
environment name: 'CHANGE_ID', value: ''
|
||||
environment name: 'FILES_UPDATED', value: 'true'
|
||||
expression {
|
||||
|
@ -311,7 +294,7 @@ pipeline {
|
|||
}
|
||||
stage('Build ARMHF') {
|
||||
agent {
|
||||
label 'ARMHF'
|
||||
label 'X86-64-MULTI'
|
||||
}
|
||||
steps {
|
||||
withCredentials([
|
||||
|
@ -338,7 +321,7 @@ pipeline {
|
|||
}
|
||||
stage('Build ARM64') {
|
||||
agent {
|
||||
label 'ARM64'
|
||||
label 'X86-64-MULTI'
|
||||
}
|
||||
steps {
|
||||
withCredentials([
|
||||
|
@ -365,89 +348,6 @@ pipeline {
|
|||
}
|
||||
}
|
||||
}
|
||||
// Take the image we just built and dump package versions for comparison
|
||||
stage('Update-packages') {
|
||||
when {
|
||||
branch "files"
|
||||
environment name: 'CHANGE_ID', value: ''
|
||||
environment name: 'EXIT_STATUS', value: ''
|
||||
}
|
||||
steps {
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
TEMPDIR=$(mktemp -d)
|
||||
if [ "${MULTIARCH}" == "true" ]; then
|
||||
LOCAL_CONTAINER=${IMAGE}:amd64-${META_TAG}
|
||||
else
|
||||
LOCAL_CONTAINER=${IMAGE}:${META_TAG}
|
||||
fi
|
||||
if [ "${DIST_IMAGE}" == "alpine" ]; then
|
||||
docker run --rm --entrypoint '/bin/sh' -v ${TEMPDIR}:/tmp ${LOCAL_CONTAINER} -c '\
|
||||
apk info -v > /tmp/package_versions.txt && \
|
||||
sort -o /tmp/package_versions.txt /tmp/package_versions.txt && \
|
||||
chmod 777 /tmp/package_versions.txt'
|
||||
elif [ "${DIST_IMAGE}" == "ubuntu" ]; then
|
||||
docker run --rm --entrypoint '/bin/sh' -v ${TEMPDIR}:/tmp ${LOCAL_CONTAINER} -c '\
|
||||
apt list -qq --installed | sed "s#/.*now ##g" | cut -d" " -f1 > /tmp/package_versions.txt && \
|
||||
sort -o /tmp/package_versions.txt /tmp/package_versions.txt && \
|
||||
chmod 777 /tmp/package_versions.txt'
|
||||
fi
|
||||
NEW_PACKAGE_TAG=$(md5sum ${TEMPDIR}/package_versions.txt | cut -c1-8 )
|
||||
echo "Package tag sha from current packages in buit container is ${NEW_PACKAGE_TAG} comparing to old ${PACKAGE_TAG} from github"
|
||||
if [ "${NEW_PACKAGE_TAG}" != "${PACKAGE_TAG}" ]; then
|
||||
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/${LS_REPO}
|
||||
git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f files
|
||||
cp ${TEMPDIR}/package_versions.txt ${TEMPDIR}/${LS_REPO}/
|
||||
cd ${TEMPDIR}/${LS_REPO}/
|
||||
wait
|
||||
git add package_versions.txt
|
||||
git commit -m 'Bot Updating Package Versions'
|
||||
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
|
||||
echo "true" > /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
echo "Package tag updated, stopping build process"
|
||||
else
|
||||
echo "false" > /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
echo "Package tag is same as previous continue with build process"
|
||||
fi
|
||||
rm -Rf ${TEMPDIR}'''
|
||||
script{
|
||||
env.PACKAGE_UPDATED = sh(
|
||||
script: '''cat /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER}''',
|
||||
returnStdout: true).trim()
|
||||
}
|
||||
}
|
||||
}
|
||||
// Exit the build if the package file was just updated
|
||||
stage('PACKAGE-exit') {
|
||||
when {
|
||||
branch "files"
|
||||
environment name: 'CHANGE_ID', value: ''
|
||||
environment name: 'PACKAGE_UPDATED', value: 'true'
|
||||
environment name: 'EXIT_STATUS', value: ''
|
||||
}
|
||||
steps {
|
||||
script{
|
||||
env.EXIT_STATUS = 'ABORTED'
|
||||
}
|
||||
}
|
||||
}
|
||||
// Exit the build if this is just a package check and there are no changes to push
|
||||
stage('PACKAGECHECK-exit') {
|
||||
when {
|
||||
branch "files"
|
||||
environment name: 'CHANGE_ID', value: ''
|
||||
environment name: 'PACKAGE_UPDATED', value: 'false'
|
||||
environment name: 'EXIT_STATUS', value: ''
|
||||
expression {
|
||||
params.PACKAGE_CHECK == 'true'
|
||||
}
|
||||
}
|
||||
steps {
|
||||
script{
|
||||
env.EXIT_STATUS = 'ABORTED'
|
||||
}
|
||||
}
|
||||
}
|
||||
/* #######
|
||||
Testing
|
||||
####### */
|
||||
|
@ -475,6 +375,7 @@ pipeline {
|
|||
docker tag lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
|
||||
fi
|
||||
docker run --rm \
|
||||
--shm-size=1gb \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
-e IMAGE=\"${IMAGE}\" \
|
||||
-e DELAY_START=\"${CI_DELAY}\" \
|
||||
|
@ -518,12 +419,12 @@ pipeline {
|
|||
sh '''#! /bin/bash
|
||||
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
|
||||
'''
|
||||
sh "docker tag ${IMAGE}:${META_TAG} ${IMAGE}:files"
|
||||
sh "docker push ${IMAGE}:files"
|
||||
sh "docker tag ${IMAGE}:${META_TAG} ${IMAGE}:files-alpine"
|
||||
sh "docker push ${IMAGE}:files-alpine"
|
||||
sh "docker push ${IMAGE}:${META_TAG}"
|
||||
sh '''docker rmi \
|
||||
${IMAGE}:${META_TAG} \
|
||||
${IMAGE}:files || :'''
|
||||
${IMAGE}:files-alpine || :'''
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -553,24 +454,24 @@ pipeline {
|
|||
docker tag lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
|
||||
docker tag lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
|
||||
fi'''
|
||||
sh "docker tag ${IMAGE}:amd64-${META_TAG} ${IMAGE}:amd64-files"
|
||||
sh "docker tag ${IMAGE}:arm32v7-${META_TAG} ${IMAGE}:arm32v7-files"
|
||||
sh "docker tag ${IMAGE}:arm64v8-${META_TAG} ${IMAGE}:arm64v8-files"
|
||||
sh "docker tag ${IMAGE}:amd64-${META_TAG} ${IMAGE}:amd64-files-alpine"
|
||||
sh "docker tag ${IMAGE}:arm32v7-${META_TAG} ${IMAGE}:arm32v7-files-alpine"
|
||||
sh "docker tag ${IMAGE}:arm64v8-${META_TAG} ${IMAGE}:arm64v8-files-alpine"
|
||||
sh "docker push ${IMAGE}:amd64-${META_TAG}"
|
||||
sh "docker push ${IMAGE}:arm32v7-${META_TAG}"
|
||||
sh "docker push ${IMAGE}:arm64v8-${META_TAG}"
|
||||
sh "docker push ${IMAGE}:amd64-files"
|
||||
sh "docker push ${IMAGE}:arm32v7-files"
|
||||
sh "docker push ${IMAGE}:arm64v8-files"
|
||||
sh "docker manifest push --purge ${IMAGE}:files || :"
|
||||
sh "docker manifest create ${IMAGE}:files ${IMAGE}:amd64-files ${IMAGE}:arm32v7-files ${IMAGE}:arm64v8-files"
|
||||
sh "docker manifest annotate ${IMAGE}:files ${IMAGE}:arm32v7-files --os linux --arch arm"
|
||||
sh "docker manifest annotate ${IMAGE}:files ${IMAGE}:arm64v8-files --os linux --arch arm64 --variant v8"
|
||||
sh "docker push ${IMAGE}:amd64-files-alpine"
|
||||
sh "docker push ${IMAGE}:arm32v7-files-alpine"
|
||||
sh "docker push ${IMAGE}:arm64v8-files-alpine"
|
||||
sh "docker manifest push --purge ${IMAGE}:files-alpine || :"
|
||||
sh "docker manifest create ${IMAGE}:files-alpine ${IMAGE}:amd64-files-alpine ${IMAGE}:arm32v7-files-alpine ${IMAGE}:arm64v8-files-alpine"
|
||||
sh "docker manifest annotate ${IMAGE}:files-alpine ${IMAGE}:arm32v7-files-alpine --os linux --arch arm"
|
||||
sh "docker manifest annotate ${IMAGE}:files-alpine ${IMAGE}:arm64v8-files-alpine --os linux --arch arm64 --variant v8"
|
||||
sh "docker manifest push --purge ${IMAGE}:${META_TAG} || :"
|
||||
sh "docker manifest create ${IMAGE}:${META_TAG} ${IMAGE}:amd64-${META_TAG} ${IMAGE}:arm32v7-${META_TAG} ${IMAGE}:arm64v8-${META_TAG}"
|
||||
sh "docker manifest annotate ${IMAGE}:${META_TAG} ${IMAGE}:arm32v7-${META_TAG} --os linux --arch arm"
|
||||
sh "docker manifest annotate ${IMAGE}:${META_TAG} ${IMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8"
|
||||
sh "docker manifest push --purge ${IMAGE}:files"
|
||||
sh "docker manifest push --purge ${IMAGE}:files-alpine"
|
||||
sh "docker manifest push --purge ${IMAGE}:${META_TAG}"
|
||||
}
|
||||
}
|
||||
|
@ -578,7 +479,7 @@ pipeline {
|
|||
// If this is a public release tag it in the LS Github
|
||||
stage('Github-Tag-Push-Release') {
|
||||
when {
|
||||
branch "files"
|
||||
branch "files-alpine"
|
||||
expression {
|
||||
env.LS_RELEASE != env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||
}
|
||||
|
@ -590,16 +491,16 @@ pipeline {
|
|||
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
|
||||
-d '{"tag":"'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\
|
||||
"object": "'${COMMIT_SHA}'",\
|
||||
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to files",\
|
||||
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to files-alpine",\
|
||||
"type": "commit",\
|
||||
"tagger": {"name": "LinuxServer Jenkins","email": "jenkins@linuxserver.io","date": "'${GITHUB_DATE}'"}}' '''
|
||||
echo "Pushing New release for Tag"
|
||||
sh '''#! /bin/bash
|
||||
curl -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/commits/${EXT_GIT_BRANCH} | jq '. | .commit.message' | sed 's:^.\\(.*\\).$:\\1:' > releasebody.json
|
||||
echo "Updating to ${EXT_RELEASE_CLEAN}" > releasebody.json
|
||||
echo '{"tag_name":"'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\
|
||||
"target_commitish": "files",\
|
||||
"target_commitish": "files-alpine",\
|
||||
"name": "'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\
|
||||
"body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n**'${EXT_REPO}' Changes:**\\n\\n' > start
|
||||
"body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n**Remote Changes:**\\n\\n' > start
|
||||
printf '","draft": false,"prerelease": true}' >> releasebody.json
|
||||
paste -d'\\0' start releasebody.json > releasebody.json.done
|
||||
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done'''
|
||||
|
|
|
@ -2,14 +2,14 @@
|
|||
|
||||
# jenkins variables
|
||||
project_name: docker-baseimage-cloud9
|
||||
external_type: github_commit
|
||||
external_type: na
|
||||
custom_version_command: "echo c4d1c59d-alpine"
|
||||
release_type: prerelease
|
||||
release_tag: files
|
||||
ls_branch: files
|
||||
release_tag: files-alpine
|
||||
ls_branch: files-alpine
|
||||
skip_package_check: true
|
||||
use_qemu: true
|
||||
repo_vars:
|
||||
- EXT_GIT_BRANCH = 'master'
|
||||
- EXT_USER = 'c9'
|
||||
- EXT_REPO = 'core'
|
||||
- BUILD_VERSION_ARG = 'CLOUD9_VERSION'
|
||||
- LS_USER = 'linuxserver'
|
||||
- LS_REPO = 'docker-baseimage-cloud9'
|
||||
|
@ -17,13 +17,6 @@ repo_vars:
|
|||
- DOCKERHUB_IMAGE = 'lsiobase/cloud9'
|
||||
- DEV_DOCKERHUB_IMAGE = 'lsiodev/cloud9-base'
|
||||
- PR_DOCKERHUB_IMAGE = 'lspipepr/cloud9-base'
|
||||
- DIST_IMAGE = 'ubuntu'
|
||||
- DIST_IMAGE = 'alpine'
|
||||
- MULTIARCH='true'
|
||||
- CI='true'
|
||||
- CI_WEB='false'
|
||||
- CI_PORT='8000'
|
||||
- CI_SSL='false'
|
||||
- CI_DELAY='120'
|
||||
- CI_DOCKERENV='TZ=US/Pacific'
|
||||
- CI_AUTH='user:password'
|
||||
- CI_WEBPATH=''
|
||||
- CI='false'
|
||||
|
|
|
@ -1,196 +0,0 @@
|
|||
adduser3.116ubuntu1
|
||||
apt1.6.10
|
||||
apt-utils1.6.10
|
||||
base-files10.1ubuntu2.4
|
||||
base-passwd3.5.44
|
||||
bash4.4.18-2ubuntu1.1
|
||||
binutils2.30-21ubuntu1~18.04.1
|
||||
binutils-common2.30-21ubuntu1~18.04.1
|
||||
binutils-x86-64-linux-gnu2.30-21ubuntu1~18.04.1
|
||||
bsdutils1:2.31.1-0.4ubuntu3.3
|
||||
bzip21.0.6-8.1
|
||||
ca-certificates20180409
|
||||
coreutils8.28-1ubuntu1
|
||||
cpp4:7.4.0-1ubuntu2.2
|
||||
cpp-77.4.0-1ubuntu1~18.04
|
||||
curl7.58.0-2ubuntu3.7
|
||||
dash0.5.8-2.10
|
||||
debconf1.5.66ubuntu1
|
||||
debianutils4.8.4
|
||||
diffutils1:3.6-1
|
||||
dpkg1.19.0.5ubuntu2.1
|
||||
e2fsprogs1.44.1-1ubuntu1.1
|
||||
fdisk2.31.1-0.4ubuntu3.3
|
||||
file1:5.32-2ubuntu0.2
|
||||
findutils4.6.0+git+20170828-2
|
||||
g++4:7.4.0-1ubuntu2.2
|
||||
g++-77.4.0-1ubuntu1~18.04
|
||||
gcc4:7.4.0-1ubuntu2.2
|
||||
gcc-77.4.0-1ubuntu1~18.04
|
||||
gcc-7-base7.4.0-1ubuntu1~18.04
|
||||
gcc-8-base8.3.0-6ubuntu1~18.04
|
||||
git1:2.17.1-1ubuntu0.4
|
||||
git-man1:2.17.1-1ubuntu0.4
|
||||
gpgv2.2.4-1ubuntu1.2
|
||||
grep3.1-2
|
||||
gzip1.6-5ubuntu1
|
||||
hostname3.20
|
||||
init-system-helpers1.51
|
||||
krb5-locales1.16-2ubuntu0.1
|
||||
less487-0.1
|
||||
libacl12.2.52-3build1
|
||||
libapt-inst2.01.6.10
|
||||
libapt-pkg5.01.6.10
|
||||
libasan47.4.0-1ubuntu1~18.04
|
||||
libasn1-8-heimdal7.5.0+dfsg-1
|
||||
libatomic18.3.0-6ubuntu1~18.04
|
||||
libattr11:2.4.47-2build1
|
||||
libaudit11:2.8.2-1ubuntu1
|
||||
libaudit-common1:2.8.2-1ubuntu1
|
||||
libbinutils2.30-21ubuntu1~18.04.1
|
||||
libblkid12.31.1-0.4ubuntu3.3
|
||||
libbsd00.8.7-1
|
||||
libbz2-1.01.0.6-8.1
|
||||
libc62.27-3ubuntu1
|
||||
libc6-dev2.27-3ubuntu1
|
||||
libcap-ng00.7.7-3.1
|
||||
libc-bin2.27-3ubuntu1
|
||||
libcc1-08.3.0-6ubuntu1~18.04
|
||||
libc-dev-bin2.27-3ubuntu1
|
||||
libcilkrts57.4.0-1ubuntu1~18.04
|
||||
libcom-err21.44.1-1ubuntu1.1
|
||||
libcurl3-gnutls7.58.0-2ubuntu3.7
|
||||
libcurl47.58.0-2ubuntu3.7
|
||||
libdb5.35.3.28-13.1ubuntu1
|
||||
libdebconfclient00.213ubuntu1
|
||||
libedit23.1-20170329-1
|
||||
liberror-perl0.17025-1
|
||||
libexpat12.2.5-3
|
||||
libext2fs21.44.1-1ubuntu1.1
|
||||
libfdisk12.31.1-0.4ubuntu3.3
|
||||
libffi63.2.1-8
|
||||
libgcc11:8.3.0-6ubuntu1~18.04
|
||||
libgcc-7-dev7.4.0-1ubuntu1~18.04
|
||||
libgcrypt201.8.1-4ubuntu1.1
|
||||
libgdbm51.14.1-6
|
||||
libgdbm-compat41.14.1-6
|
||||
libgmp102:6.1.2+dfsg-2
|
||||
libgnutls303.5.18-1ubuntu1
|
||||
libgomp18.3.0-6ubuntu1~18.04
|
||||
libgpg-error01.27-6
|
||||
libgssapi3-heimdal7.5.0+dfsg-1
|
||||
libgssapi-krb5-21.16-2ubuntu0.1
|
||||
libhcrypto4-heimdal7.5.0+dfsg-1
|
||||
libheimbase1-heimdal7.5.0+dfsg-1
|
||||
libheimntlm0-heimdal7.5.0+dfsg-1
|
||||
libhogweed43.4-1
|
||||
libhx509-5-heimdal7.5.0+dfsg-1
|
||||
libidn2-02.0.4-1.1build2
|
||||
libisl190.19-1
|
||||
libitm18.3.0-6ubuntu1~18.04
|
||||
libk5crypto31.16-2ubuntu0.1
|
||||
libkeyutils11.5.9-9.2ubuntu2
|
||||
libkrb5-26-heimdal7.5.0+dfsg-1
|
||||
libkrb5-31.16-2ubuntu0.1
|
||||
libkrb5support01.16-2ubuntu0.1
|
||||
libldap-2.4-22.4.45+dfsg-1ubuntu1.2
|
||||
libldap-common2.4.45+dfsg-1ubuntu1.2
|
||||
liblsan08.3.0-6ubuntu1~18.04
|
||||
liblz4-10.0~r131-2ubuntu3
|
||||
liblzma55.2.2-1.3
|
||||
libmagic11:5.32-2ubuntu0.2
|
||||
libmagic-mgc1:5.32-2ubuntu0.2
|
||||
libmount12.31.1-0.4ubuntu3.3
|
||||
libmpc31.1.0-1
|
||||
libmpfr64.0.1-1
|
||||
libmpx28.3.0-6ubuntu1~18.04
|
||||
libncurses56.1-1ubuntu1.18.04
|
||||
libncursesw56.1-1ubuntu1.18.04
|
||||
libnettle63.4-1
|
||||
libnghttp2-141.30.0-1ubuntu1
|
||||
libp11-kit00.23.9-2
|
||||
libpam0g1.1.8-3.6ubuntu2.18.04.1
|
||||
libpam-modules1.1.8-3.6ubuntu2.18.04.1
|
||||
libpam-modules-bin1.1.8-3.6ubuntu2.18.04.1
|
||||
libpam-runtime1.1.8-3.6ubuntu2.18.04.1
|
||||
libpcre32:8.39-9
|
||||
libperl5.265.26.1-6ubuntu0.3
|
||||
libprocps62:3.3.12-3ubuntu1.1
|
||||
libpsl50.19.1-5build1
|
||||
libpython2.7-minimal2.7.15~rc1-1ubuntu0.1
|
||||
libpython2.7-stdlib2.7.15~rc1-1ubuntu0.1
|
||||
libpython-stdlib2.7.15~rc1-1
|
||||
libquadmath08.3.0-6ubuntu1~18.04
|
||||
libreadline77.0-3
|
||||
libroken18-heimdal7.5.0+dfsg-1
|
||||
librtmp12.4+20151223.gitfa8646d.1-1
|
||||
libsasl2-22.1.27~101-g0780600+dfsg-3ubuntu2
|
||||
libsasl2-modules2.1.27~101-g0780600+dfsg-3ubuntu2
|
||||
libsasl2-modules-db2.1.27~101-g0780600+dfsg-3ubuntu2
|
||||
libseccomp22.3.1-2.1ubuntu4.1
|
||||
libselinux12.7-2build2
|
||||
libsemanage12.7-2build2
|
||||
libsemanage-common2.7-2build2
|
||||
libsepol12.7-1
|
||||
libsmartcols12.31.1-0.4ubuntu3.3
|
||||
libsqlite3-03.22.0-1
|
||||
libss21.44.1-1ubuntu1.1
|
||||
libssl1.0.01.0.2n-1ubuntu5.3
|
||||
libssl1.11.1.0g-2ubuntu4.3
|
||||
libstdc++68.3.0-6ubuntu1~18.04
|
||||
libstdc++-7-dev7.4.0-1ubuntu1~18.04
|
||||
libsystemd0237-3ubuntu10.21
|
||||
libtasn1-64.13-2
|
||||
libtinfo56.1-1ubuntu1.18.04
|
||||
libtsan08.3.0-6ubuntu1~18.04
|
||||
libubsan07.4.0-1ubuntu1~18.04
|
||||
libudev1237-3ubuntu10.21
|
||||
libunistring20.9.9-0ubuntu2
|
||||
libuuid12.31.1-0.4ubuntu3.3
|
||||
libwind0-heimdal7.5.0+dfsg-1
|
||||
libx11-62:1.6.4-3ubuntu0.2
|
||||
libx11-data2:1.6.4-3ubuntu0.2
|
||||
libxau61:1.0.8-1
|
||||
libxcb11.13-2~ubuntu18.04
|
||||
libxdmcp61:1.1.2-3
|
||||
libxext62:1.3.3-1
|
||||
libxmuu12:1.1.2-2
|
||||
libzstd11.3.3+dfsg-2ubuntu1
|
||||
linux-libc-dev4.15.0-50.54
|
||||
locales2.27-3ubuntu1
|
||||
login1:4.5-1ubuntu2
|
||||
lsb-base9.20170808ubuntu1
|
||||
make4.1-9.1ubuntu1
|
||||
manpages4.15-1
|
||||
manpages-dev4.15-1
|
||||
mawk1.3.3-17ubuntu3
|
||||
mime-support3.60ubuntu1
|
||||
mount2.31.1-0.4ubuntu3.3
|
||||
multiarch-support2.27-3ubuntu1
|
||||
ncurses-base6.1-1ubuntu1.18.04
|
||||
ncurses-bin6.1-1ubuntu1.18.04
|
||||
netbase5.4
|
||||
openssh-client1:7.6p1-4ubuntu0.3
|
||||
openssl1.1.0g-2ubuntu4.3
|
||||
passwd1:4.5-1ubuntu2
|
||||
patch2.7.6-2ubuntu1
|
||||
perl5.26.1-6ubuntu0.3
|
||||
perl-base5.26.1-6ubuntu0.3
|
||||
perl-modules-5.265.26.1-6ubuntu0.3
|
||||
procps2:3.3.12-3ubuntu1.1
|
||||
publicsuffix20180223.1310-1
|
||||
python2.7.15~rc1-1
|
||||
python2.72.7.15~rc1-1ubuntu0.1
|
||||
python2.7-minimal2.7.15~rc1-1ubuntu0.1
|
||||
python-minimal2.7.15~rc1-1
|
||||
readline-common7.0-3
|
||||
sed4.4-2
|
||||
sensible-utils0.0.12
|
||||
sysvinit-utils2.88dsf-59.10ubuntu1
|
||||
tar1.29b-2ubuntu0.1
|
||||
tzdata2019a-0ubuntu0.18.04
|
||||
ubuntu-keyring2018.09.18.1~18.04.0
|
||||
util-linux2.31.1-0.4ubuntu3.3
|
||||
xauth1:1.0.10-1
|
||||
xz-utils5.2.2-1.3
|
||||
zlib1g1:1.2.11.dfsg-0ubuntu2
|
|
@ -0,0 +1,367 @@
|
|||
#!/bin/bash -e
|
||||
set -e
|
||||
has() {
|
||||
type "$1" > /dev/null 2>&1
|
||||
}
|
||||
|
||||
# Redirect stdout ( > ) into a named pipe ( >() ) running "tee"
|
||||
# exec > >(tee /tmp/installlog.txt)
|
||||
|
||||
# Without this, only stdout would be captured - i.e. your
|
||||
# log file would not contain any error messages.
|
||||
exec 2>&1
|
||||
|
||||
if has "wget"; then
|
||||
DOWNLOAD() {
|
||||
wget --no-check-certificate -nc -O "$2" "$1"
|
||||
}
|
||||
elif has "curl"; then
|
||||
DOWNLOAD() {
|
||||
curl -sSL -o "$2" "$1"
|
||||
}
|
||||
else
|
||||
echo "Error: you need curl or wget to proceed" >&2;
|
||||
exit 1
|
||||
fi
|
||||
|
||||
C9_DIR=$HOME/.c9
|
||||
if [[ ${1-} == -d ]]; then
|
||||
C9_DIR=$2
|
||||
shift 2
|
||||
fi
|
||||
|
||||
# Check if C9_DIR exists
|
||||
if [ ! -d "$C9_DIR" ]; then
|
||||
mkdir -p $C9_DIR
|
||||
fi
|
||||
|
||||
VERSION=1
|
||||
NODE_VERSION=v6.3.1
|
||||
NODE_VERSION_ARM_PI=v0.10.28
|
||||
NPM=$C9_DIR/node/bin/npm
|
||||
NODE=$C9_DIR/node/bin/node
|
||||
|
||||
export TMP=$C9_DIR/tmp
|
||||
export TMPDIR=$TMP
|
||||
|
||||
PYTHON=python
|
||||
|
||||
# node-gyp uses sytem node or fails with command not found if
|
||||
# we don't bump this node up in the path
|
||||
PATH="$C9_DIR/node/bin/:$C9_DIR/node_modules/.bin:$PATH"
|
||||
|
||||
start() {
|
||||
if [ $# -lt 1 ]; then
|
||||
start base
|
||||
return
|
||||
fi
|
||||
|
||||
check_deps
|
||||
|
||||
# Try to figure out the os and arch for binary fetching
|
||||
local uname="$(uname -s)"
|
||||
local os=
|
||||
local arch="$(uname -m)"
|
||||
case "$uname" in
|
||||
Linux*) os=linux ;;
|
||||
Darwin*) os=darwin ;;
|
||||
SunOS*) os=sunos ;;
|
||||
FreeBSD*) os=freebsd ;;
|
||||
CYGWIN*) os=windows ;;
|
||||
MINGW*) os=windows ;;
|
||||
esac
|
||||
case "$arch" in
|
||||
*arm64*) arch=arm64 ;;
|
||||
*aarch64*) arch=arm64 ;;
|
||||
*armv6l*) arch=armv6l ;;
|
||||
*armv7l*) arch=armv7l ;;
|
||||
*x86_64*) arch=x64 ;;
|
||||
*i*86*) arch=x86 ;;
|
||||
*)
|
||||
echo "Unsupported Architecture: $os $arch" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ "$arch" == "x64" ] && [[ $HOSTTYPE == i*86 ]]; then
|
||||
arch=x86 # check if 32 bit bash is installed on 64 bit kernel
|
||||
fi
|
||||
|
||||
if [ "$os" != "linux" ] && [ "$os" != "darwin" ]; then
|
||||
echo "Unsupported Platform: $os $arch" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case $1 in
|
||||
"help" )
|
||||
echo
|
||||
echo "Cloud9 Installer"
|
||||
echo
|
||||
echo "Usage:"
|
||||
echo " install help Show this message"
|
||||
echo " install install [name [name ...]] Download and install a set of packages"
|
||||
echo " install ls List available packages"
|
||||
echo
|
||||
;;
|
||||
|
||||
"ls" )
|
||||
echo "!node - Node.js"
|
||||
echo "!tmux - TMUX"
|
||||
echo "!nak - NAK"
|
||||
echo "!ptyjs - pty.js"
|
||||
echo "!collab - collab"
|
||||
echo "coffee - Coffee Script"
|
||||
echo "less - Less"
|
||||
echo "sass - Sass"
|
||||
echo "typescript - TypeScript"
|
||||
echo "stylus - Stylus"
|
||||
# echo "go - Go"
|
||||
# echo "heroku - Heroku"
|
||||
# echo "rhc - RedHat OpenShift"
|
||||
# echo "gae - Google AppEngine"
|
||||
;;
|
||||
|
||||
"install" )
|
||||
shift
|
||||
|
||||
# make sure dirs are around
|
||||
mkdir -p "$C9_DIR"/bin
|
||||
mkdir -p "$C9_DIR"/tmp
|
||||
mkdir -p "$C9_DIR"/node_modules
|
||||
|
||||
# install packages
|
||||
while [ $# -ne 0 ]
|
||||
do
|
||||
if [ "$1" == "tmux" ]; then
|
||||
cd "$C9_DIR"
|
||||
time tmux_install $os $arch
|
||||
shift
|
||||
continue
|
||||
fi
|
||||
cd "$C9_DIR"
|
||||
time eval ${1} $os $arch
|
||||
shift
|
||||
done
|
||||
|
||||
# finalize
|
||||
pushd "$C9_DIR"/node_modules/.bin
|
||||
for FILE in "$C9_DIR"/node_modules/.bin/*; do
|
||||
FILE=$(readlink "$FILE")
|
||||
# can't use the -i flag since it is not compatible between bsd and gnu versions
|
||||
sed -e's/#!\/usr\/bin\/env node/#!'"${NODE//\//\\/}/" "$FILE" > "$FILE.tmp-sed"
|
||||
mv "$FILE.tmp-sed" "$FILE"
|
||||
done
|
||||
popd
|
||||
|
||||
echo $VERSION > "$C9_DIR"/installed
|
||||
|
||||
cd "$C9_DIR"
|
||||
DOWNLOAD https://raw.githubusercontent.com/c9/install/master/packages/license-notice.md "Third-Party Licensing Notices.md"
|
||||
|
||||
echo :Done.
|
||||
;;
|
||||
|
||||
"base" )
|
||||
echo "Installing base packages. Use --help for more options"
|
||||
start install node tmux_install nak ptyjs collab
|
||||
;;
|
||||
|
||||
* )
|
||||
start base
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
check_deps() {
|
||||
local ERR
|
||||
local OS
|
||||
|
||||
if [[ `cat /etc/os-release 2>/dev/null` =~ CentOS ]]; then
|
||||
OS="CentOS"
|
||||
elif [[ `cat /proc/version 2>/dev/null` =~ Ubuntu|Debian ]]; then
|
||||
OS="DEBIAN"
|
||||
fi
|
||||
|
||||
for DEP in make gcc; do
|
||||
if ! has $DEP; then
|
||||
echo "Error: please install $DEP to proceed" >&2
|
||||
if [ "$OS" == "CentOS" ]; then
|
||||
echo "To do so, log into your machine and type 'yum groupinstall -y development'" >&2
|
||||
elif [ "$OS" == "DEBIAN" ]; then
|
||||
echo "To do so, log into your machine and type 'sudo apt-get install build-essential'" >&2
|
||||
fi
|
||||
ERR=1
|
||||
fi
|
||||
done
|
||||
|
||||
# CentOS
|
||||
if [ "$OS" == "CentOS" ]; then
|
||||
if ! yum list installed glibc-static >/dev/null 2>&1; then
|
||||
echo "Error: please install glibc-static to proceed" >&2
|
||||
echo "To do so, log into your machine and type 'yum install glibc-static'" >&2
|
||||
ERR=1
|
||||
fi
|
||||
fi
|
||||
|
||||
check_python
|
||||
|
||||
if [ "$ERR" ]; then exit 1; fi
|
||||
}
|
||||
|
||||
check_python() {
|
||||
if type -P python2.7 &> /dev/null; then
|
||||
PYTHONVERSION="2.7"
|
||||
PYTHON="python2.7"
|
||||
elif type -P python &> /dev/null; then
|
||||
PYTHONVERSION=`python -c 'import sys; print(".".join(map(str, sys.version_info[:2])))'`
|
||||
PYTHON="python"
|
||||
fi
|
||||
|
||||
if [[ $PYTHONVERSION != "2.7" ]]; then
|
||||
echo "Python version 2.7 is required to install pty.js. Please install python 2.7 and try again. You can find more information on how to install Python in the docs: https://docs.c9.io/ssh_workspaces.html"
|
||||
exit 100
|
||||
fi
|
||||
}
|
||||
|
||||
# NodeJS
|
||||
|
||||
download_virtualenv() {
|
||||
VIRTUALENV_VERSION="virtualenv-12.0.7"
|
||||
DOWNLOAD "https://pypi.python.org/packages/source/v/virtualenv/$VIRTUALENV_VERSION.tar.gz" $VIRTUALENV_VERSION.tar.gz
|
||||
tar xzf $VIRTUALENV_VERSION.tar.gz
|
||||
rm $VIRTUALENV_VERSION.tar.gz
|
||||
mv $VIRTUALENV_VERSION virtualenv
|
||||
}
|
||||
|
||||
ensure_local_gyp() {
|
||||
# when gyp is installed globally npm install pty.js won't work
|
||||
# to test this use `sudo apt-get install gyp`
|
||||
if [ `"$PYTHON" -c 'import gyp; print gyp.__file__' 2> /dev/null` ]; then
|
||||
echo "You have a global gyp installed. Setting up VirtualEnv without global pakages"
|
||||
rm -rf virtualenv
|
||||
rm -rf python
|
||||
if has virtualenv; then
|
||||
virtualenv -p python2 "$C9_DIR/python"
|
||||
else
|
||||
download_virtualenv
|
||||
"$PYTHON" virtualenv/virtualenv.py "$C9_DIR/python"
|
||||
fi
|
||||
if [[ -f "$C9_DIR/python/bin/python2" ]]; then
|
||||
PYTHON="$C9_DIR/python/bin/python2"
|
||||
else
|
||||
echo "Unable to setup virtualenv"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
"$NPM" config -g set python "$PYTHON"
|
||||
"$NPM" config -g set unsafe-perm true
|
||||
|
||||
local GYP_PATH=$C9_DIR/node/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js
|
||||
if [ -f "$GYP_PATH" ]; then
|
||||
ln -s "$GYP_PATH" "$C9_DIR"/node/bin/node-gyp &> /dev/null || :
|
||||
fi
|
||||
}
|
||||
|
||||
node(){
|
||||
echo :Installing Node $NODE_VERSION
|
||||
|
||||
|
||||
DOWNLOAD https://nodejs.org/dist/"$NODE_VERSION/node-$NODE_VERSION-$1-$2.tar.gz" node.tar.gz
|
||||
tar xzf node.tar.gz
|
||||
mv "node-$NODE_VERSION-$1-$2" node
|
||||
rm -f node.tar.gz
|
||||
|
||||
cp /usr/bin/node /c9bins/.c9/node/bin/
|
||||
|
||||
# use local npm cache
|
||||
"$NPM" config -g set cache "$C9_DIR/tmp/.npm"
|
||||
ensure_local_gyp
|
||||
|
||||
}
|
||||
|
||||
tmux_install(){
|
||||
mkdir -p /c9bins/.c9/bin/
|
||||
cp /usr/bin/tmux /c9bins/.c9/bin/tmux
|
||||
}
|
||||
|
||||
collab(){
|
||||
echo :Installing Collab Dependencies
|
||||
"$NPM" cache clean
|
||||
"$NPM" install sqlite3
|
||||
"$NPM" install sequelize@2.0.0-beta.0
|
||||
mkdir -p "$C9_DIR"/lib
|
||||
cd "$C9_DIR"/lib
|
||||
DOWNLOAD https://raw.githubusercontent.com/c9/install/master/packages/sqlite3/linux/sqlite3.tar.gz sqlite3.tar.gz
|
||||
tar xzf sqlite3.tar.gz
|
||||
rm sqlite3.tar.gz
|
||||
ln -sf "$C9_DIR"/lib/sqlite3/sqlite3 "$C9_DIR"/bin/sqlite3
|
||||
}
|
||||
|
||||
nak(){
|
||||
echo :Installing Nak
|
||||
"$NPM" install https://github.com/c9/nak/tarball/c9
|
||||
}
|
||||
|
||||
ptyjs(){
|
||||
echo :Installing pty.js
|
||||
"$NPM" install node-pty
|
||||
|
||||
if ! hasPty; then
|
||||
echo "Unknown exception installing pty.js"
|
||||
"$C9_DIR/node/bin/node" -e "console.log(require('node-pty'))"
|
||||
exit 100
|
||||
fi
|
||||
}
|
||||
|
||||
hasPty() {
|
||||
local HASPTY=$("$C9_DIR/node/bin/node" -p "typeof require('node-pty').createTerminal=='function'" 2> /dev/null)
|
||||
if [ "$HASPTY" != true ]; then
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
coffee(){
|
||||
echo :Installing Coffee Script
|
||||
"$NPM" install coffee
|
||||
}
|
||||
|
||||
less(){
|
||||
echo :Installing Less
|
||||
"$NPM" install less
|
||||
}
|
||||
|
||||
sass(){
|
||||
echo :Installing Sass
|
||||
"$NPM" install sass
|
||||
}
|
||||
|
||||
typescript(){
|
||||
echo :Installing TypeScript
|
||||
"$NPM" install typescript
|
||||
}
|
||||
|
||||
stylus(){
|
||||
echo :Installing Stylus
|
||||
"$NPM" install stylus
|
||||
}
|
||||
|
||||
# go(){
|
||||
|
||||
# }
|
||||
|
||||
# heroku(){
|
||||
|
||||
# }
|
||||
|
||||
# rhc(){
|
||||
|
||||
# }
|
||||
|
||||
# gae(){
|
||||
|
||||
# }
|
||||
|
||||
start "$@"
|
||||
|
||||
# cleanup tmp files
|
||||
rm -rf "$C9_DIR/tmp"
|
Ładowanie…
Reference in New Issue