Личный блог с мыслями и наблюдениями

Github Actions и автоматическое создание релизов на Go

27.09.2019   техническое   github   go  

Если вам как и мне надоело делать релизы на Github для тех кто хочет попробовать последние изменения в коде, то можно автоматизировать это средствами самого Github, а именно Github Actions.

Следующий код при коммите создаст (или обновит релиз с именем/тэгом latest) и выложит в него собранные бинарники под linux/os x/arm/windows.


name: Release on commit or tag on: push: branches: - master - release/* jobs: build: name: Build runs-on: ubuntu-latest steps: - name: Set up Go 1.13 uses: actions/setup-go@v1 with: go-version: 1.13 - name: Check out source code uses: actions/checkout@master - name: Build OS X binary run: GOOS=darwin GOARCH=amd64 go build -o $(echo $GITHUB_REPOSITORY | cut -d "/" -f 2)-darwin64 -a -ldflags '-s -w' . - name: Build Linux binary run: GOOS=linux GOARCH=amd64 go build -o $(echo $GITHUB_REPOSITORY | cut -d "/" -f 2)-linux64 -a -ldflags '-s -w' . - name: Build ARM binary run: GOOS=linux GOARCH=arm GOARM=6 go build -o $(echo $GITHUB_REPOSITORY | cut -d "/" -f 2)-arm -a -ldflags '-s -w' . - name: Build Windows binary run: GOOS=windows GOARCH=amd64 go build -o $(echo $GITHUB_REPOSITORY | cut -d "/" -f 2).exe -a -ldflags '-s -w' . - name: Install olsu run: wget https://github.com/Telling/olsu/releases/download/v0.1.0/olsu-linux-amd64.zip && unzip olsu-linux-amd64.zip && chmod +x olsu-linux-amd64 && pwd && ls -la - name: Create or update release env: OLSU_TOKEN: ${{ secrets.GITHUB_TOKEN }} OLSU_DELETE_RELEASE: yes run: ./olsu-linux-amd64 -o $(echo $GITHUB_REPOSITORY | cut -d "/" -f 1) -r $(echo $GITHUB_REPOSITORY | cut -d "/" -f 2) "Latest release" "latest" "Automatic release" $(echo $GITHUB_REPOSITORY | cut -d "/" -f 2)-darwin64 $(echo $GITHUB_REPOSITORY | cut -d "/" -f 2)-linux64 $(echo $GITHUB_REPOSITORY | cut -d "/" -f 2)-arm $(echo $GITHUB_REPOSITORY | cut -d "/" -f 2).exe


nginx for frontenders

26.04.2016   техническое   код   nginx   frontend  

Очень часто бывает, что фронтенд-разработчику необходимо добавить или изменить функционал сайта, но нет возможности получить его dev-версию, на которую можно повлиять. Обычно это пытаются обойти запуском браузера с отключенной безопасностью, но не всегда это помогает.

Я расскажу как при работе с «чёрным ящиком» иметь возможность воздействать на его ответы, а также как решать проблемы связанные с безопасностью.

 

Читать далее →


Настройка Monit для поддержания жизни nginx/postgresql

29.12.2015   техническое   postgresql   nginx   monit  

Установка

apt-get install monit

Мониторинг PostgreSQL

check process postgres with pidfile /var/postgres/postmaster.pid
group database
start program = "/etc/init.d/postgresql start"
stop program = "/etc/init.d/postgresql stop"
if failed host 127.0.0.1 port 5432 protocol pgsql then restart

Мониторинг nginx

check process nginx with pidfile /var/run/nginx.pid
	start program = "/etc/init.d/nginx start"
	stop program  = "/etc/init.d/nginx stop"
 	group www-data (for ubuntu, debian)


Postgresql reload

25.09.2015   техническое   postgres  

Часто бывает, что после того как внесешь изменения в pg_hba.conf нужно сделать рестарт, чтобы изменения вступили в силу. Оказывается, можно не делать, а выполнить:

# pg_ctl reload или SELECT pg_reload_conf();


Логирование изменений в Postgresql


Иногда нужно добавить логирование изменений в некоторых таблицах, для этого приходится городить сложную систему, которая будет отслеживать изменения и записывать в нужное место что поменялось, и есть большой риск забыть добавить логирование в каком-то месте, эту проблему можно изящно решить сделав триггер на изменение таблицы.

Читать далее →



Язык Rust

30.07.2013   техническое   код   rust  

Rust — это экспериментальный язык программирования, разрабатываемый Mozilla Research. Основная задача Rust — быть удобным языком для написания больших клиент-серверных приложений, работающих в сети Интернет. Такое позиционирование привело к возникновению набора функциональности с акцентом на безопасность, контролем за использованием памяти и параллельным выполнением задач. Производительность приложения на Rust должна быть сравнимой с производительностью C++ приложений.

Выдержка из Википедии

Синтаксис Rust похож на C/C++ с блоками разделенными фигурными скобками и операторами такими как if, else, do, while и for.

А теперь вольный перевод хорошей, хотя и немного старой статьи A Quick Look at the Rust Programming Language.

Читать далее →


Riak — как универсальное решение

30.07.2013   техническое   riak   код  

Riak — это документно-ориентированная база данных с поддержкой HTTP, JSON, REST.

На основе Riak можно реализовать полноценный проект с CMS, поддержкой пользователей и загрузкой файлов.

Возможности

  • Хранение объектов
  • Ссылки(связи) между объектами
  • Использование в качестве кэша
  • Map/reduce, distributed grep
  • Отказоустойчивость
  • Поиск

Читать далее →