diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml new file mode 100644 index 0000000..828e45e --- /dev/null +++ b/.github/workflows/linting.yml @@ -0,0 +1,54 @@ +name: golangci-lint +on: + push: + branches: + - main + pull_request: + +permissions: + contents: read + # Optional: allow read access to pull request. Use with `only-new-issues` option. + # pull-requests: read + +jobs: + golangci: + name: lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-go@v4 + with: + go-version: '1.23' + cache: false + - name: golangci-lint + uses: golangci/golangci-lint-action@v6 + 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.61 + + # Optional: working directory, useful for monorepos + # working-directory: somedir + + # Optional: golangci-lint command line arguments. + # + # Note: By default, the `.golangci.yml` file should be at the root of the repository. + # The location of the configuration file can be changed by using `--config=` + # args: --timeout=30m --config=/my/path/.golangci.yml --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 all caching functionality will be completely disabled, + # takes precedence over all other caching options. + # skip-cache: true + + # Optional: if set to true, then the action won't cache or restore ~/go/pkg. + # skip-pkg-cache: true + + # Optional: if set to true, then the action won't cache or restore ~/.cache/go-build. + # skip-build-cache: true + + # Optional: The mode to install golangci-lint. It can be 'binary' or 'goinstall'. + # install-mode: "goinstall" \ No newline at end of file diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml new file mode 100644 index 0000000..f99c908 --- /dev/null +++ b/.github/workflows/release-binaries.yml @@ -0,0 +1,54 @@ +--- + name: Release binaries + + "on": + push: + tags: + - "v*" + + jobs: + release: + name: "Release for ${{ matrix.os }}-${{ matrix.arch }}" + runs-on: ubuntu-latest + permissions: + contents: write + strategy: + matrix: + arch: [amd64, arm64] + os: [linux, darwin] + env: + GOOS: ${{ matrix.os }} + GOARCH: ${{ matrix.arch }} + CGO_ENABLED: 0 + + steps: + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: '1.23' + + - name: Check out code + uses: actions/checkout@v2 + with: + ref: ${{ inputs.tag }} + + - name: Build binary + run: go build -o dist/candles-api-${{ matrix.os }}-${{ matrix.arch }} ./main.go + + - name: Bundle binary in archive + uses: thedoctor0/zip-release@master + with: + type: zip + directory: dist + filename: candles-api-${{ matrix.os }}-${{ matrix.arch }}.zip + + - name: Release + uses: softprops/action-gh-release@v1 + with: + files: dist/*.zip + name: ${{ github.ref_name }} + tag_name: ${{ github.ref_name }} + prerelease: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + \ No newline at end of file