From aef4e45bd74213adef6af0a0e98a16f5eb755306 Mon Sep 17 00:00:00 2001 From: Roy Lee Date: Mon, 23 May 2022 22:40:25 -0700 Subject: [PATCH] [lbry] ci: add github workflows --- .github/workflows/{go.yml => basic-check.yml} | 11 ++-- .github/workflows/full-sync-part-1.yml | 35 ++++++++++++ .github/workflows/full-sync-part-2.yml | 37 ++++++++++++ .github/workflows/golangci-lint.yml | 57 +++++++++++++++++++ .github/workflows/release.yml | 57 +++++++++++++++++++ 5 files changed, 190 insertions(+), 7 deletions(-) rename .github/workflows/{go.yml => basic-check.yml} (71%) create mode 100644 .github/workflows/full-sync-part-1.yml create mode 100644 .github/workflows/full-sync-part-2.yml create mode 100644 .github/workflows/golangci-lint.yml create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/go.yml b/.github/workflows/basic-check.yml similarity index 71% rename from .github/workflows/go.yml rename to .github/workflows/basic-check.yml index 5da1bebc63..43399646fe 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/basic-check.yml @@ -9,23 +9,20 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - go: [1.16.8, 1.17.1] + go: [1.18.2] steps: - name: Set up Go uses: actions/setup-go@v2 with: go-version: ${{ matrix.go }} + - name: Check out source uses: actions/checkout@v2 - - name: Install Linters - run: "curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $(go env GOPATH)/bin v1.26.0" + - name: Build - env: - GO111MODULE: "on" run: go build ./... + - name: Test - env: - GO111MODULE: "on" run: | sh ./goclean.sh diff --git a/.github/workflows/full-sync-part-1.yml b/.github/workflows/full-sync-part-1.yml new file mode 100644 index 0000000000..9d13a84b8e --- /dev/null +++ b/.github/workflows/full-sync-part-1.yml @@ -0,0 +1,35 @@ +name: Full Sync From 0 + +on: + workflow_dispatch: + inputs: + note: + description: 'Note' + required: false + default: '' + +jobs: + build: + name: Go CI + runs-on: self-hosted + strategy: + matrix: + go: [1.18.2] + steps: + - run: | + echo "Note ${{ github.event.inputs.note }}!" + - name: Setup Go + uses: actions/setup-go@v2 + with: + go-version: ${{ matrix.go }} + - name: Checkout source + uses: actions/checkout@v2 + - name: Build lbcd + run: go build . + - name: Create datadir + run: echo "TEMP_DATA_DIR=$(mktemp -d)" >> $GITHUB_ENV + - name: Run lbcd + run: ./lbcd --datadir=${{env.TEMP_DATA_DIR}}/data --logdir=${{env.TEMP_DATA_DIR}}/logs --nolisten --norpc + - name: Remove datadir + if: always() + run: rm -rf ${{env.TEMP_DATA_DIR}} diff --git a/.github/workflows/full-sync-part-2.yml b/.github/workflows/full-sync-part-2.yml new file mode 100644 index 0000000000..f7f95c845e --- /dev/null +++ b/.github/workflows/full-sync-part-2.yml @@ -0,0 +1,37 @@ +name: Full Sync From 814k + +on: + workflow_dispatch: + inputs: + note: + description: 'Note' + required: false + default: '' + +jobs: + build: + name: Go CI + runs-on: self-hosted + strategy: + matrix: + go: [1.18.2] + steps: + - run: | + echo "Note ${{ github.event.inputs.note }}!" + - name: Setup Go + uses: actions/setup-go@v2 + with: + go-version: ${{ matrix.go }} + - name: Checkout source + uses: actions/checkout@v2 + - name: Build lbcd + run: go build . + - name: Create datadir + run: echo "TEMP_DATA_DIR=$(mktemp -d)" >> $GITHUB_ENV + - name: Copy initial data + run: cp -r /home/lbry/lbcd_814k/* ${{env.TEMP_DATA_DIR}} + - name: Run lbcd + run: ./lbcd --datadir=${{env.TEMP_DATA_DIR}}/data --logdir=${{env.TEMP_DATA_DIR}}/logs --nolisten --norpc + - name: Remove datadir + if: always() + run: rm -rf ${{env.TEMP_DATA_DIR}} diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml new file mode 100644 index 0000000000..1d58c31683 --- /dev/null +++ b/.github/workflows/golangci-lint.yml @@ -0,0 +1,57 @@ +name: golangci-lint + +env: + # go needs absolute directories, using the $HOME variable doesn't work here. + GOCACHE: /home/runner/work/go/pkg/build + GOPATH: /home/runner/work/go + GO_VERSION: '^1.18.2' + +on: + push: + tags: + - v* + branches: + - "*" + pull_request: + branches: + - "*" + +jobs: + golangci: + name: lint + runs-on: ubuntu-latest + steps: + - name: setup go ${{ env.GO_VERSION }} + uses: actions/setup-go@v2 + with: + go-version: '${{ env.GO_VERSION }}' + + - name: checkout source + uses: actions/checkout@v2 + + - name: compile code + run: go install -v ./... + + - name: golangci-lint + uses: golangci/golangci-lint-action@v2 + with: + # Optional: version of golangci-lint to use in form of v1.2 or v1.2.3 or `latest` to use the latest version + version: latest + + # Optional: working directory, useful for monorepos + # working-directory: somedir + + # Optional: golangci-lint command line arguments. + # args: --issues-exit-code=0 + + # Optional: show only new issues if it's a pull request. The default value is `false`. + # only-new-issues: true + + # Optional: if set to true then the action will use pre-installed Go. + skip-go-installation: true + + # Optional: if set to true then the action don't cache or restore ~/go/pkg. + # skip-pkg-cache: true + + # Optional: if set to true then the action don't cache or restore ~/.cache/go-build. + # skip-build-cache: true diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000000..a54ac02b5c --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,57 @@ +name: goreleaser + +on: + workflow_dispatch: + inputs: + note: + description: 'Note' + required: false + default: '' + pull_request: + push: + tags: + - '*' + +permissions: + contents: write + +jobs: + goreleaser: + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + - + name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: 1.18.2 + + # Login against a Docker registry except on PR + # https://github.com/docker/login-action + - name: Log into registry docker.io + if: github.event_name != 'pull_request' + uses: docker/login-action@28218f9b04b4f3f62068d7b6ce6ca5b26e35336c + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} + - + name: Run GoReleaser + uses: goreleaser/goreleaser-action@v2 + with: + distribution: goreleaser + version: latest + args: release --rm-dist + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - + name: Upload artifacts + uses: actions/upload-artifact@v2 + with: + name: lbcd-${{ github.sha }} + path: | + dist/checksums.txt + dist/*.tar.gz