Данная лабораторная работа посвещена изучению процесса создания артефактов на примере Github Release
$ open https://help.github.com/articles/creating-releases/
- 1. Создать публичный репозиторий с названием lab09 на сервисе GitHub
- 2. Ознакомиться со ссылками учебного материала
- 3. Получить токен для доступа к репозиториям сервиса GitHub
- 4. Выполнить инструкцию учебного материала
- 5. Составить отчет и отправить ссылку личным сообщением в Slack
$ export GITHUB_TOKEN=<полученный_токен>
$ export GITHUB_USERNAME=<имя_пользователя>
$ export PACKAGE_MANAGER=<пакетный менеджер>
$ export GPG_PACKAGE_NAME=<gpg2|gpg>
# for *-nix system
$ $PACKAGE_MANAGER install xclip
$ alias gsed=sed
$ alias pbcopy='xclip -selection clipboard'
$ alias pbpaste='xclip -selection clipboard -o'
$ cd ${GITHUB_USERNAME}/workspace
$ pushd .
$ source scripts/activate
$ go get github.com/aktau/github-release
$ git clone https://github.com/${GITHUB_USERNAME}/lab08 projects/lab09
$ cd projects/lab09
$ git remote remove origin
$ git remote add origin https://github.com/${GITHUB_USERNAME}/lab09
$ gsed -i 's/lab08/lab09/g' README.md
$ $PACKAGE_MANAGER install ${GPG_PACKAGE_NAME}
$ gpg --list-secret-keys --keyid-format LONG
$ gpg --full-generate-key
$ gpg --list-secret-keys --keyid-format LONG
$ gpg -K ${GITHUB_USERNAME}
$ GPG_KEY_ID=$(gpg --list-secret-keys --keyid-format LONG | grep ssb | tail -1 | awk '{print $2}' | awk -F'/' '{print $2}')
$ GPG_SEC_KEY_ID=$(gpg --list-secret-keys --keyid-format LONG | grep sec | tail -1 | awk '{print $2}' | awk -F'/' '{print $2}')
$ gpg --armor --export ${GPG_KEY_ID} | pbcopy
$ pbpaste
$ open https://github.com/settings/keys
$ git config user.signingkey ${GPG_SEC_KEY_ID}
$ git config gpg.program gpg
$ test -r ~/.bash_profile && echo 'export GPG_TTY=$(tty)' >> ~/.bash_profile
$ echo 'export GPG_TTY=$(tty)' >> ~/.profile
$ cmake -H. -B_build -DCPACK_GENERATOR="TGZ"
$ cmake --build _build --target package
$ travis login --auto
$ travis enable
$ git tag -s v0.1.0.0
$ git tag -v v0.1.0.0
$ git show v0.1.0.0
$ git push origin master --tags
$ github-release --version
$ github-release info -u ${GITHUB_USERNAME} -r lab09
$ github-release release \
--user ${GITHUB_USERNAME} \
--repo lab09 \
--tag v0.1.0.0 \
--name "libprint" \
--description "my first release"
$ export PACKAGE_OS=`uname -s` PACKAGE_ARCH=`uname -m`
$ export PACKAGE_FILENAME=print-${PACKAGE_OS}-${PACKAGE_ARCH}.tar.gz
$ github-release upload \
--user ${GITHUB_USERNAME} \
--repo lab09 \
--tag v0.1.0.0 \
--name "${PACKAGE_FILENAME}" \
--file _build/*.tar.gz
$ github-release info -u ${GITHUB_USERNAME} -r lab09
$ wget https://github.com/${GITHUB_USERNAME}/lab09/releases/download/v0.1.0.0/${PACKAGE_FILENAME}
$ tar -ztf ${PACKAGE_FILENAME}
$ popd
$ export LAB_NUMBER=09
$ git clone https://github.com/tp-labs/lab${LAB_NUMBER} tasks/lab${LAB_NUMBER}
$ mkdir reports/lab${LAB_NUMBER}
$ cp tasks/lab${LAB_NUMBER}/README.md reports/lab${LAB_NUMBER}/REPORT.md
$ cd reports/lab${LAB_NUMBER}
$ edit REPORT.md
$ gistup -m "lab${LAB_NUMBER}"
Copyright (c) 2015-2021 The ISC Authors
Установка утилиты gpg
sudo apt install gpg
Команда для перечисления длинной формы идентификаторов секретных ключей GPG, выводится как открытый, так и закрытый ключ. Закрытый ключ необходим для подписи коммитов или тегов:
gpg --list-secret-keys --keyid-format LONG
так как используемая верся gpg 2.2.27 - при помощи данной команды можно создать ключ-пару GPG:
gpg --full-generate-key
Далее необходимо выбрать тип и размер ключа. Нажатием клавиши Enter выбираем значения по умолчанию. Потом нужно выбрать время, в течение которого ключ должен быть действителен (нажатием Enter создаём бессрочный ключ) Вводим идентификационные данные пользователя и кодовую фразу
Выводим наши ключи
gpg --list-secret-keys --keyid-format LONG
Извлекаем в переменную GPG_KEY_ID и GPG_SEC_KEY_ID длинные формы идентификаторов ключей GPG (открытого и закрытого соответсвенно)
GPG_KEY_ID=$(gpg --list-secret-keys --keyid-format LONG | grep ssb | tail -1 | awk '{print $2}' | awk -F'/' '{print $2}')
GPG_SEC_KEY_ID=$(gpg --list-secret-keys --keyid-format LONG | grep sec | tail -1 | awk '{print $2}' | awk -F'/' '{print $2}')
Экспорт публичного ключа GPG в формате ASCII armor для добавления в GitHub аккаунт по переменной, и параллельно вывод в текстовом формате
gpg --armor --export ${GPG_KEY_ID} | cat
Настройка GPG для подписания коммитов Git
- Сообщаем Git об использовании ключа, установка ключа для использования
- Установка "шифровальной программой" gpg
git config user.signingkey ${GPG_SEC_KEY_ID}
git config gpg.program gpg
git tag -s v0.1.0.0
git tag -v v0.1.0.0
git show v0.1.0.0
git push origin main --tags