├── .dockerignore ├── .gitignore ├── .helmignore ├── .pre-commit-config.yaml ├── .secrets.baseline ├── Dockerfile ├── Dockerfile.csharp ├── Dockerfile.cwp ├── Dockerfile.elixir ├── Dockerfile.go ├── Dockerfile.gradle ├── Dockerfile.javascript ├── Dockerfile.jenkins ├── Dockerfile.jx ├── Dockerfile.maven ├── Dockerfile.maven-java11 ├── Dockerfile.python ├── Dockerfile.ruby ├── Dockerfile.rust ├── Dockerfile.scala ├── OWNERS ├── OWNERS_ALIASES ├── README.md ├── dependency-matrix ├── matrix.md └── matrix.yaml ├── jenkins-x-serverless ├── Chart.yaml ├── Makefile ├── README.md ├── templates │ ├── NOTES.txt │ ├── _helpers.tpl │ ├── serverless-clusterrole.yaml │ ├── serverless-clusterrolebinding.yaml │ ├── serverless-configmap.yaml │ ├── serverless-job.yaml │ ├── serverless-role.yaml │ ├── serverless-rolebinding.yaml │ └── serverless-sa.yaml └── values.yaml ├── jenkins-x.yml └── jx └── scripts ├── changelog.sh ├── test.sh └── updatebot.sh /.dockerignore: -------------------------------------------------------------------------------- 1 | draft.toml 2 | target/classes 3 | target/generated-sources 4 | target/generated-test-sources 5 | target/maven-archiver 6 | target/maven-status 7 | target/surefire-reports 8 | target/test-classes 9 | target/*.original 10 | charts/ 11 | NOTICE 12 | LICENSE 13 | README.md 14 | tmp/build/ 15 | tmp/prebuild/ 16 | tmp/output/target/jenkinsfile-runner-*/* 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | tmp 2 | .updatebot-repos 3 | .build 4 | target 5 | -------------------------------------------------------------------------------- /.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *~ 18 | # Various IDEs 19 | .project 20 | .idea/ 21 | *.tmproj 22 | *.png 23 | 24 | # known compile time folders 25 | target/ 26 | node_modules/ 27 | vendor/ -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | repos: 2 | - repo: git@github.com:Yelp/detect-secrets 3 | rev: v0.12.4 4 | hooks: 5 | - id: detect-secrets 6 | args: ['--baseline', '.secrets.baseline'] 7 | exclude: .*/tests/.* -------------------------------------------------------------------------------- /.secrets.baseline: -------------------------------------------------------------------------------- 1 | { 2 | "exclude": { 3 | "files": null, 4 | "lines": null 5 | }, 6 | "generated_at": "2019-07-24T17:36:28Z", 7 | "plugins_used": [ 8 | { 9 | "name": "AWSKeyDetector" 10 | }, 11 | { 12 | "name": "ArtifactoryDetector" 13 | }, 14 | { 15 | "base64_limit": 4.5, 16 | "name": "Base64HighEntropyString" 17 | }, 18 | { 19 | "name": "BasicAuthDetector" 20 | }, 21 | { 22 | "hex_limit": 3, 23 | "name": "HexHighEntropyString" 24 | }, 25 | { 26 | "name": "KeywordDetector" 27 | }, 28 | { 29 | "name": "PrivateKeyDetector" 30 | }, 31 | { 32 | "name": "SlackDetector" 33 | }, 34 | { 35 | "name": "StripeDetector" 36 | } 37 | ], 38 | "results": {}, 39 | "version": "0.12.4" 40 | } 41 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkins-x/jenkins-x-serverless/b90aee63bb19e45342d232464dc9085ba0672305/Dockerfile -------------------------------------------------------------------------------- /Dockerfile.csharp: -------------------------------------------------------------------------------- 1 | FROM jenkinsxio/jenkins-filerunner:0.1.49 2 | 3 | RUN wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.asc.gpg && \ 4 | mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/ && \ 5 | wget -q https://packages.microsoft.com/config/debian/9/prod.list && \ 6 | mv prod.list /etc/apt/sources.list.d/microsoft-prod.list && \ 7 | chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg && \ 8 | chown root:root /etc/apt/sources.list.d/microsoft-prod.list 9 | 10 | RUN apt-get install -y apt-transport-https && \ 11 | apt-get update && \ 12 | apt-get install -y dotnet-sdk-2.1 13 | 14 | # jx 15 | ENV JX_VERSION 2.0.835 16 | RUN curl -Lf https://github.com/jenkins-x/jx/releases/download/v${JX_VERSION}/jx-linux-amd64.tar.gz | tar xzv && \ 17 | mv jx /usr/bin/ 18 | -------------------------------------------------------------------------------- /Dockerfile.cwp: -------------------------------------------------------------------------------- 1 | FROM jenkinsxio/jenkins-filerunner:0.1.49 2 | 3 | # Maven 4 | ENV MAVEN_VERSION 3.5.3 5 | RUN curl -Lf http://central.maven.org/maven2/org/apache/maven/apache-maven/$MAVEN_VERSION/apache-maven-$MAVEN_VERSION-bin.tar.gz | tar -C /opt -xzv 6 | ENV M2_HOME /opt/apache-maven-$MAVEN_VERSION 7 | ENV maven.home $M2_HOME 8 | ENV M2 $M2_HOME/bin 9 | ENV PATH $M2:$PATH 10 | 11 | RUN mkdir -p /opt/cwp 12 | ENV CWP_VERSION 1.5 13 | RUN curl -o /opt/cwp/custom-war-packager.jar -Lf http://repo.jenkins-ci.org/releases/io/jenkins/tools/custom-war-packager/custom-war-packager-cli/$CWP_VERSION/custom-war-packager-cli-$CWP_VERSION-jar-with-dependencies.jar 14 | 15 | # jx 16 | ENV JX_VERSION 2.0.835 17 | RUN curl -Lf https://github.com/jenkins-x/jx/releases/download/v${JX_VERSION}/jx-linux-amd64.tar.gz | tar xzv && \ 18 | mv jx /usr/bin/ 19 | -------------------------------------------------------------------------------- /Dockerfile.elixir: -------------------------------------------------------------------------------- 1 | FROM jenkinsxio/jenkins-filerunner:0.1.49 2 | 3 | RUN \ 4 | echo "deb http://packages.erlang-solutions.com/debian stretch contrib" >> /etc/apt/sources.list 5 | 6 | RUN \ 7 | apt-get update && \ 8 | apt-get install --allow-unauthenticated --assume-yes esl-erlang elixir 9 | 10 | # jx 11 | ENV JX_VERSION 2.0.835 12 | RUN curl -Lf https://github.com/jenkins-x/jx/releases/download/v${JX_VERSION}/jx-linux-amd64.tar.gz | tar xzv && \ 13 | mv jx /usr/bin/ 14 | -------------------------------------------------------------------------------- /Dockerfile.go: -------------------------------------------------------------------------------- 1 | FROM jenkinsxio/jenkins-filerunner:0.1.49 2 | 3 | RUN apt-get install -y chromedriver chromium pkg-config g++ zlib1g-dev python 4 | RUN echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | tee /etc/apt/sources.list.d/bazel.list 5 | RUN curl -f https://bazel.build/bazel-release.pub.gpg | apt-key add - 6 | RUN apt-get update && apt-get install -y bazel 7 | 8 | ENV GOLANG_VERSION 1.11.5 9 | RUN wget https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz && \ 10 | tar -C /usr/local -xzf go$GOLANG_VERSION.linux-amd64.tar.gz && \ 11 | rm go${GOLANG_VERSION}.linux-amd64.tar.gz 12 | 13 | ENV GLIDE_VERSION v0.13.1 14 | ENV GO15VENDOREXPERIMENT 1 15 | RUN wget https://github.com/Masterminds/glide/releases/download/$GLIDE_VERSION/glide-$GLIDE_VERSION-linux-amd64.tar.gz && \ 16 | tar -xzf glide-$GLIDE_VERSION-linux-amd64.tar.gz && \ 17 | mv linux-amd64 /usr/local/glide && \ 18 | rm glide-$GLIDE_VERSION-linux-amd64.tar.gz 19 | 20 | ENV GH_RELEASE_VERSION 2.2.1 21 | RUN wget https://github.com/progrium/gh-release/releases/download/v$GH_RELEASE_VERSION/gh-release_${GH_RELEASE_VERSION}_linux_x86_64.tgz && \ 22 | tar -xzf gh-release_${GH_RELEASE_VERSION}_linux_x86_64.tgz && \ 23 | mv gh-release /usr/local/gh-release && \ 24 | rm gh-release_${GH_RELEASE_VERSION}_linux_x86_64.tgz 25 | 26 | ENV PROTOBUF 3.5.1 27 | RUN wget https://github.com/google/protobuf/releases/download/v${PROTOBUF}/protoc-${PROTOBUF}-linux-x86_64.zip && \ 28 | unzip protoc-${PROTOBUF}-linux-x86_64.zip -d protoc && \ 29 | chmod +x protoc && cp protoc/bin/protoc /usr/bin/protoc && rm -rf protoc 30 | 31 | 32 | ENV PATH $PATH:/usr/local/go/bin 33 | ENV PATH $PATH:/usr/local/glide 34 | ENV PATH $PATH:/usr/local/ 35 | ENV GOROOT /usr/local/go 36 | ENV GOPATH=/home/jenkins/go 37 | ENV PATH $PATH:$GOPATH/bin 38 | 39 | RUN go get github.com/DATA-DOG/godog/cmd/godog && \ 40 | mv $GOPATH/bin/godog /usr/local/ && \ 41 | rm -rf $GOPATH/src/github.com/DATA-DOG 42 | 43 | ENV HUGO_VERSION 0.49 44 | RUN curl -Lf -o hugo.tar.gz https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_${HUGO_VERSION}_Linux-64bit.tar.gz && \ 45 | tar xvfz hugo.tar.gz && \ 46 | mv hugo /usr/local && \ 47 | rm -fr hugo* && \ 48 | hugo version 49 | 50 | RUN go get github.com/derekparker/delve/cmd/dlv && \ 51 | mv $GOPATH/bin/* /usr/local/ && \ 52 | rm -rf $GOPATH/src/github.com/derekparker 53 | 54 | RUN go get github.com/golang/protobuf/proto && \ 55 | go get github.com/micro/protoc-gen-micro && \ 56 | go get github.com/golang/protobuf/protoc-gen-go && \ 57 | go get -u github.com/micro/micro && \ 58 | mv $GOPATH/bin/* /usr/local/ && \ 59 | cp -r $GOPATH/src/* /usr/local/go/src 60 | 61 | # jx 62 | ENV JX_VERSION 2.0.835 63 | RUN curl -Lf https://github.com/jenkins-x/jx/releases/download/v${JX_VERSION}/jx-linux-amd64.tar.gz | tar xzv && \ 64 | mv jx /usr/bin/ 65 | -------------------------------------------------------------------------------- /Dockerfile.gradle: -------------------------------------------------------------------------------- 1 | FROM jenkinsxio/jenkins-filerunner:0.1.49 2 | 3 | ENV GRADLE_HOME /opt/gradle 4 | ENV GRADLE_VERSION 4.6 5 | 6 | ARG GRADLE_DOWNLOAD_SHA256=98bd5fd2b30e070517e03c51cbb32beee3e2ee1a84003a5a5d748996d4b1b915 7 | RUN set -o errexit -o nounset \ 8 | && echo "Downloading Gradle" \ 9 | && wget -O gradle.zip "https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip" \ 10 | \ 11 | && echo "Checking download hash" \ 12 | && echo "${GRADLE_DOWNLOAD_SHA256} *gradle.zip" | sha256sum -c - \ 13 | \ 14 | && echo "Installing Gradle" \ 15 | && unzip gradle.zip \ 16 | && rm gradle.zip \ 17 | && mkdir -p /opt \ 18 | && mv "gradle-${GRADLE_VERSION}" "${GRADLE_HOME}/" \ 19 | && ln -s "${GRADLE_HOME}/bin/gradle" /usr/bin/gradle 20 | 21 | ENV ANDROID_VERSION 4333796 22 | ENV ANDROID_HOME /opt/android-sdk-linux 23 | RUN wget https://dl.google.com/android/repository/sdk-tools-linux-${ANDROID_VERSION}.zip && \ 24 | unzip sdk-tools-linux-${ANDROID_VERSION}.zip -d android-sdk-linux && mv android-sdk-linux /opt/ 25 | ENV PATH ${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/tools/bin:${ANDROID_HOME}/platform-tools 26 | RUN yes | sdkmanager --licenses 27 | RUN sdkmanager "platform-tools" 28 | RUN yes | sdkmanager \ 29 | "platforms;android-28" \ 30 | "build-tools;28.0.0" 31 | 32 | # && echo "Adding gradle user and group" \ 33 | # && addgroup -S -g 1000 gradle \ 34 | # && adduser -D -S -G gradle -u 1000 -s /bin/ash gradle \ 35 | # && mkdir /home/gradle/.gradle \ 36 | # && chown -R gradle:gradle /home/gradle \ 37 | # \ 38 | # && echo "Symlinking root Gradle cache to gradle Gradle cache" \ 39 | # && ln -s /home/gradle/.gradle /root/.gradle 40 | 41 | # Create Gradle volume 42 | #USER gradle 43 | #VOLUME "/home/gradle/.gradle" 44 | #WORKDIR /home/gradle 45 | 46 | #RUN set -o errexit -o nounset \ 47 | # && echo "Testing Gradle installation" \ 48 | # && gradle --version 49 | 50 | # jx 51 | ENV JX_VERSION 2.0.835 52 | RUN curl -Lf https://github.com/jenkins-x/jx/releases/download/v${JX_VERSION}/jx-linux-amd64.tar.gz | tar xzv && \ 53 | mv jx /usr/bin/ 54 | -------------------------------------------------------------------------------- /Dockerfile.javascript: -------------------------------------------------------------------------------- 1 | FROM jenkinsxio/jenkins-filerunner:0.1.49 2 | 3 | RUN curl -sL https://deb.nodesource.com/setup_9.x | bash - && \ 4 | apt-get install -y nodejs chromedriver chromium xvfb 5 | 6 | RUN npm i -g watch-cli vsce typescript 7 | 8 | ENV YARN_VERSION 1.3.2 9 | RUN curl -Lf -o /tmp/yarn.tgz https://github.com/yarnpkg/yarn/releases/download/v${YARN_VERSION}/yarn-v${YARN_VERSION}.tar.gz && \ 10 | tar xf /tmp/yarn.tgz && \ 11 | mv yarn-v${YARN_VERSION} /opt/yarn && \ 12 | ln -s /opt/yarn/bin/yarn /usr/local/bin/yarn 13 | 14 | # jx 15 | ENV JX_VERSION 2.0.835 16 | RUN curl -Lf https://github.com/jenkins-x/jx/releases/download/v${JX_VERSION}/jx-linux-amd64.tar.gz | tar xzv && \ 17 | mv jx /usr/bin/ 18 | -------------------------------------------------------------------------------- /Dockerfile.jenkins: -------------------------------------------------------------------------------- 1 | FROM jenkinsxio/jenkins-filerunner:0.1.49 2 | 3 | RUN apt-get install -y chromedriver chromium pkg-config g++ zlib1g-dev python 4 | RUN echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | tee /etc/apt/sources.list.d/bazel.list 5 | RUN curl -f https://bazel.build/bazel-release.pub.gpg | apt-key add - 6 | RUN apt-get update && apt-get install -y bazel 7 | 8 | ENV GOLANG_VERSION 1.11 9 | RUN wget https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz && \ 10 | tar -C /usr/local -xzf go$GOLANG_VERSION.linux-amd64.tar.gz && \ 11 | rm go${GOLANG_VERSION}.linux-amd64.tar.gz 12 | 13 | ENV GLIDE_VERSION v0.13.1 14 | ENV GO15VENDOREXPERIMENT 1 15 | RUN wget https://github.com/Masterminds/glide/releases/download/$GLIDE_VERSION/glide-$GLIDE_VERSION-linux-amd64.tar.gz && \ 16 | tar -xzf glide-$GLIDE_VERSION-linux-amd64.tar.gz && \ 17 | mv linux-amd64 /usr/local/glide && \ 18 | rm glide-$GLIDE_VERSION-linux-amd64.tar.gz 19 | 20 | ENV GH_RELEASE_VERSION 2.2.1 21 | RUN wget https://github.com/progrium/gh-release/releases/download/v$GH_RELEASE_VERSION/gh-release_${GH_RELEASE_VERSION}_linux_x86_64.tgz && \ 22 | tar -xzf gh-release_${GH_RELEASE_VERSION}_linux_x86_64.tgz && \ 23 | mv gh-release /usr/local/gh-release && \ 24 | rm gh-release_${GH_RELEASE_VERSION}_linux_x86_64.tgz 25 | 26 | ENV PROTOBUF 3.5.1 27 | RUN wget https://github.com/google/protobuf/releases/download/v${PROTOBUF}/protoc-${PROTOBUF}-linux-x86_64.zip && \ 28 | unzip protoc-${PROTOBUF}-linux-x86_64.zip -d protoc && \ 29 | chmod +x protoc && cp protoc/bin/protoc /usr/bin/protoc && rm -rf protoc 30 | 31 | ENV PATH $PATH:/usr/local/go/bin 32 | ENV PATH $PATH:/usr/local/glide 33 | ENV PATH $PATH:/usr/local/ 34 | ENV GOROOT /usr/local/go 35 | ENV GOPATH=/home/jenkins/go 36 | ENV PATH $PATH:$GOPATH/bin 37 | 38 | RUN go get github.com/DATA-DOG/godog/cmd/godog && \ 39 | mv $GOPATH/bin/godog /usr/local/ && \ 40 | rm -rf $GOPATH/src/github.com/DATA-DOG 41 | 42 | #RUN go get github.com/gohugoio/hugo && \ 43 | # mv $GOPATH/bin/hugo /usr/local/ && \ 44 | # rm -rf $GOPATH/src/github.com/gohugoio 45 | 46 | RUN go get github.com/derekparker/delve/cmd/dlv && \ 47 | mv $GOPATH/bin/* /usr/local/ && \ 48 | rm -rf $GOPATH/src/github.com/derekparker 49 | 50 | #RUN go get github.com/golang/protobuf/proto && \ 51 | # go get github.com/micro/protoc-gen-micro && \ 52 | # go get github.com/golang/protobuf/protoc-gen-go && \ 53 | # go get -u github.com/micro/micro && \ 54 | # mv $GOPATH/bin/* /usr/local/ && \ 55 | # cp -r $GOPATH/src/* /usr/local/go/src 56 | 57 | # jx 58 | ENV JX_VERSION 2.0.835 59 | RUN curl -Lf https://github.com/jenkins-x/jx/releases/download/v${JX_VERSION}/jx-linux-amd64.tar.gz | tar xzv && \ 60 | mv jx /usr/bin/ 61 | -------------------------------------------------------------------------------- /Dockerfile.jx: -------------------------------------------------------------------------------- 1 | FROM jenkinsxio/jenkins-filerunner:0.1.49 2 | 3 | # jx 4 | ENV JX_VERSION 2.0.835 5 | RUN curl -Lf https://github.com/jenkins-x/jx/releases/download/v${JX_VERSION}/jx-linux-amd64.tar.gz | tar xzv && \ 6 | mv jx /usr/bin/ 7 | -------------------------------------------------------------------------------- /Dockerfile.maven: -------------------------------------------------------------------------------- 1 | FROM jenkinsxio/jenkins-filerunner:0.1.49 2 | 3 | # Maven 4 | ENV MAVEN_VERSION 3.5.3 5 | RUN curl -Lf http://central.maven.org/maven2/org/apache/maven/apache-maven/$MAVEN_VERSION/apache-maven-$MAVEN_VERSION-bin.tar.gz | tar -C /opt -xzv 6 | ENV M2_HOME /opt/apache-maven-$MAVEN_VERSION 7 | ENV maven.home $M2_HOME 8 | ENV M2 $M2_HOME/bin 9 | ENV PATH $M2:$PATH 10 | 11 | # jx 12 | ENV JX_VERSION 2.0.835 13 | RUN curl -Lf https://github.com/jenkins-x/jx/releases/download/v${JX_VERSION}/jx-linux-amd64.tar.gz | tar xzv && \ 14 | mv jx /usr/bin/ 15 | -------------------------------------------------------------------------------- /Dockerfile.maven-java11: -------------------------------------------------------------------------------- 1 | FROM jenkinsxio/jenkins-filerunner:0.1.49 2 | 3 | RUN curl https://download.java.net/java/ga/jdk11/openjdk-11_linux-x64_bin.tar.gz | tar -xz 4 | RUN mv /home/jenkins/jdk-11 /usr/java 5 | RUN rm /usr/bin/java 6 | RUN ln -sf /usr/java/bin/* /usr/bin/ 7 | ENV JAVA_HOME /usr/java 8 | 9 | # Maven 10 | ENV MAVEN_VERSION 3.5.3 11 | RUN curl -Lf http://central.maven.org/maven2/org/apache/maven/apache-maven/$MAVEN_VERSION/apache-maven-$MAVEN_VERSION-bin.tar.gz | tar -C /opt -xzv 12 | ENV M2_HOME /opt/apache-maven-$MAVEN_VERSION 13 | ENV maven.home $M2_HOME 14 | ENV M2 $M2_HOME/bin 15 | ENV PATH $M2:$PATH 16 | 17 | # jx 18 | ENV JX_VERSION 2.0.835 19 | RUN curl -Lf https://github.com/jenkins-x/jx/releases/download/v${JX_VERSION}/jx-linux-amd64.tar.gz | tar xzv && \ 20 | mv jx /usr/bin/ 21 | -------------------------------------------------------------------------------- /Dockerfile.python: -------------------------------------------------------------------------------- 1 | FROM jenkinsxio/jenkins-filerunner:0.1.49 2 | 3 | RUN apt-get update && apt-get -y upgrade 4 | #RUN yum install -y python36u python36u-libs python36u-devel python36u-pip 5 | 6 | # jx 7 | ENV JX_VERSION 2.0.835 8 | RUN curl -Lf https://github.com/jenkins-x/jx/releases/download/v${JX_VERSION}/jx-linux-amd64.tar.gz | tar xzv && \ 9 | mv jx /usr/bin/ 10 | -------------------------------------------------------------------------------- /Dockerfile.ruby: -------------------------------------------------------------------------------- 1 | FROM jenkinsxio/jenkins-filerunner:0.1.49 2 | 3 | RUN apt-get install -y bison libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev libxml2-dev libxslt-dev 4 | RUN git clone https://github.com/rbenv/rbenv.git ~/.rbenv 5 | RUN echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc 6 | RUN echo 'eval "$(rbenv init -)"' >> ~/.bashrc 7 | RUN /bin/bash -c "source ~/.bashrc" 8 | RUN git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build 9 | RUN /bin/bash -c -l "rbenv install 2.5.3" 10 | RUN /bin/bash -c -l "rbenv global 2.5.3" 11 | RUN /bin/bash -c -l "gem install bundler" 12 | 13 | # jx 14 | ENV JX_VERSION 2.0.835 15 | RUN curl -Lf https://github.com/jenkins-x/jx/releases/download/v${JX_VERSION}/jx-linux-amd64.tar.gz | tar xzv && \ 16 | mv jx /usr/bin/ 17 | -------------------------------------------------------------------------------- /Dockerfile.rust: -------------------------------------------------------------------------------- 1 | FROM jenkinsxio/jenkins-filerunner:0.1.49 2 | 3 | RUN wget https://static.rust-lang.org/rustup/dist/x86_64-unknown-linux-gnu/rustup-init && \ 4 | chmod +x rustup-init &&\ 5 | ./rustup-init -y &&\ 6 | rm -rf rustup-init 7 | 8 | ENV PATH=$PATH:/root/.cargo/bin 9 | RUN rustup override set nightly 10 | 11 | # jx 12 | ENV JX_VERSION 2.0.835 13 | RUN curl -Lf https://github.com/jenkins-x/jx/releases/download/v${JX_VERSION}/jx-linux-amd64.tar.gz | tar xzv && \ 14 | mv jx /usr/bin/ 15 | -------------------------------------------------------------------------------- /Dockerfile.scala: -------------------------------------------------------------------------------- 1 | FROM jenkinsxio/jenkins-filerunner:0.1.49 2 | 3 | ENV SCALA_VERSION 2.12.5 4 | ENV SBT_VERSION 1.1.2 5 | 6 | RUN \ 7 | curl -fsL https://downloads.typesafe.com/scala/$SCALA_VERSION/scala-$SCALA_VERSION.tgz | tar xfz - -C /root/ && \ 8 | echo >> /root/.bashrc && \ 9 | echo "export PATH=~/scala-$SCALA_VERSION/bin:$PATH" >> /root/.bashrc 10 | 11 | RUN curl -Lf -o sbt.deb http://dl.bintray.com/sbt/debian/sbt-${SBT_VERSION}.deb && \ 12 | dpkg -i sbt.deb && \ 13 | apt-get update && \ 14 | apt-get install -y sbt 15 | 16 | RUN sbt sbtVersion 17 | 18 | # jx 19 | ENV JX_VERSION 2.0.835 20 | RUN curl -Lf https://github.com/jenkins-x/jx/releases/download/v${JX_VERSION}/jx-linux-amd64.tar.gz | tar xzv && \ 21 | mv jx /usr/bin/ 22 | -------------------------------------------------------------------------------- /OWNERS: -------------------------------------------------------------------------------- 1 | approvers: 2 | - rawlingsj 3 | - jenkins-x-bot 4 | - jstrachan 5 | - rajdavies 6 | - ccojocar 7 | - garethjevans 8 | - i0n 9 | - pmuir 10 | reviewers: 11 | - rawlingsj 12 | - jenkins-x-bot 13 | - jstrachan 14 | - rajdavies 15 | - ccojocar 16 | - garethjevans 17 | - i0n 18 | - pmuir 19 | -------------------------------------------------------------------------------- /OWNERS_ALIASES: -------------------------------------------------------------------------------- 1 | aliases: 2 | - garethjevans 3 | best-approvers: 4 | - garethjevans 5 | best-reviewers: 6 | - garethjevans 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # jenkins-x-serverless 2 | 3 | Defines the Jenkins-X [serverless](https://jenkins-x.io/architecture/cloud-native-jenkins/) build images for Prow. 4 | 5 | Depends on a base image produced by [jenkins-x-serverless-filerunner](https://github.com/jenkins-x/jenkins-x-serverless-filerunner). 6 | -------------------------------------------------------------------------------- /dependency-matrix/matrix.md: -------------------------------------------------------------------------------- 1 | # Dependency Matrix 2 | 3 | Dependency | Sources | Version | Mismatched versions 4 | ---------- | ------- | ------- | ------------------- 5 | [jenkins-x/jx](https://github.com/jenkins-x/jx) | | [2.0.835](https://github.com/jenkins-x/jx/releases/tag/v2.0.835) | 6 | -------------------------------------------------------------------------------- /dependency-matrix/matrix.yaml: -------------------------------------------------------------------------------- 1 | dependencies: 2 | - host: github.com 3 | owner: jenkins-x 4 | repo: jx 5 | url: https://github.com/jenkins-x/jx 6 | version: 2.0.835 7 | versionURL: https://github.com/jenkins-x/jx/releases/tag/v2.0.835 8 | -------------------------------------------------------------------------------- /jenkins-x-serverless/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | description: A Helm chart for Jenkins X Serverless 3 | name: jenkins-x-serverless 4 | version: 0.0.1-SNAPSHOT 5 | icon: https://rawgit.com/jenkins-x/jenkins-x-platform/08df980/images/kubernetes.png 6 | -------------------------------------------------------------------------------- /jenkins-x-serverless/Makefile: -------------------------------------------------------------------------------- 1 | CHART_REPO := http://jenkins-x-chartmuseum:8080 2 | NAME := serverless 3 | OS := $(shell uname) 4 | VERSION := $(shell cat ./VERSION) 5 | 6 | init: 7 | helm init --client-only 8 | 9 | setup: init 10 | helm repo add jenkins-x http://chartmuseum.jenkins-x.io 11 | 12 | build: clean setup 13 | helm dependency build 14 | helm lint 15 | 16 | install: clean build 17 | helm upgrade ${NAME} . --install 18 | 19 | upgrade: clean build 20 | helm upgrade ${NAME} . --install 21 | 22 | delete: 23 | helm delete --purge ${NAME} 24 | 25 | clean: 26 | rm -rf charts 27 | rm -rf ${NAME}*.tgz 28 | rm -rf requirements.lock 29 | 30 | release: clean build 31 | ifeq ($(OS),Darwin) 32 | sed -i "" -e "s/version:.*/version: $(VERSION)/" Chart.yaml 33 | 34 | else ifeq ($(OS),Linux) 35 | sed -i -e "s/version:.*/version: $(VERSION)/" Chart.yaml 36 | else 37 | exit -1 38 | endif 39 | helm package . 40 | curl --fail -u $(CHARTMUSEUM_CREDS_USR):$(CHARTMUSEUM_CREDS_PSW) --data-binary "@$(NAME)-$(VERSION).tgz" $(CHART_REPO)/api/charts 41 | rm -rf ${NAME}*.tgz 42 | -------------------------------------------------------------------------------- /jenkins-x-serverless/README.md: -------------------------------------------------------------------------------- 1 | # Helm Chart for Prow 2 | 3 | helm install jenkins-x/prow --set user=a@b.com --set hmacToken=1234abcd --set oauthToken=5678efgh -------------------------------------------------------------------------------- /jenkins-x-serverless/templates/NOTES.txt: -------------------------------------------------------------------------------- 1 | Prow -------------------------------------------------------------------------------- /jenkins-x-serverless/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{/* vim: set filetype=mustache: */}} 2 | {{/* 3 | Expand the name of the chart. 4 | */}} 5 | 6 | {{- define "serverless.name" -}} 7 | {{- default "serverless" .Values.serverless.nameOverride | trunc 63 | trimSuffix "-" -}} 8 | {{- end -}} 9 | 10 | {{/* 11 | Create a default fully qualified app name. 12 | We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). 13 | */}} 14 | 15 | {{- define "serverless.fullname" -}} 16 | {{- $name := default .Chart.Name .Values.nameOverride -}} 17 | {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} 18 | {{- end -}} 19 | -------------------------------------------------------------------------------- /jenkins-x-serverless/templates/serverless-clusterrole.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | kind: ClusterRole 4 | metadata: 5 | name: {{ template "serverless.name" . }} 6 | rules: 7 | - apiGroups: 8 | - apiextensions.k8s.io 9 | resources: 10 | - customresourcedefinitions 11 | verbs: 12 | - list 13 | - create 14 | - get 15 | - update 16 | -------------------------------------------------------------------------------- /jenkins-x-serverless/templates/serverless-clusterrolebinding.yaml: -------------------------------------------------------------------------------- 1 | kind: ClusterRoleBinding 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | metadata: 4 | name: {{ template "serverless.name" . }} 5 | roleRef: 6 | apiGroup: rbac.authorization.k8s.io 7 | kind: ClusterRole 8 | name: {{ template "serverless.name" . }} 9 | subjects: 10 | - kind: ServiceAccount 11 | name: {{ template "serverless.name" . }} 12 | namespace: {{ .Release.Namespace }} 13 | -------------------------------------------------------------------------------- /jenkins-x-serverless/templates/serverless-configmap.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: ConfigMap 4 | metadata: 5 | name: {{ template "serverless.name" . }}-cm 6 | data: 7 | Jenkinsfile: |- 8 | pipeline { 9 | agent any 10 | stages { 11 | stage('Tests') { 12 | steps { 13 | echo "Hello World $BUILD_NUMBER" 14 | } 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /jenkins-x-serverless/templates/serverless-job.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: batch/v1 2 | kind: Job 3 | metadata: 4 | name: {{ template "serverless.name" . }} 5 | labels: 6 | app: {{ template "serverless.name" . }} 7 | spec: 8 | replicas: 1 9 | template: 10 | metadata: 11 | labels: 12 | app: {{ template "serverless.name" . }} 13 | spec: 14 | serviceAccountName: {{ template "serverless.name" . }} 15 | terminationGracePeriodSeconds: {{ .Values.serverless.terminationGracePeriodSeconds }} 16 | restartPolicy: Never 17 | containers: 18 | - name: {{ template "serverless.name" . }} 19 | image: {{ .Values.serverless.image.repository }}:{{ .Values.serverless.image.tag }} 20 | imagePullPolicy: {{ .Values.serverless.imagePullPolicy }} 21 | env: 22 | - name: BUILD_NUMBER 23 | value: "1" 24 | volumeMounts: 25 | - name: {{ template "serverless.name" . }}-volume 26 | mountPath: /workspace/ 27 | {{- with .Values.serverless.nodeSelector }} 28 | nodeSelector: 29 | {{ toYaml . | indent 8 }} 30 | {{- end }} 31 | {{- with .Values.serverless.affinity }} 32 | affinity: 33 | {{ toYaml . | indent 8 }} 34 | {{- end }} 35 | {{- with .Values.serverless.tolerations }} 36 | tolerations: 37 | {{ toYaml . | indent 8 }} 38 | {{- end }} 39 | volumes: 40 | - name: {{ template "serverless.name" . }}-volume 41 | configMap: 42 | name: {{ template "serverless.name" . }}-cm 43 | -------------------------------------------------------------------------------- /jenkins-x-serverless/templates/serverless-role.yaml: -------------------------------------------------------------------------------- 1 | kind: Role 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | metadata: 4 | name: {{ template "serverless.name" . }} 5 | rules: 6 | - apiGroups: 7 | - "" 8 | resources: 9 | - secrets 10 | verbs: 11 | - create 12 | - get 13 | - list 14 | - update 15 | - watch 16 | - apiGroups: 17 | - "" 18 | resources: 19 | - services 20 | verbs: 21 | - get 22 | - apiGroups: 23 | - "" 24 | resources: 25 | - namespaces 26 | verbs: 27 | - get 28 | - list 29 | - apiGroups: 30 | - jenkins.io 31 | resources: 32 | - pipelineactivities 33 | verbs: 34 | - get 35 | - create 36 | - update 37 | - apiGroups: 38 | - jenkins.io 39 | resources: 40 | - environments 41 | verbs: 42 | - list 43 | - get 44 | - update 45 | -------------------------------------------------------------------------------- /jenkins-x-serverless/templates/serverless-rolebinding.yaml: -------------------------------------------------------------------------------- 1 | kind: RoleBinding 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | metadata: 4 | name: {{ template "serverless.name" . }} 5 | roleRef: 6 | apiGroup: rbac.authorization.k8s.io 7 | kind: Role 8 | name: {{ template "serverless.name" . }} 9 | subjects: 10 | - kind: ServiceAccount 11 | name: {{ template "serverless.name" . }} 12 | namespace: {{ .Release.Namespace }} 13 | -------------------------------------------------------------------------------- /jenkins-x-serverless/templates/serverless-sa.yaml: -------------------------------------------------------------------------------- 1 | kind: ServiceAccount 2 | apiVersion: v1 3 | metadata: 4 | name: {{ template "serverless.name" . }} 5 | -------------------------------------------------------------------------------- /jenkins-x-serverless/values.yaml: -------------------------------------------------------------------------------- 1 | # Default values for serverless 2 | # This is a YAML-formatted file. 3 | # Declare variables to be passed into your templates. 4 | serverless: 5 | image: 6 | repository: gcr.io/jenkinsxio/jenkins-maven 7 | tag: 0.1.92 8 | imagePullPolicy: Always 9 | terminationGracePeriodSeconds: 30 10 | resources: 11 | limits: 12 | cpu: 400m 13 | memory: 1024Mi 14 | requests: 15 | cpu: 200m 16 | memory: 512Mi 17 | -------------------------------------------------------------------------------- /jenkins-x.yml: -------------------------------------------------------------------------------- 1 | buildPack: none 2 | pipelineConfig: 3 | pipelines: 4 | release: 5 | pipeline: 6 | options: 7 | containerOptions: 8 | resources: 9 | limits: 10 | memory: 10Gi 11 | requests: 12 | memory: 6Gi 13 | agent: 14 | image: gcr.io/kaniko-project/executor:9912ccbf8d22bbafbf971124600fbb0b13b9cbd6 15 | stages: 16 | - name: release 17 | environment: 18 | - name: GIT_COMMITTER_EMAIL 19 | value: jenkins-x@googlegroups.com 20 | - name: GIT_COMMITTER_NAME 21 | value: jenkins-x-bot 22 | - name: GIT_AUTHOR_EMAIL 23 | value: jenkins-x@googlegroups.com 24 | - name: GIT_AUTHOR_NAME 25 | value: jenkins-x-bot 26 | - name: GOOGLE_APPLICATION_CREDENTIALS 27 | value: /builder/home/kaniko-secret.json 28 | steps: 29 | - image: jenkinsxio/jx:1.3.963 30 | name: get-secret 31 | command: jx 32 | args: 33 | - step 34 | - credential 35 | - -s 36 | - kaniko-secret 37 | - -k 38 | - kaniko-secret 39 | - -f 40 | - /builder/home/kaniko-secret.json 41 | - name: warm-cache 42 | image: gcr.io/kaniko-project/warmer 43 | args: 44 | - --cache-dir=/workspace 45 | - --image=jenkinsxio/jenkins-filerunner:0.1.18 46 | command: /kaniko/warmer 47 | - image: gcr.io/kaniko-project/executor:9912ccbf8d22bbafbf971124600fbb0b13b9cbd6 48 | name: jx-image 49 | command: /kaniko/executor 50 | args: 51 | - --dockerfile=Dockerfile.jx 52 | - --destination=gcr.io/jenkinsxio/jenkins-jx:${inputs.params.version} 53 | - --destination=gcr.io/jenkinsxio/jenkins-jx:latest 54 | - --context=/workspace/source 55 | - --cache-repo=gcr.io/jenkinsxio/cache 56 | - --cache=true 57 | - --cache-dir=/workspace 58 | - image: gcr.io/kaniko-project/executor:9912ccbf8d22bbafbf971124600fbb0b13b9cbd6 59 | name: csharp-image 60 | command: /kaniko/executor 61 | args: 62 | - --dockerfile=Dockerfile.csharp 63 | - --destination=gcr.io/jenkinsxio/jenkins-csharp:${inputs.params.version} 64 | - --destination=gcr.io/jenkinsxio/jenkins-csharp:latest 65 | - --context=/workspace/source 66 | - --cache-repo=gcr.io/jenkinsxio/cache 67 | - --cache=true 68 | - --cache-dir=/workspace 69 | - image: gcr.io/kaniko-project/executor:9912ccbf8d22bbafbf971124600fbb0b13b9cbd6 70 | name: cwp-image 71 | command: /kaniko/executor 72 | args: 73 | - --dockerfile=Dockerfile.cwp 74 | - --destination=gcr.io/jenkinsxio/jenkins-cwp:${inputs.params.version} 75 | - --destination=gcr.io/jenkinsxio/jenkins-cwp:latest 76 | - --context=/workspace/source 77 | - --cache-repo=gcr.io/jenkinsxio/cache 78 | - --cache=true 79 | - --cache-dir=/workspace 80 | - image: gcr.io/kaniko-project/executor:9912ccbf8d22bbafbf971124600fbb0b13b9cbd6 81 | name: elixir-image 82 | command: /kaniko/executor 83 | args: 84 | - --dockerfile=Dockerfile.elixir 85 | - --destination=gcr.io/jenkinsxio/jenkins-elixir:${inputs.params.version} 86 | - --destination=gcr.io/jenkinsxio/jenkins-elixir:latest 87 | - --context=/workspace/source 88 | - --cache-repo=gcr.io/jenkinsxio/cache 89 | - --cache=true 90 | - --cache-dir=/workspace 91 | - image: gcr.io/kaniko-project/executor:9912ccbf8d22bbafbf971124600fbb0b13b9cbd6 92 | name: go-image 93 | command: /kaniko/executor 94 | args: 95 | - --dockerfile=Dockerfile.go 96 | - --destination=gcr.io/jenkinsxio/jenkins-go:${inputs.params.version} 97 | - --destination=gcr.io/jenkinsxio/jenkins-go:latest 98 | - --context=/workspace/source 99 | - --cache-repo=gcr.io/jenkinsxio/cache 100 | - --cache=true 101 | - --cache-dir=/workspace 102 | - image: gcr.io/kaniko-project/executor:9912ccbf8d22bbafbf971124600fbb0b13b9cbd6 103 | name: gradle-image 104 | command: /kaniko/executor 105 | args: 106 | - --dockerfile=Dockerfile.gradle 107 | - --destination=gcr.io/jenkinsxio/jenkins-gradle:${inputs.params.version} 108 | - --destination=gcr.io/jenkinsxio/jenkins-gradle:latest 109 | - --context=/workspace/source 110 | - --cache-repo=gcr.io/jenkinsxio/cache 111 | - --cache=true 112 | - --cache-dir=/workspace 113 | - image: gcr.io/kaniko-project/executor:9912ccbf8d22bbafbf971124600fbb0b13b9cbd6 114 | name: javascript-image 115 | command: /kaniko/executor 116 | args: 117 | - --dockerfile=Dockerfile.javascript 118 | - --destination=gcr.io/jenkinsxio/jenkins-javascript:${inputs.params.version} 119 | - --destination=gcr.io/jenkinsxio/jenkins-javascript:latest 120 | - --context=/workspace/source 121 | - --cache-repo=gcr.io/jenkinsxio/cache 122 | - --cache=true 123 | - --cache-dir=/workspace 124 | - image: gcr.io/kaniko-project/executor:9912ccbf8d22bbafbf971124600fbb0b13b9cbd6 125 | name: jenkins-image 126 | command: /kaniko/executor 127 | args: 128 | - --dockerfile=Dockerfile.jenkins 129 | - --destination=gcr.io/jenkinsxio/jenkins-jenkins:${inputs.params.version} 130 | - --destination=gcr.io/jenkinsxio/jenkins-jenkins:latest 131 | - --context=/workspace/source 132 | - --cache-repo=gcr.io/jenkinsxio/cache 133 | - --cache=true 134 | - --cache-dir=/workspace 135 | - image: gcr.io/kaniko-project/executor:9912ccbf8d22bbafbf971124600fbb0b13b9cbd6 136 | name: maven-image 137 | command: /kaniko/executor 138 | args: 139 | - --dockerfile=Dockerfile.maven 140 | - --destination=gcr.io/jenkinsxio/jenkins-maven:${inputs.params.version} 141 | - --destination=gcr.io/jenkinsxio/jenkins-maven:latest 142 | - --context=/workspace/source 143 | - --cache-repo=gcr.io/jenkinsxio/cache 144 | - --cache=true 145 | - --cache-dir=/workspace 146 | - image: gcr.io/kaniko-project/executor:9912ccbf8d22bbafbf971124600fbb0b13b9cbd6 147 | name: maven-java11-image 148 | command: /kaniko/executor 149 | args: 150 | - --dockerfile=Dockerfile.maven-java11 151 | - --destination=gcr.io/jenkinsxio/jenkins-maven-java11:${inputs.params.version} 152 | - --destination=gcr.io/jenkinsxio/jenkins-maven-java11:latest 153 | - --context=/workspace/source 154 | - --cache-repo=gcr.io/jenkinsxio/cache 155 | - --cache=true 156 | - --cache-dir=/workspace 157 | - image: gcr.io/kaniko-project/executor:9912ccbf8d22bbafbf971124600fbb0b13b9cbd6 158 | name: python-image 159 | command: /kaniko/executor 160 | args: 161 | - --dockerfile=Dockerfile.python 162 | - --destination=gcr.io/jenkinsxio/jenkins-python:${inputs.params.version} 163 | - --destination=gcr.io/jenkinsxio/jenkins-python:latest 164 | - --context=/workspace/source 165 | - --cache-repo=gcr.io/jenkinsxio/cache 166 | - --cache=true 167 | - --cache-dir=/workspace 168 | - image: gcr.io/kaniko-project/executor:9912ccbf8d22bbafbf971124600fbb0b13b9cbd6 169 | name: ruby-image 170 | command: /kaniko/executor 171 | args: 172 | - --dockerfile=Dockerfile.ruby 173 | - --destination=gcr.io/jenkinsxio/jenkins-ruby:${inputs.params.version} 174 | - --destination=gcr.io/jenkinsxio/jenkins-ruby:latest 175 | - --context=/workspace/source 176 | - --cache-repo=gcr.io/jenkinsxio/cache 177 | - --cache=true 178 | - --cache-dir=/workspace 179 | - image: gcr.io/kaniko-project/executor:9912ccbf8d22bbafbf971124600fbb0b13b9cbd6 180 | name: rust-image 181 | command: /kaniko/executor 182 | args: 183 | - --dockerfile=Dockerfile.rust 184 | - --destination=gcr.io/jenkinsxio/jenkins-rust:${inputs.params.version} 185 | - --destination=gcr.io/jenkinsxio/jenkins-rust:latest 186 | - --context=/workspace/source 187 | - --cache-repo=gcr.io/jenkinsxio/cache 188 | - --cache=true 189 | - --cache-dir=/workspace 190 | - image: gcr.io/kaniko-project/executor:9912ccbf8d22bbafbf971124600fbb0b13b9cbd6 191 | name: scala-image 192 | command: /kaniko/executor 193 | args: 194 | - --dockerfile=Dockerfile.scala 195 | - --destination=gcr.io/jenkinsxio/jenkins-scala:${inputs.params.version} 196 | - --destination=gcr.io/jenkinsxio/jenkins-scala:latest 197 | - --context=/workspace/source 198 | - --cache-repo=gcr.io/jenkinsxio/cache 199 | - --cache=true 200 | - --cache-dir=/workspace 201 | # Create the release notes 202 | - name: changelog 203 | image: gcr.io/jenkinsxio/builder-go:0.1.700 204 | command: ./jx/scripts/changelog.sh 205 | # Do updatebot after release notes so we can use the release notes in the PRs 206 | - image: gcr.io/jenkinsxio/builder-go:0.1.700 207 | name: trigger-updatebot 208 | command: ./jx/scripts/updatebot.sh 209 | 210 | pullRequest: 211 | pipeline: 212 | options: 213 | containerOptions: 214 | resources: 215 | limits: 216 | memory: 10Gi 217 | requests: 218 | memory: 6Gi 219 | agent: 220 | image: gcr.io/kaniko-project 221 | stages: 222 | - name: build-and-push 223 | environment: 224 | - name: GKE_SA 225 | value: /builder/home/jenkinsx-dev-07b8e95876b1.json 226 | - name: GOOGLE_APPLICATION_CREDENTIALS 227 | value: /builder/home/kaniko-secret.json 228 | steps: 229 | - image: jenkinsxio/jx:1.3.963 230 | name: get-secret 231 | command: jx 232 | args: 233 | - step 234 | - credential 235 | - -s 236 | - kaniko-secret 237 | - -k 238 | - kaniko-secret 239 | - -f 240 | - /builder/home/kaniko-secret.json 241 | 242 | - name: warm-cache 243 | image: gcr.io/kaniko-project/warmer 244 | args: 245 | - --cache-dir=/workspace 246 | - --image=jenkinsxio/jenkins-filerunner:0.1.18 247 | command: /kaniko/warmer 248 | - image: gcr.io/kaniko-project/executor:9912ccbf8d22bbafbf971124600fbb0b13b9cbd6 249 | name: jx-image 250 | command: /kaniko/executor 251 | args: 252 | - --dockerfile=Dockerfile.jx 253 | - --destination=gcr.io/jenkinsxio/jenkins-jx:${inputs.params.version} 254 | - --context=/workspace/source 255 | - --cache-repo=gcr.io/jenkinsxio/cache 256 | - --cache=true 257 | - --cache-dir=/workspace 258 | - image: gcr.io/kaniko-project/executor:9912ccbf8d22bbafbf971124600fbb0b13b9cbd6 259 | name: csharp-image 260 | command: /kaniko/executor 261 | args: 262 | - --dockerfile=Dockerfile.csharp 263 | - --destination=gcr.io/jenkinsxio/jenkins-csharp:${inputs.params.version} 264 | - --context=/workspace/source 265 | - --cache-repo=gcr.io/jenkinsxio/cache 266 | - --cache=true 267 | - --cache-dir=/workspace 268 | - image: gcr.io/kaniko-project/executor:9912ccbf8d22bbafbf971124600fbb0b13b9cbd6 269 | name: cwp-image 270 | command: /kaniko/executor 271 | args: 272 | - --dockerfile=Dockerfile.cwp 273 | - --destination=gcr.io/jenkinsxio/jenkins-cwp:${inputs.params.version} 274 | - --context=/workspace/source 275 | - --cache-repo=gcr.io/jenkinsxio/cache 276 | - --cache=true 277 | - --cache-dir=/workspace 278 | - image: gcr.io/kaniko-project/executor:9912ccbf8d22bbafbf971124600fbb0b13b9cbd6 279 | name: elixir-image 280 | command: /kaniko/executor 281 | args: 282 | - --dockerfile=Dockerfile.elixir 283 | - --destination=gcr.io/jenkinsxio/jenkins-elixir:${inputs.params.version} 284 | - --context=/workspace/source 285 | - --cache-repo=gcr.io/jenkinsxio/cache 286 | - --cache=true 287 | - --cache-dir=/workspace 288 | - image: gcr.io/kaniko-project/executor:9912ccbf8d22bbafbf971124600fbb0b13b9cbd6 289 | name: go-image 290 | command: /kaniko/executor 291 | args: 292 | - --dockerfile=Dockerfile.go 293 | - --destination=gcr.io/jenkinsxio/jenkins-go:${inputs.params.version} 294 | - --context=/workspace/source 295 | - --cache-repo=gcr.io/jenkinsxio/cache 296 | - --cache=true 297 | - --cache-dir=/workspace 298 | - image: gcr.io/kaniko-project/executor:9912ccbf8d22bbafbf971124600fbb0b13b9cbd6 299 | name: gradle-image 300 | command: /kaniko/executor 301 | args: 302 | - --dockerfile=Dockerfile.gradle 303 | - --destination=gcr.io/jenkinsxio/jenkins-gradle:${inputs.params.version} 304 | - --context=/workspace/source 305 | - --cache-repo=gcr.io/jenkinsxio/cache 306 | - --cache=true 307 | - --cache-dir=/workspace 308 | - image: gcr.io/kaniko-project/executor:9912ccbf8d22bbafbf971124600fbb0b13b9cbd6 309 | name: javascript-image 310 | command: /kaniko/executor 311 | args: 312 | - --dockerfile=Dockerfile.javascript 313 | - --destination=gcr.io/jenkinsxio/jenkins-javascript:${inputs.params.version} 314 | - --context=/workspace/source 315 | - --cache-repo=gcr.io/jenkinsxio/cache 316 | - --cache=true 317 | - --cache-dir=/workspace 318 | - image: gcr.io/kaniko-project/executor:9912ccbf8d22bbafbf971124600fbb0b13b9cbd6 319 | name: jenkins-image 320 | command: /kaniko/executor 321 | args: 322 | - --dockerfile=Dockerfile.jenkins 323 | - --destination=gcr.io/jenkinsxio/jenkins-jenkins:${inputs.params.version} 324 | - --context=/workspace/source 325 | - --cache-repo=gcr.io/jenkinsxio/cache 326 | - --cache=true 327 | - --cache-dir=/workspace 328 | - image: gcr.io/kaniko-project/executor:9912ccbf8d22bbafbf971124600fbb0b13b9cbd6 329 | name: maven-image 330 | command: /kaniko/executor 331 | args: 332 | - --dockerfile=Dockerfile.maven 333 | - --destination=gcr.io/jenkinsxio/jenkins-maven:${inputs.params.version} 334 | - --context=/workspace/source 335 | - --cache-repo=gcr.io/jenkinsxio/cache 336 | - --cache=true 337 | - --cache-dir=/workspace 338 | - image: gcr.io/kaniko-project/executor:9912ccbf8d22bbafbf971124600fbb0b13b9cbd6 339 | name: maven-java11-image 340 | command: /kaniko/executor 341 | args: 342 | - --dockerfile=Dockerfile.maven-java11 343 | - --destination=gcr.io/jenkinsxio/jenkins-maven-java11:${inputs.params.version} 344 | - --context=/workspace/source 345 | - --cache-repo=gcr.io/jenkinsxio/cache 346 | - --cache=true 347 | - --cache-dir=/workspace 348 | - image: gcr.io/kaniko-project/executor:9912ccbf8d22bbafbf971124600fbb0b13b9cbd6 349 | name: python-image 350 | command: /kaniko/executor 351 | args: 352 | - --dockerfile=Dockerfile.python 353 | - --destination=gcr.io/jenkinsxio/jenkins-python:${inputs.params.version} 354 | - --context=/workspace/source 355 | - --cache-repo=gcr.io/jenkinsxio/cache 356 | - --cache=true 357 | - --cache-dir=/workspace 358 | - image: gcr.io/kaniko-project/executor:9912ccbf8d22bbafbf971124600fbb0b13b9cbd6 359 | name: ruby-image 360 | command: /kaniko/executor 361 | args: 362 | - --dockerfile=Dockerfile.ruby 363 | - --destination=gcr.io/jenkinsxio/jenkins-ruby:${inputs.params.version} 364 | - --context=/workspace/source 365 | - --cache-repo=gcr.io/jenkinsxio/cache 366 | - --cache=true 367 | - --cache-dir=/workspace 368 | - image: gcr.io/kaniko-project/executor:9912ccbf8d22bbafbf971124600fbb0b13b9cbd6 369 | name: rust-image 370 | command: /kaniko/executor 371 | args: 372 | - --dockerfile=Dockerfile.rust 373 | - --destination=gcr.io/jenkinsxio/jenkins-rust:${inputs.params.version} 374 | - --context=/workspace/source 375 | - --cache-repo=gcr.io/jenkinsxio/cache 376 | - --cache=true 377 | - --cache-dir=/workspace 378 | - image: gcr.io/kaniko-project/executor:9912ccbf8d22bbafbf971124600fbb0b13b9cbd6 379 | name: scala-image 380 | command: /kaniko/executor 381 | args: 382 | - --dockerfile=Dockerfile.scala 383 | - --destination=gcr.io/jenkinsxio/jenkins-scala:${inputs.params.version} 384 | - --context=/workspace/source 385 | - --cache-repo=gcr.io/jenkinsxio/cache 386 | - --cache=true 387 | - --cache-dir=/workspace 388 | 389 | - image: jenkinsxio/jx:1.3.963 390 | name: get-gke-sa 391 | command: jx 392 | args: 393 | - step 394 | - credential 395 | - -s 396 | - gke-sa 397 | - -k 398 | - data 399 | - -f 400 | - /builder/home/jenkinsx-dev-07b8e95876b1.json 401 | 402 | - image: jenkinsxio/builder-base:0.1.273 403 | name: test-images 404 | command: ./jx/scripts/test.sh 405 | 406 | -------------------------------------------------------------------------------- /jx/scripts/changelog.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | jx step changelog --verbose --version ${VERSION} --rev ${PULL_BASE_SHA} 3 | -------------------------------------------------------------------------------- /jx/scripts/test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | set -u 5 | set -o pipefail 6 | 7 | BUILD_NO="" 8 | if [ -z "$BUILD_ID" ] 9 | then 10 | BUILD_NO=$BUILD_NUMBER 11 | else 12 | BUILD_NO=$BUILD_ID 13 | fi 14 | 15 | PREVIEW_NAMESPACE_UPPER="jenkins-x-serverless-$BRANCH_NAME-$BUILD_NO" 16 | PREVIEW_NAMESPACE=${PREVIEW_NAMESPACE_UPPER,,} 17 | HELM_RELEASE=$PREVIEW_NAMESPACE 18 | 19 | echo "VERSION=$VERSION" 20 | echo "PREVIEW_NAMESPACE=$PREVIEW_NAMESPACE" 21 | echo "HELM_RELEASE=$HELM_RELEASE" 22 | 23 | pushd jenkins-x-serverless 24 | 25 | gcloud auth activate-service-account --key-file $GKE_SA 26 | gcloud container clusters get-credentials jx-bdd-tests --zone europe-west1-c --project jenkins-x-infra 27 | 28 | sed -i.bak -e "s/tag: .*/tag: ${VERSION}/" values.yaml 29 | rm values.yaml.bak 30 | cat values.yaml 31 | 32 | make build 33 | 34 | if [[ $(kubectl get namespace ${PREVIEW_NAMESPACE} | grep -c "${PREVIEW_NAMESPACE}") -eq 1 ]]; then 35 | echo "$PREVIEW_NAMESPACE already exists" 36 | else 37 | kubectl create namespace $PREVIEW_NAMESPACE 38 | fi 39 | 40 | jx ns $PREVIEW_NAMESPACE 41 | 42 | helm3 upgrade \ 43 | --set serverless.nameOverride=$HELM_RELEASE \ 44 | --install --namespace $PREVIEW_NAMESPACE \ 45 | $HELM_RELEASE . 46 | 47 | SUCCESS=false 48 | TIME_BETWEEN_CHECKS=10 49 | COUNTER=0 50 | 51 | while [ $COUNTER -lt 30 ]; do 52 | echo "Checking attempt $COUNTER..." 53 | POD_STATUS=`kubectl get pods | grep $HELM_RELEASE | awk '{print $3}'` 54 | 55 | if [ ${POD_STATUS} == "Completed" ]; then 56 | SUCCESS=true 57 | echo "Pod completed correctly" 58 | break 59 | fi 60 | 61 | if [ ${POD_STATUS} == "Error" ]; then 62 | echo "Pod is in error status" 63 | break 64 | fi 65 | 66 | let COUNTER=COUNTER+1 67 | sleep ${TIME_BETWEEN_CHECKS} 68 | done 69 | 70 | if [ "${SUCCESS}" == "false" ]; then 71 | POD=`kubectl get pods | grep $HELM_RELEASE | awk '{print $1}'` 72 | kubectl logs $POD 73 | fi 74 | 75 | # cleanup 76 | helm3 del $HELM_RELEASE --purge 77 | kubectl delete namespace $PREVIEW_NAMESPACE 78 | 79 | if [ "${SUCCESS}" == "false" ]; then 80 | echo "Pod never became ready" 81 | exit 1 82 | fi 83 | 84 | popd 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /jx/scripts/updatebot.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | set -u 5 | set -o pipefail 6 | 7 | echo "VERSION=$VERSION" 8 | 9 | jx step create pr regex --regex "jenkinsTag:\s(.*)" --version ${VERSION} --files jx-build-templates/values.yaml --repo https://github.com/jenkins-x-charts/jx-build-templates.git 10 | --------------------------------------------------------------------------------