diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 59688b5..7b20619 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -4,34 +4,58 @@ on: pull_request: branches: [ master ] -env: - CARGO_TERM_COLOR: always - jobs: + golangci: + name: lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 + with: + go-version: '1.22' + cache: false + - name: golangci-lint + uses: golangci/golangci-lint-action@v4 + with: + # Require: The version of golangci-lint to use. + # When `install-mode` is `binary` (default) the value can be v1.2 or + # v1.2.3 or `latest` to use the latest version. + # When `install-mode` is `goinstall` the value can be v1.2.3, + # `latest`, or the hash of a commit. + version: v1.54 + build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - name: Install latest stable - uses: actions-rs/toolchain@v1 + - uses: actions/checkout@v4 + - name: Setup Go 1.22 + uses: actions/setup-go@v4 with: - toolchain: stable - override: true - components: rustfmt, clippy - - uses: Swatinem/rust-cache@v1 # must follow toolchain installation - - name: Run cargo check - uses: actions-rs/cargo@v1 - with: - command: check - - name: Format - run: cargo fmt --all -- --check + go-version: 1.22.x + cache-dependency-path: go.sum + - name: Install dependencies + run: go get . + - name: Vet + run: go vet -v ./... - name: Lint - run: cargo clippy -- --deny "warnings" + id: lint + run: | + # binary will be $(go env GOPATH)/bin/golangci-lint + curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.43.0 + golangci-lint --version + golangci-lint run - name: Build - run: cargo build --verbose --features fail-on-warnings - - name: Run tests - run: cargo test --verbose --features fail-on-warnings - - name: Build docs - run: cargo doc --verbose --features fail-on-warnings + run: go build -v ./... + - name: Test + run: go test -v ./... + - name: Format + id: fmt + run: | + go install github.com/segmentio/golines@v0.10.0 + output="$(golines -m 79 --shorten-comments --dry-run .)" + if [ -n "$output" ]; then + echo "$output" + exit 1 + fi diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 7d3a69b..6766f9d 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -9,57 +9,21 @@ jobs: docker: runs-on: ubuntu-latest steps: - - name: Checkout - uses: actions/checkout@v2 - - - name: Prepare - id: prep - run: | - DOCKER_IMAGE=${{ secrets.DOCKER_USERNAME }}/${GITHUB_REPOSITORY#*/} - VERSION=latest - SHORTREF=${GITHUB_SHA::8} - - # If this is git tag, use the tag name as a docker tag - if [[ $GITHUB_REF == refs/tags/* ]]; then - VERSION=${GITHUB_REF#refs/tags/} - fi - TAGS="${DOCKER_IMAGE}:${VERSION},${DOCKER_IMAGE}:${SHORTREF}" - - # If the VERSION looks like a version number, assume that - # this is the most recent version of the image and also - # tag it 'latest'. - if [[ $VERSION =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then - TAGS="$TAGS,${DOCKER_IMAGE}:latest" - fi - - # Set output parameters. - echo ::set-output name=tags::${TAGS} - echo ::set-output name=docker_image::${DOCKER_IMAGE} - - - name: Set up QEMU - uses: docker/setup-qemu-action@master - with: - platforms: all - - - name: Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@master - - - name: Login to DockerHub - if: github.event_name != 'pull_request' - uses: docker/login-action@v1 + - + name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - + name: Login to Docker Hub + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - - - name: Build - uses: docker/build-push-action@v2 + - + name: Build and push + uses: docker/build-push-action@v5 with: - builder: ${{ steps.buildx.outputs.name }} - context: . - file: ./Dockerfile - platforms: linux/amd64,linux/arm64 push: true - tags: ${{ steps.prep.outputs.tags }} - cache-from: type=gha, scope=${{ github.workflow }} - cache-to: type=gha, scope=${{ github.workflow }} + tags: weberc2/futhorc:latest \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..d53a23e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,7 @@ +FROM golang:1.22 + +WORKDIR /workspace + +COPY . . + +RUN go build -o /bin/futhorc ./cmd/futhorc \ No newline at end of file