gitlab.com/pidrakin/dotfiles-cli@v1.7.5/.gitlab-ci.yml (about) 1 variables: 2 # Please edit to your GitLab project 3 REPO_NAME: gitlab.com/pidrakin/dotfiles-cli 4 5 stages: 6 - test 7 - release 8 9 test: 10 stage: test 11 image: golang:latest 12 services: 13 - name: registry.gitlab.com/pidrakin/dotfiles-cli:rollout-ssh-test-server 14 alias: rollout-ssh-test-server 15 before_script: 16 - mkdir -pv /tmp/dotfiles-test-builds 17 - mkdir -p $GOPATH/src/$(dirname $REPO_NAME) 18 - ln -svf $CI_PROJECT_DIR $GOPATH/src/$REPO_NAME 19 - cd $GOPATH/src/$REPO_NAME 20 script: 21 - go fmt $(go list ./... | grep -v /vendor/) 22 - go vet -tags=testing $(go list ./... | grep -v /vendor/) 23 - go test -tags=testing -race $(go list ./... | grep -v /vendor/) 24 - go test -tags=testing,keep ./ssh_ultimate/ -ssh-ultimate-host=rollout-ssh-test-server -ssh-ultimate-port=22 25 - go build -ldflags='-s -w -X gitlab.com/pidrakin/dotfiles-cli/cli.Version=test' -o /tmp/dotfiles-test-builds/dotfiles . 26 - go test -tags=testing,keep ./cmd/rollout/ -rollout-host=rollout-ssh-test-server -rollout-port=22 27 - go test -tags=testing,keep ./cmd/status/ -status-host=rollout-ssh-test-server -status-port=22 28 only: 29 changes: 30 - "**/*.go" 31 - cmd/**/* 32 - tests/rollout/keys/* 33 - go.mod 34 - go.sum 35 36 release: 37 stage: release 38 image: docker:stable 39 services: 40 - docker:dind 41 only: 42 refs: 43 - tags 44 variables: 45 # Optionally use GitLab's built-in image registry. 46 DOCKER_REGISTRY: $CI_REGISTRY 47 DOCKER_USERNAME: $CI_REGISTRY_USER 48 DOCKER_PASSWORD: $CI_REGISTRY_PASSWORD 49 # Disable shallow cloning so that goreleaser can diff between tags to 50 # generate a changelog. 51 GIT_DEPTH: 0 52 script: | 53 ID=$(cat <<EOF | docker build -q - 54 FROM ruby:latest 55 RUN apt-get update && \ 56 apt-get install -y groff && \ 57 gem install ronn 58 RUN echo "#!/bin/bash" > /entrypoint.sh && \ 59 echo "ronn --html /man/*.ronn" >> /entrypoint.sh && \ 60 echo "find /man -name '*.ronn' -exec sh -c 'ronn --roff --pipe {} | gzip -c -9 > \\\$(echo {} | sed \"s/.ronn//\").gz' \;" >> /entrypoint.sh && \ 61 chmod +x /entrypoint.sh 62 ENTRYPOINT ["/entrypoint.sh"] 63 EOF 64 ) 65 docker run --rm -v $PWD/assets/man:/man $ID 66 docker rmi $ID 67 68 ID=$(cat <<EOF | docker build -q - 69 FROM goreleaser/goreleaser:v1.24.0 70 RUN apk add --no-cache upx && \ 71 curl -fsSL https://go.dev/dl/go1.22.1.linux-amd64.tar.gz -O && \ 72 rm -rf /usr/local/go && \ 73 tar -C /usr/local -xzf go1.22.1.linux-amd64.tar.gz 74 EOF 75 ) 76 77 # GITLAB_TOKEN is needed to create GitLab releases. 78 # DOCKER_* are needed to push Docker images. 79 docker run --rm --privileged \ 80 -v $PWD:/go/src/gitlab.com/pidrakin/dotfiles-cli \ 81 -w /go/src/gitlab.com/pidrakin/dotfiles-cli \ 82 -v /var/run/docker.sock:/var/run/docker.sock \ 83 -e DOCKER_USERNAME -e DOCKER_PASSWORD -e DOCKER_REGISTRY \ 84 -e GITLAB_TOKEN \ 85 -e FURY_TOKEN \ 86 -e TELEGRAM_TOKEN \ 87 -e SMTP_HOST=mail.gandi.net \ 88 -e SMTP_PORT=587 \ 89 -e SMTP_USERNAME=donotreply@pidrak.in \ 90 -e SMTP_PASSWORD \ 91 $ID release --clean --skip=validate 92 docker rmi $ID 93 94 docker run --rm \ 95 -e HOMEBREW_TAP_GITHUB_TOKEN \ 96 curlimages/curl \ 97 -X POST \ 98 -H "Accept: application/vnd.github.everest-preview+json" \ 99 -H "Authorization: token ${HOMEBREW_TAP_GITHUB_TOKEN}" \ 100 https://api.github.com/repos/pidrakin/homebrew-dotfiles/dispatches \ 101 -d '{"event_type":"mirror"}' 102 103 docker run --rm \ 104 -e VERSION=$CI_COMMIT_REF_NAME \ 105 -e GANDI_APIKEY \ 106 -v $PWD/assets/scripts:/scripts \ 107 --entrypoint /scripts/update-dotfiles-txt.sh \ 108 curlimages/curl