adding base files version for alpine containers

files-alpine c4d1c59d-alpine-ls1
thelamer 2019-06-20 23:42:22 -07:00
rodzic 3ed5bbfbc5
commit 9ba61d3828
7 zmienionych plików z 478 dodań i 368 usunięć

Wyświetl plik

@ -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 && \

Wyświetl plik

@ -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 && \

Wyświetl plik

@ -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 && \

185
Jenkinsfile vendored
Wyświetl plik

@ -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'''

Wyświetl plik

@ -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'

Wyświetl plik

@ -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

367
root/install.sh 100644
Wyświetl plik

@ -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"