name: Main on: push: branches: - master tags: - v* pull_request: jobs: main: name: Main Process runs-on: ubuntu-latest env: GO_VERSION: 1.16 GOLANGCI_LINT_VERSION: v1.38.0 HUGO_VERSION: 0.54.0 SEIHON_VERSION: v0.5.1 CGO_ENABLED: 0 LEGO_E2E_TESTS: CI MEMCACHED_HOSTS: localhost:11211 steps: # https://github.com/marketplace/actions/setup-go-environment - name: Set up Go ${{ env.GO_VERSION }} uses: actions/setup-go@v2 with: go-version: ${{ env.GO_VERSION }} # https://github.com/marketplace/actions/checkout - name: Check out code uses: actions/checkout@v2 with: fetch-depth: 0 # https://github.com/marketplace/actions/cache - name: Cache Go modules uses: actions/cache@v2 with: path: ~/go/pkg/mod key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go- - name: Check and get dependencies run: | go mod download go mod tidy git diff --exit-code go.mod git diff --exit-code go.sum - name: Documentation validation run: make validate-doc # https://golangci-lint.run/usage/install#other-ci - name: Install golangci-lint ${{ env.GOLANGCI_LINT_VERSION }} run: | curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin ${GOLANGCI_LINT_VERSION} golangci-lint --version - name: Install Pebble and challtestsrv run: GO111MODULE=off go get -u github.com/letsencrypt/pebble/... - name: Set up a Memcached server uses: niden/actions-memcached@v7 - name: Setup /etc/hosts run: | echo "127.0.0.1 acme.wtf" | sudo tee -a /etc/hosts echo "127.0.0.1 lego.wtf" | sudo tee -a /etc/hosts echo "127.0.0.1 acme.lego.wtf" | sudo tee -a /etc/hosts echo "127.0.0.1 légô.wtf" | sudo tee -a /etc/hosts echo "127.0.0.1 xn--lg-bja9b.wtf" | sudo tee -a /etc/hosts - name: Make run: | make make clean - name: Install Hugo run: | wget -O /tmp/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_${HUGO_VERSION}_Linux-64bit.deb sudo dpkg -i /tmp/hugo.deb - name: Build Documentation run: make docs-build # https://github.com/marketplace/actions/github-pages - name: Deploy to GitHub Pages uses: crazy-max/ghaction-github-pages@v2 if: github.event_name == 'push' with: target_branch: gh-pages build_dir: docs/public env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # https://goreleaser.com/ci/actions/ - name: Run GoReleaser uses: goreleaser/goreleaser-action@v2 if: startsWith(github.ref, 'refs/tags/v') with: version: latest args: release --rm-dist env: GITHUB_TOKEN: ${{ secrets.GH_TOKEN_REPO }} # Install Docker image multi-arch builder - name: Install Seihon ${{ env.SEIHON_VERSION }} if: startsWith(github.ref, 'refs/tags/v') run: | curl -sSfL https://raw.githubusercontent.com/ldez/seihon/master/godownloader.sh | sh -s -- -b $(go env GOPATH)/bin ${SEIHON_VERSION} seihon --version - name: Docker Login if: startsWith(github.ref, 'refs/tags/v') env: DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} run: echo "${DOCKER_PASSWORD}" | docker login --username "${DOCKER_USERNAME}" --password-stdin - name: Publish Docker Images (Seihon) if: startsWith(github.ref, 'refs/tags/v') run: make publish-images