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