kind: pipeline name: build-package-deploy steps: - name: build image: composer:1.8.6 commands: - composer -V - composer install - name: secrets image: alpine:3.10 environment: EMAIL_HOST: from_secret: email_host EMAIL_PORT: from_secret: email_port EMAIL_NAME: from_secret: email_name EMAIL_USERNAME: from_secret: email_username EMAIL_PASSWORD: from_secret: email_password PGSQL_DATABASE: from_secret: pgsql_database PGSQL_USERNAME: from_secret: pgsql_username PGSQL_PASSWORD: from_secret: pgsql_password CMS_API_TOKEN: from_secret: cms_api_token KEYBASE_VERIFICATION: from_secret: keybase_verification GOOGLE_SITE_VERIFICATION: from_secret: google_site_verification commands: - mv AppConfigBuild.php AppConfig.php - sed -i "s|pgsql_database|$PGSQL_DATABASE|" AppConfig.php - sed -i "s|pgsql_username|$PGSQL_USERNAME|" AppConfig.php - sed -i "s|pgsql_password|$PGSQL_PASSWORD|" AppConfig.php - sed -i "s|email_host|$EMAIL_HOST|" AppConfig.php - sed -i "s|email_port|$EMAIL_PORT|" AppConfig.php - sed -i "s|email_name|$EMAIL_NAME|" AppConfig.php - sed -i "s|email_username|$EMAIL_USERNAME|" AppConfig.php - sed -i "s|email_password|$EMAIL_PASSWORD|" AppConfig.php - sed -i "s|cms_api_token|$CMS_API_TOKEN|" AppConfig.php - echo "$KEYBASE_VERIFICATION" > public/.well-known/keybase.txt - echo "$GOOGLE_SITE_VERIFICATION" > public/$(echo $GOOGLE_SITE_VERIFICATION | awk '{ print $2 }') - name: synchronize image: alpine:3.10 environment: NAME: thedroneely.com SSH_KEY: from_secret: ssh_key SSH_KEY_PASSWORD: from_secret: ssh_key_password SERVER_USER: from_secret: server_user ORIGIN_HOST: from_secret: origin_host ORIGIN_USER: from_secret: origin_user ORIGIN_PORT: from_secret: origin_port commands: - apk add openssh - echo "$SSH_KEY" > ssh-key && chmod 600 ssh-key - eval $(ssh-agent) - echo "$SSH_KEY_PASSWORD" | ssh-add ssh-key - > scp -rp -o StrictHostKeyChecking=no -vT -i ssh-key $SERVER_USER@$NAME:/srv/http/thedroneely.com/generators/hugo/content generators/hugo/ - ls -lR generators/hugo/content - > scp -rp -o StrictHostKeyChecking=no -vT -i ssh-key $SERVER_USER@$NAME:/srv/http/thedroneely.com/cockpit/storage/data/collections.sqlite . - ls -la - > scp -rp -o StrictHostKeyChecking=no -P $ORIGIN_PORT -vT -i ssh-key collections.sqlite $ORIGIN_USER@$ORIGIN_HOST:/srv/http/staging/thedroneely.com/cockpit/storage/data/collections.sqlite.new - > ssh -o StrictHostKeyChecking=no -p $ORIGIN_PORT -vT -i ssh-key $ORIGIN_USER@$ORIGIN_HOST ' cd /srv/http/staging/thedroneely.com/cockpit/storage/data/ && cmp --silent collections.sqlite collections.sqlite.new || { cp collections.sqlite collections.sqlite-$(date +%H%M-%d%m-%Y) && cp collections.sqlite.new collections.sqlite && touch collections.sqlite; } ' - ls -la - scp -rp -o StrictHostKeyChecking=no -vT -i ssh-key $SERVER_USER@$NAME:/srv/http/thedroneely.com/public/images . - scp -rp -o StrictHostKeyChecking=no -vT -i ssh-key $SERVER_USER@$NAME:/srv/http/thedroneely.com/public/videos . - ls -la - > scp -r -o StrictHostKeyChecking=no -P $ORIGIN_PORT -vT -i ssh-key images/* $ORIGIN_USER@$ORIGIN_HOST:/srv/http/staging/thedroneely.com/public/images - > ssh -o StrictHostKeyChecking=no -p $ORIGIN_PORT -vT -i ssh-key $ORIGIN_USER@$ORIGIN_HOST 'find /srv/http/staging/thedroneely.com/public/images -type f -exec touch -d "2 days ago" {} +' - > scp -r -o StrictHostKeyChecking=no -P $ORIGIN_PORT -vT -i ssh-key videos/* $ORIGIN_USER@$ORIGIN_HOST:/srv/http/staging/thedroneely.com/public/videos - name: minify image: alpine:3.10 commands: - wget https://github.com/tdewolff/minify/releases/download/v2.5.0/minify_2.5.0_linux_amd64.tar.gz - tar -xvf minify_2.5.0_linux_amd64.tar.gz - ./minify --version - ./minify public/css/tdro.css > public/css/tdro.min.$(date +%d%m%Y%H%M).css - ./minify public/css/tdro-dark.css > public/css/tdro-dark.min.$(date +%d%m%Y%H%M).css - ./minify public/css/bulma-timeline.css > public/css/bulma-timeline.min.$(date +%d%m%Y%H%M).css - ./minify public/css/syntax-highlight.css > public/css/syntax-highlight.min.$(date +%d%m%Y%H%M).css - ./minify public/js/app.js > public/js/app-js.min.$(date +%d%m%Y%H%M).js - sed -i "s|tdro.css|$(find public/css -name "tdro.min*" | awk -F/ '{print $NF}')|" app/views/snippets/stylesheets.php - sed -i "s|tdro-dark.css|$(find public/css -name "tdro-dark.min*" | awk -F/ '{print $NF}')|" app/views/snippets/stylesheets.php - sed -i "s|bulma-timeline.css|$(find public/css -name "bulma-timeline.min*" | awk -F/ '{print $NF}')|" app/views/resume.view.php - sed -i "s|syntax-highlight.css|$(find public/css -name "syntax-highlight.min*" | awk -F/ '{print $NF}')|" generators/hugo/themes/tdro/layouts/_default/single.html - sed -i "s|app.js|$(find public/js -name "app-js.min*" | awk -F/ '{print $NF}')|" app/views/partials/footer.php - name: openring image: debian:stretch-slim commands: - apt-get update - apt-get install -y wget - wget https://www.thedroneely.com/openring - chmod +x openring - > ./openring -s https://drewdevault.com/feed.xml -s https://mxb.dev/feed.xml -s https://www.taniarascia.com/rss.xml < generators/openring/template.html > generators/hugo/themes/tdro/layouts/partials/openring.html - name: prepare image: alpine:3.10 commands: - sed -i 's|""|"https://www.thedroneely.com/"|' generators/hugo/config.yaml - grep baseURL generators/hugo/config.yaml - cd generators/hugo && ln -s ../../public/ public - name: package image: alpine:3.10 environment: NAME: thedroneely.com SSH_KEY: from_secret: ssh_key SSH_KEY_PASSWORD: from_secret: ssh_key_password SERVER_USER: from_secret: server_user commands: - apk add openssh - echo "$SSH_KEY" > ssh-key && chmod 600 ssh-key - eval $(ssh-agent) - echo "$SSH_KEY_PASSWORD" | ssh-add ssh-key - > tar -zcvf $NAME.tar.gz app bootstrap generators public vendor AppConfig.php composer.json composer.lock - > scp -r -o StrictHostKeyChecking=no -vT -i ssh-key $NAME.tar.gz $SERVER_USER@$NAME:/srv/deploys/$NAME/ - name: deploy image: alpine:3.10 environment: NAME: thedroneely.com SSH_KEY: from_secret: ssh_key SSH_KEY_PASSWORD: from_secret: ssh_key_password SERVER_USER: from_secret: server_user commands: - apk add openssh - echo "$SSH_KEY" > ssh-key && chmod 600 ssh-key - eval $(ssh-agent) - echo "$SSH_KEY_PASSWORD" | ssh-add ssh-key - > ssh -o StrictHostKeyChecking=no -vT -i ssh-key $SERVER_USER@$NAME ' export DATE=$(date +%H%M-%d%m-%Y) NAME=thedroneely.com && cd /srv/deploys/$NAME && mkdir -p $NAME-$DATE/public/js $NAME-$DATE/public/css && cp -r /srv/deploys/$NAME/$NAME-deploy/public/js/*min* $NAME-$DATE/public/js/ && cp -r /srv/deploys/$NAME/$NAME-deploy/public/css/*min* $NAME-$DATE/public/css/ && tar -xvf $NAME.tar.gz -C $NAME-$DATE && rm $NAME.tar.gz && cp -r /srv/deploys/$NAME/$NAME-deploy/cockpit $NAME-$DATE/ && cp -r /srv/deploys/$NAME/$NAME-deploy/public/images $NAME-$DATE/public/ && cp -r /srv/deploys/$NAME/$NAME-deploy/public/uploads $NAME-$DATE/public/ && cp -r /srv/deploys/$NAME/$NAME-deploy/public/videos $NAME-$DATE/public/ && cp -r /srv/deploys/$NAME/$NAME-deploy/public/download $NAME-$DATE/public/ || true && cd $NAME-$DATE/generators/hugo && hugo && cd /srv/deploys/$NAME && chattr -i -Rf $(ls -t | awk "NR>8") || true && rm -rf $(ls -t | awk "NR>8") && ln -s $NAME-$DATE $NAME-deploy-$DATE && mv -Tf $NAME-deploy-$DATE $NAME-deploy && chown nginx:nginx -R $NAME-deploy $NAME-$DATE && chattr +i $NAME-$DATE/generators/hugo/content/posts/archive.md && chattr +i $NAME-$DATE/generators/hugo/content/projects/archive.md && find $NAME-$DATE/public/images -type f -exec touch -d "2 days ago" {} + && ls -la '