image: golang:latest stages: - build - test - deploy before_script: - mkdir -p "/go/src/dev.sum7.eu/$CI_PROJECT_NAMESPACE/" - cp -R "/builds/$CI_PROJECT_PATH" "/go/src/dev.sum7.eu/$CI_PROJECT_NAMESPACE/" - cd "/go/src/dev.sum7.eu/$CI_PROJECT_PATH" - go get -d -t ./... build-my-project: stage: build script: - go install "dev.sum7.eu/$CI_PROJECT_PATH" - mv "/go/bin/$CI_PROJECT_NAME" "/builds/$CI_PROJECT_PATH" artifacts: paths: - config_example.conf - "$CI_PROJECT_NAME" test-my-project: stage: test script: - go get github.com/client9/misspell/cmd/misspell - find . -type f | grep -v webroot/assets | xargs misspell -error - ./.ci/check-gofmt - ./.ci/check-testfiles - go test $(go list ./... | grep -v /vendor/) -v -coverprofile .testCoverage.txt artifacts: paths: - .testCoverage.txt test-race-my-project: stage: test script: - go test -race ./... deploy: stage: deploy only: - master script: - go install "dev.sum7.eu/$CI_PROJECT_PATH" - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )' - 'which rsync || ( apt-get update -y && apt-get install rsync -y )' - eval $(ssh-agent -s) - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null - rsync -e "ssh -6 -o StrictHostKeyChecking=no -p $SSH_PORT" -a --delete "/builds/$CI_PROJECT_PATH/webroot/" "$CI_PROJECT_NAME@$SSH_HOST":/opt/$CI_PROJECT_NAME/webroot/ - ssh -6 -o StrictHostKeyChecking=no -p $SSH_PORT "$CI_PROJECT_NAME@$SSH_HOST" sudo /usr/bin/systemctl stop $CI_PROJECT_NAME - scp -6 -o StrictHostKeyChecking=no -P $SSH_PORT "/go/bin/$CI_PROJECT_NAME" "$CI_PROJECT_NAME@$SSH_HOST":/opt/$CI_PROJECT_NAME/bin - ssh -6 -o StrictHostKeyChecking=no -p $SSH_PORT "$CI_PROJECT_NAME@$SSH_HOST" sudo /usr/bin/systemctl start $CI_PROJECT_NAME