-
Notifications
You must be signed in to change notification settings - Fork 41
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add jenkins-agent for nodejs 16 including latest chrome and yarn, upd…
…ate documentation (#772) Co-authored-by: Schweikert,Christian (IT BI X) BIX-DE-I <[email protected]>
- Loading branch information
1 parent
a681b6b
commit 8677d64
Showing
16 changed files
with
390 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -97,6 +97,38 @@ jobs: | |
--build-arg nexusAuth=developer:s3cr3t \ | ||
. | ||
jenkins-agent-nodejs16-centos7: | ||
name: Jenkins agent NodeJS 16 (CENTOS7) | ||
runs-on: ubuntu-18.04 | ||
steps: | ||
- | ||
name: Checkout repository | ||
uses: actions/[email protected] | ||
- | ||
name: Build docker image | ||
working-directory: common/jenkins-agents/nodejs16/docker | ||
run: | | ||
docker build --tag agent-nodejs16-test-centos7 --file Dockerfile.centos7 \ | ||
--build-arg nexusUrl=https://nexus.example.com \ | ||
--build-arg nexusAuth=developer:s3cr3t \ | ||
. | ||
jenkins-agent-nodejs16-ubi8: | ||
name: Jenkins agent NodeJS 16 (UBI8) | ||
runs-on: ubuntu-18.04 | ||
steps: | ||
- | ||
name: Checkout repository | ||
uses: actions/[email protected] | ||
- | ||
name: Build docker image | ||
working-directory: common/jenkins-agents/nodejs16/docker | ||
run: | | ||
docker build --tag agent-nodejs16-test-ubi8 --file Dockerfile.ubi8 \ | ||
--build-arg nexusUrl=https://nexus.example.com \ | ||
--build-arg nexusAuth=developer:s3cr3t \ | ||
. | ||
jenkins-agent-python-centos7: | ||
name: Jenkins agent Python (CENTOS7) | ||
runs-on: ubuntu-18.04 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
FROM opendevstackorg/ods-jenkins-agent-base-centos7:latest | ||
|
||
# Labels consumed by Red Hat build service | ||
LABEL com.redhat.component="jenkins-agent-nodejs-rhel7-docker" \ | ||
name="openshift3/jenkins-agent-nodejs-rhel7" \ | ||
version="3.6" \ | ||
architecture="x86_64" \ | ||
io.k8s.display-name="Jenkins agent Nodejs" \ | ||
io.k8s.description="The jenkins agent nodejs image has the nodejs tools on top of the jenkins agent base image." \ | ||
io.openshift.tags="openshift,jenkins,agent,nodejs" | ||
|
||
ARG nexusUrl | ||
ARG nexusAuth | ||
|
||
ENV NODEJS_VERSION=16 \ | ||
NPM_CONFIG_PREFIX=$HOME/.npm-global \ | ||
PATH=$HOME/node_modules/.bin/:$HOME/.npm-global/bin/:$PATH \ | ||
BASH_ENV=/usr/local/bin/scl_enable \ | ||
ENV=/usr/local/bin/scl_enable \ | ||
PROMPT_COMMAND=". /usr/local/bin/scl_enable" \ | ||
LANG=en_US.UTF-8 \ | ||
LC_ALL=en_US.UTF-8 \ | ||
CHROME_VERSION=99.0.4844.74 | ||
|
||
# install google-chrome (for angular) | ||
RUN yum-config-manager --enable rhel-7-server-extras-rpms && \ | ||
yum-config-manager --enable rhel-7-server-optional-rpms | ||
|
||
ADD https://dl.google.com/linux/chrome/rpm/stable/x86_64/google-chrome-stable-${CHROME_VERSION}-1.x86_64.rpm /root/google-chrome.rpm | ||
RUN yum -y install redhat-lsb libXScrnSaver | ||
RUN yum -y install /root/google-chrome.rpm && \ | ||
ln -s /usr/lib64/libOSMesa.so.8 /opt/google/chrome/libosmesa.so && \ | ||
yum clean all && \ | ||
dbus-uuidgen > /etc/machine-id && \ | ||
rm /root/google-chrome.rpm | ||
|
||
# Install cypress dependencies | ||
# Please note: xorg-x11-server-Xvfb is not available on RHEL via yum anymore, so "RUN yum install -y xorg-x11-server-Xvfb" won't work. | ||
# Therefore this Dockerfile uses the version from CentOS instead. | ||
ADD http://mirror.centos.org/centos/7/os/x86_64/Packages/xorg-x11-server-Xvfb-1.20.4-10.el7.x86_64.rpm /root/xorg-x11-server-Xvfb.x86_64.rpm | ||
RUN yum install -y /root/xorg-x11-server-Xvfb.x86_64.rpm && \ | ||
yum install -y gtk2-2.24* && \ | ||
yum install -y libXtst* && \ | ||
yum install -y libXScrnSaver* && \ | ||
yum install -y GConf2* && \ | ||
yum install -y alsa-lib* && \ | ||
yum install -y nss-devel libnotify-devel gnu-free-sans-fonts && \ | ||
yum clean all -y | ||
# libXScrnSaver* provides libXss | ||
# GConf2* provides libgconf-2 | ||
# alsa-lib* provides libasound | ||
|
||
|
||
# Install NodeJS + Yarn + Angular CLI | ||
# installation details see: https://www.softwarecollections.org/en/ | ||
# and the base image relies on scl_enable | ||
COPY contrib/bin/scl_enable /usr/local/bin/scl_enable | ||
|
||
# Install NodeJS | ||
# https://github.com/nodesource/distributions#installation-instructions-1 | ||
RUN curl --silent --location https://rpm.nodesource.com/setup_${NODEJS_VERSION}.x | bash - && \ | ||
yum install -y nodejs && \ | ||
yum install -y gcc-c++ make | ||
|
||
# Install Yarn | ||
# https://classic.yarnpkg.com/en/docs/install/#centos-stable | ||
RUN curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | tee /etc/yum.repos.d/yarn.repo && \ | ||
yum install -y yarn && \ | ||
yum clean all -y | ||
|
||
# Install Python 3 (because node-gyp, an ionic dependency, uses it) and set it as default | ||
RUN yum install -y python3 py3-pip && \ | ||
update-alternatives --install /usr/bin/python python /usr/bin/python3 1 && \ | ||
python -V | ||
|
||
RUN npm config set registry=$nexusUrl/repository/npmjs/ && \ | ||
npm config set always-auth=true && \ | ||
npm config set _auth=$(echo -n $nexusAuth | base64) && \ | ||
npm config set [email protected] && \ | ||
npm config set ca=null && \ | ||
npm config set strict-ssl=false && \ | ||
yarn config set registry $nexusUrl/repository/npmjs/ -g && \ | ||
npm --version | ||
|
||
RUN chgrp -R 0 $HOME && \ | ||
chmod -R g=u $HOME | ||
USER 1001 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
FROM opendevstackorg/ods-jenkins-agent-base-ubi8:latest | ||
|
||
# Labels consumed by Red Hat build service | ||
LABEL com.redhat.component="jenkins-agent-nodejs-16-rhel7-container" \ | ||
name="openshift4/jenkins-agent-nodejs-16-rhel7" \ | ||
architecture="x86_64" \ | ||
io.k8s.display-name="Jenkins Agent Nodejs" \ | ||
io.k8s.description="The jenkins agent nodejs image has the nodejs tools on top of the jenkins slave base image." \ | ||
io.openshift.tags="openshift,jenkins,agent,nodejs" \ | ||
maintainer="[email protected]" | ||
|
||
ARG nexusUrl | ||
ARG nexusAuth | ||
|
||
ENV NODEJS_VERSION=16 \ | ||
YARN_VERSION=1.22.18 \ | ||
NPM_CONFIG_PREFIX=$HOME/.npm-global \ | ||
PATH=$HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin:$HOME/node_modules/.bin/:$HOME/.npm-global/bin/:$PATH \ | ||
LANG=en_US.UTF-8 \ | ||
LC_ALL=en_US.UTF-8 | ||
|
||
COPY contrib/bin/configure-agent /usr/local/bin/configure-agent | ||
|
||
# Generate machine ID | ||
RUN dbus-uuidgen > /etc/machine-id | ||
|
||
# Install NodeJS (https://rpm.nodesource.com/setup_${NODEJS_VERSION}.x does NOT work) | ||
RUN INSTALL_PKGS="nodejs nodejs-nodemon make gcc-c++" && \ | ||
yum module enable -y nodejs:${NODEJS_VERSION} && \ | ||
yum install -y --setopt=tsflags=nodocs --disableplugin=subscription-manager $INSTALL_PKGS && \ | ||
rpm -V $INSTALL_PKGS && \ | ||
yum clean all -y | ||
|
||
# Install Yarn | ||
# https://classic.yarnpkg.com/en/docs/install | ||
RUN curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version $YARN_VERSION | ||
|
||
# Install Cypress dependencies | ||
# https://docs.cypress.io/guides/getting-started/installing-cypress.html#System-requirements | ||
COPY yum.repos.d/google-chrome.repo /etc/yum.repos.d/google-chrome.repo | ||
COPY yum.repos.d/centos8.repo /etc/yum.repos.d/centos8.repo | ||
RUN yum repolist \ | ||
&& yum install -y xorg-x11-server-Xvfb gtk2-devel gtk3-devel libnotify-devel GConf2 nss libXScrnSaver alsa-lib \ | ||
&& yum install -y --enablerepo google-chrome google-chrome-stable \ | ||
&& yum clean all -y | ||
|
||
RUN npm config set registry=$nexusUrl/repository/npmjs/ && \ | ||
npm config set always-auth=true && \ | ||
npm config set _auth=$(echo -n $nexusAuth | base64) && \ | ||
npm config set [email protected] && \ | ||
npm config set ca=null && \ | ||
npm config set strict-ssl=false && \ | ||
yarn config set registry $nexusUrl/repository/npmjs/ -g && \ | ||
echo node version: $(node --version) && \ | ||
echo npm version: $(npm --version) && \ | ||
echo npx version: $(npx --version) && \ | ||
echo yarn version: $(yarn --version) | ||
|
||
RUN chown -R 1001:0 $HOME && \ | ||
chmod -R g+rw $HOME | ||
|
||
USER 1001 |
63 changes: 63 additions & 0 deletions
63
common/jenkins-agents/nodejs16/docker/contrib/bin/configure-agent
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
#!/bin/bash | ||
|
||
# extract the different element of an url into a JSON structure | ||
parse_url() { | ||
# extract the protocol | ||
proto="$(echo $1 | cut -f1 -d: )" | ||
if [[ ! -z $proto ]] ; then | ||
# remove the protocol | ||
url="$(echo ${1/"$proto://"/})" | ||
# extract the user (if any) | ||
login="$(echo $url | grep @ | cut -d@ -f1)" | ||
username="$(echo $login | cut -d: -f1)" | ||
password="$(echo $login | cut -d: -f2)" | ||
# extract the host | ||
host_port="$(echo ${url/$login@/} | cut -d/ -f1) " | ||
host="$(echo $host_port | cut -f1 -d:) " | ||
|
||
# by request - try to extract the port | ||
port="$(echo $host_port | sed -e 's,^.*:,:,g' -e 's,.*:\([0-9]*\).*,\1,g' -e 's,[^0-9],,g')" | ||
# extract the uri (if any) | ||
resource="/$(echo $url | grep / | cut -d/ -f2-)" | ||
fi | ||
echo -n "{ \"uri\": \"$1\" , \"url\": \"$url\" , \"proto\": \"$proto\" , \"login\": \"$login\" ," | ||
echo " \"username\": \"$username\" , \"password\": \"$password\" , \"host\": \"$host\" , \"port\": \"$port\" }" | ||
} | ||
|
||
get_npm_proxy_config(){ | ||
local proto json | ||
proto=$1 | ||
json=$2 | ||
username=$( echo $json | jq -r .username) | ||
password=$( echo $json | jq -r .password) | ||
host=$( echo $json | jq -r .host) | ||
port=$( echo $json | jq -r .port) | ||
proxy_url="$host:$port" | ||
|
||
if [ -n "$username" -a -n "$password" ]; then | ||
proxy_url="$proto://$username:$password@$proxy_url" | ||
fi | ||
|
||
echo $proxy_url | ||
} | ||
|
||
|
||
if [ -n "$http_proxy" ]; then | ||
json=$( parse_url $http_proxy ) | ||
proxy=$(get_npm_proxy_config http "$json") | ||
npm -g config set proxy $proxy | ||
fi | ||
|
||
if [ -n "$https_proxy" ]; then | ||
json=$( parse_url $https_proxy ) | ||
proxy=$(get_npm_proxy_config https "$json") | ||
npm -g config set https_proxy $proxy | ||
fi | ||
|
||
if [ -n "$no_proxy" ]; then | ||
npm -g config set noproxy $no_proxy | ||
fi | ||
|
||
if [ -n "$NPM_MIRROR_URL" ]; then | ||
npm -g config set registry "$NPM_MIRROR_URL" | ||
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
# This will make scl collection binaries work out of box. | ||
unset BASH_ENV PROMPT_COMMAND ENV | ||
source scl_source enable rh-nodejs16 |
13 changes: 13 additions & 0 deletions
13
common/jenkins-agents/nodejs16/docker/yum.repos.d/centos8.repo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
[centos-baseos] | ||
name=CentOS-8-BaseOS | ||
baseurl=http://mirror.centos.org/centos/8-stream/BaseOS/x86_64/os/ | ||
enabled=1 | ||
gpgcheck=1 | ||
gpgkey=https://www.centos.org/keys/RPM-GPG-KEY-CentOS-Official | ||
|
||
[centos-appstream] | ||
name=CentOS-8-AppStream | ||
baseurl=http://mirror.centos.org/centos/8-stream/AppStream/x86_64/os/ | ||
enabled=1 | ||
gpgcheck=1 | ||
gpgkey=https://www.centos.org/keys/RPM-GPG-KEY-CentOS-Official |
6 changes: 6 additions & 0 deletions
6
common/jenkins-agents/nodejs16/docker/yum.repos.d/google-chrome.repo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
[google-chrome] | ||
name=google-chrome | ||
baseurl=https://dl.google.com/linux/chrome/rpm/stable/$basearch | ||
enabled=0 | ||
gpgcheck=1 | ||
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
namespace ods | ||
selector app=jenkins-agent-nodejs16 | ||
param-file ../../../../../ods-configuration/ods-core.env | ||
ignore-unknown-parameters true | ||
bc,is |
Oops, something went wrong.