offline-twitter/.build.yml

158 lines
4.8 KiB
YAML

image: ubuntu/focal
secrets:
- 31c0c342-c396-4190-9637-1c3cedd705a5 # SSH key
- 4e6bb736-559c-4b3e-ba04-331f5808cacc # aptrepo SSH key (to upload the build result to apt.playfulpachyderm.com)
- 8803f94a-8b8b-4966-aac7-4b8e24c328ce # Gitlab access token
- c84e3f2c-7c97-4cef-859e-8b13de32a7be # ~/.ssh/known_hosts (gitlab.com)
sources:
- git@gitlab.com:playfulpachyderm/twitter_offline_engine.git
packages:
- wget
- build-essential
- sqlite3
tasks:
- source_code_checkout_kludge: |
SECONDS=0
cd twitter_offline_engine
basename $GITLAB_REF | xargs git checkout
duration=$SECONDS
echo "Task completed in $(($duration / 60))m$(($duration % 60))s."
- install_go: |
SECONDS=0
wget https://golang.org/dl/go1.16.4.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.16.4.linux-amd64.tar.gz
sudo ln -s /usr/local/go/bin/go /usr/bin/go
duration=$SECONDS
echo "Task completed in $(($duration / 60))m$(($duration % 60))s."
- test_terminal_utils: |
SECONDS=0
cd twitter_offline_engine/terminal_utils
go get .
go test -bench=. -cover
duration=$SECONDS
echo "Task completed in $(($duration / 60))m$(($duration % 60))s."
- test_scraper: |
SECONDS=0
cd twitter_offline_engine/scraper
go get .
go test -bench=. -cover
duration=$SECONDS
echo "Task completed in $(($duration / 60))m$(($duration % 60))s."
- test_persistence: |
SECONDS=0
cd twitter_offline_engine/persistence
go get .
mkdir test_profiles/
go test -bench=. -cover
duration=$SECONDS
echo "Task completed in $(($duration / 60))m$(($duration % 60))s."
- install_golangci-lint: |
SECONDS=0
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sudo sh -s -- -b /usr/local/go/bin v1.50.0
sudo ln /usr/local/go/bin/golangci-lint /usr/local/bin/golangci-lint
duration=$SECONDS
echo "Task completed in $(($duration / 60))m$(($duration % 60))s."
- lint: |
SECONDS=0
cd twitter_offline_engine
golangci-lint run
duration=$SECONDS
echo "Task completed in $(($duration / 60))m$(($duration % 60))s."
- integration_test: |
SECONDS=0
cd twitter_offline_engine/cmd
./tests.sh
duration=$SECONDS
echo "Task completed in $(($duration / 60))m$(($duration % 60))s."
- version_bump_test: |
SECONDS=0
cd twitter_offline_engine/cmd
version=$(git branch --show-current | grep -Poh "(?<=^release-)\d+\.\d+\.\d+") || true
if [[ -z "$version" ]]
then
# Not on a release branch; just exit this task
complete-build
fi
sudo apt install -y curl gnupg
curl https://apt.playfulpachyderm.com/KEY.gpg | sudo apt-key add -
echo "deb https://apt.playfulpachyderm.com/ ./" | sudo tee /etc/apt/sources.list.d/offline_twitter.list
sudo apt update
sudo apt install -y offline-twitter-engine # Latest released version
which twitter # Ensure that it got installed
twitter create_profile outdated_profile
cd outdated_profile
# Create some sample data
twitter fetch_user michaelmalice
twitter get_user_tweets michaelmalice
# Compile the binary with the version number
cd .. && ./compile.sh $version
cd outdated_profile
# Now test the upgrade using the newer version
which ../tw
../tw fetch_user michaelmalice # Any operation other than `create_profile` should trigger the upgrade
duration=$SECONDS
echo "Task completed in $(($duration / 60))m$(($duration % 60))s."
- dpkg_build_and_upload: |
SECONDS=0
cd twitter_offline_engine/build
version=$(git branch --show-current | grep -Poh "(?<=^release-)\d+\.\d+\.\d+") || true
if [[ -z "$version" ]]
then
# Not on a release branch; just exit this task
exit
fi
./build_dpkg.sh $version
echo "|1|wHeqDXntszAtw63JZ2a8lRFNkzo=|i4RPdW3eWWGZFcRx6ttH66pryWw= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFOHLdwogAIaEhVmUCgKMyHQpWsdBH7k29vMs9mrPoAhD9xdtmil0/wLniyBkflqOAPF/XXvsqYb6+lgGYRN40U=" >> ~/.ssh/known_hosts
echo "|1|CMeJL187AvCdC7uMVPZPP8JtmgY=|24sUol3rn1+7sGBbXkhOSNO/5Q4= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFOHLdwogAIaEhVmUCgKMyHQpWsdBH7k29vMs9mrPoAhD9xdtmil0/wLniyBkflqOAPF/XXvsqYb6+lgGYRN40U=" >> ~/.ssh/known_hosts
scp -i ~/.ssh/4e6bb736-559c-4b3e-ba04-331f5808cacc offline-twitter-engine_${version}_all.deb aptrepo@apt.playfulpachyderm.com:/apt-repo/test-repo
ssh -i ~/.ssh/4e6bb736-559c-4b3e-ba04-331f5808cacc aptrepo@apt.playfulpachyderm.com "cd ~/test-repo && ./update.sh"
duration=$SECONDS
echo "Task completed in $(($duration / 60))m$(($duration % 60))s."