Docker — Android SDK for Jenkins

За основу берем Ubuntu 18.04, устанавливаем Android SDK, так же устанавливаем ruby, nodejs и yarn. И пробрасываем пользователя Jenkins в контейнер, для выполнения привилегированных команд.

Dockerfile:

FROM ubuntu:18.04

ENV ANDROID_SDK_HOME /opt/android-sdk-linux
ENV ANDROID_SDK_ROOT /opt/android-sdk-linux
ENV ANDROID_HOME /opt/android-sdk-linux
ENV ANDROID_SDK /opt/android-sdk-linux
ENV DEBIAN_FRONTEND noninteractive

RUN dpkg --add-architecture i386 && apt update && apt install -y \
    curl \
    expect \
    git \
    make \
    libc6:i386 \
    libgcc1:i386 \
    libncurses5:i386 \
    libstdc++6:i386 \
    zlib1g:i386 \
    openjdk-8-jdk \
    wget \
    unzip \
    vim \
    openssh-client \
    locales \
    && apt-get clean

RUN  rm -rf /var/lib/apt/lists/* && localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8

ENV LANG en_US.UTF-8

RUN groupadd android && useradd -d /opt/android-sdk-linux -g android -u 1000 android

COPY tools /opt/tools
COPY licenses /opt/licenses

WORKDIR /opt/android-sdk-linux

RUN apt update && \
    apt install -y sudo gnupg2 && \
    curl -sL https://deb.nodesource.com/setup_8.x | bash - && \
    curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
    echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
    apt update && \
    apt install -y build-essential gnupg2 ruby-full nodejs yarn && \
    gem update --system && \
    gem install bundle && \
    echo "jenkins:x:106:111:Jenkins,,,:/home:/bin/bash" >> /etc/passwd && \
    /opt/tools/entrypoint.sh built-in && \
    chown -R jenkins /opt/android-sdk-linux && \
    chown -R jenkins /home

COPY sudoers /etc/sudoers
COPY group /etc/group

CMD /opt/tools/entrypoint.sh built-in

Читать далее "Docker — Android SDK for Jenkins"

Fastlane — Decrypt distribution certificate

При генерации сертификат с типом "iOS Distribution" при помощи Fastlane, чтобы его использовать, нужно его декриптить и "упаковать" в один .p12 файл

Перейдем в репозитории сертификатов в директорию "certs/distribution"

Там будет два файла, с расширениями: .cer и .p12

Представим, что их имена:

  • XXXXXXXXXX.cer
  • XXXXXXXXXX.p12

А пароль при создании был: 12345678

Выполняем следующее:

openssl aes-256-cbc -k "12345678" -in "XXXXXXXXXX.cer" -out "cert.der" -a -d
openssl x509 -inform der -in cert.der -out cert.pem
openssl aes-256-cbc -k "12345678" -in "XXXXXXXXXX.p12" -out "key.pem" -a -d

Шифруем и упаковываем все в один файл:

openssl pkcs12 -export -out "cert.p12" -inkey "key.pem" -in "cert.pem" -password pass:12345678

Тут пароль можно задать который был, а можно новый для этого файла.

Fastlane — Получение Apple сертификатов

Скачиваем репозиторий с кодом. Переходим в директорию кода для iOS и выполняем:

fastlane init

 

[✔] ?
[✔] Looking for iOS and Android projects in current directory...
[11:06:05]: Created new folder './fastlane'.
[11:06:05]: Detected an iOS/macOS project in the current directory: 'My-iOS-app.xcworkspace'
[11:06:05]: -----------------------------
[11:06:05]: --- Welcome to fastlane ? ---
[11:06:05]: -----------------------------
[11:06:05]: fastlane can help you with all kinds of automation for your mobile app
[11:06:05]: We recommend automating one task first, and then gradually automating more over time
[11:06:05]: What would you like to use fastlane for?
1. ? Automate screenshots
2. ?✈️ Automate beta distribution to TestFlight
3. ? Automate App Store distribution
4. ? Manual setup - manually setup your project to automate your tasks

Для нас подходит 4 — "Manual setup"

Читать далее "Fastlane — Получение Apple сертификатов"

Nginx — Timeout

Для изменения timeout при проксировании нужно в блок "server" добавить следующее:

    proxy_connect_timeout       600;
    proxy_send_timeout          600;
    proxy_read_timeout          600;
    send_timeout                600;

 

600 — время в секундах

Если используется FastCGI, то timeout можно задать следующим образом:

    fastcgi_connect_timeout 	300s;
    fastcgi_send_timeout        300s;
    fastcgi_read_timeout        300s;

Kubernetes — Minikube установка

Все действия проводились на Ubuntu 18.04

Для начала нужно установить VirtualBox или WMvare. В данном примере будет использоваться VirtualBox.

Добавим репозиторий и ключи:

echo "deb http://download.virtualbox.org/virtualbox/debian $(lsb_release -sc) contrib" | sudo tee -a /etc/apt/sources.list
wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -

Обновим список репозиторием и установим VirtualBox:

sudo apt-get update
sudo apt install virtualbox

Добавим своего пользователя в группу VirtualBox'a:

sudo usermod -a -G vboxusers `whoami`

Читать далее "Kubernetes — Minikube установка"

Kubernetes — Helm 2 установка

Перейдем на страницу бинарных версий и найдем 2-ую версию:

https://github.com/helm/helm/releases/latest

Скачаем:

wget https://storage.googleapis.com/kubernetes-helm/helm-v2.16.1-linux-amd64.tar.gz

Разархивируем и скопируем два бинарника в "/bin/"

 

 

Создадим сервис аккаунт для tiller'а:

kubectl create serviceaccount --namespace kube-system tiller

 

И предоставим ему права для кластера :

kubectl create clusterrolebinding tiller-cluster-rule \
--clusterrole=cluster-admin --serviceaccount=kube-system:tiller

 

Инициализируем helm, указав созданный сервис аккаунт:

helm init --service-account tiller

Rclone Google Drive + Backup WordPress

Устанавливаем Rclone:

curl https://rclone.org/install.sh | sudo bash

Создаем новый конфиг и задаем ему имя:

rclone config
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
name> GoogleDrive

Читать далее "Rclone Google Drive + Backup WordPress"

AWS — S3 Bucket Public with full access to user

  • Пользователь: artem-s3-user
  • S3 корзина: artem-s3-bucket

Создаем S3 Bucket, права пока не задаем, просто запоминаем название бакета. Переходим в IAM и создаем пользователя, и добавляем ему роль со следующим содержимым:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::arn:aws:s3:::artem-s3-bucket/*"
        },
        {
            "Sid": "2",
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::/arn:aws:s3:::artem-s3-bucket/*"
        },
        {
            "Sid": "3",
            "Effect": "Allow",
            "Action": [
                "s3:PutAccountPublicAccessBlock",
                "s3:GetAccountPublicAccessBlock",
                "s3:ListAllMyBuckets",
                "s3:HeadBucket"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor3",
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::artem-s3-bucket/*",
                "arn:aws:s3:::artem-s3-bucket"
            ]
        }
    ]
}

Читать далее "AWS — S3 Bucket Public with full access to user"