Skip to content

Commit

Permalink
fix: Remove circle CI, add github actions (#175)
Browse files Browse the repository at this point in the history
  • Loading branch information
Dzalevski committed Apr 13, 2021
1 parent 6ea84c1 commit 6f5d140
Show file tree
Hide file tree
Showing 8 changed files with 255 additions and 35 deletions.
17 changes: 0 additions & 17 deletions .circleci/config.yml

This file was deleted.

163 changes: 163 additions & 0 deletions .github/workflows/go.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
name: Go
on:
push:
tags:
- v*
branches:
- master
- main
paths:
- '**.go'
- ".goreleaser.yml"
- ".golangci.yml"
- ".dockerignore"
- "Makefile"
- "rules.mk"
- "go.*"
- ".github/workflows/go.yml"
pull_request:
paths:
- '**.go'
- ".goreleaser.yml"
- ".golangci.yml"
- ".dockerignore"
- "Makefile"
- "rules.mk"
- "go.*"
- ".github/workflows/go.yml"

jobs:
goreleaser-dryrun:
strategy:
matrix:
golang: [1.16.x]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@master
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: ${{ matrix.golang }}
- name: Cache Go modules
uses: actions/cache@v2.1.4
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ matrix.golang }}-v1-${{ hashFiles('**/go.sum') }}
restore-keys: ${{ runner.os }}-go-${{ matrix.golang }}-v1-
- name: Run GoReleaser (Dry Run)
uses: goreleaser/goreleaser-action@v2
with:
version: latest
args: release --rm-dist --snapshot --skip-publish
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
golangci-lint:
runs-on: ubuntu-latest
strategy:
matrix:
golangci_lint: [v1.38]
steps:
- uses: actions/checkout@v2
- name: golangci-lint
uses: golangci/golangci-lint-action@v2.5.2
with:
version: ${{ matrix.golangci_lint }}
#github-token: ${{ secrets.GITHUB_TOKEN }}
args: --timeout=2m
only-new-issues: false
working-directory: .
tests-on-windows:
needs: golangci-lint # run after golangci-lint action to not produce duplicated errors
runs-on: windows-latest
strategy:
matrix:
golang: [1.16.x]
steps:
- uses: actions/checkout@v2
- name: Install Go
uses: actions/setup-go@v2
with:
go-version: ${{ matrix.golang }}
- name: Run tests on Windows
run: make.exe unittest
continue-on-error: true
tests-on-mac:
needs: golangci-lint # run after golangci-lint action to not produce duplicated errors
runs-on: macos-latest
strategy:
matrix:
golang: [1.16.x]
env:
OS: macos-latest
GOLANG: ${{ matrix.golang }}
steps:
- uses: actions/checkout@v2
- name: Install Go
uses: actions/setup-go@v2
with:
go-version: ${{ matrix.golang }}
- uses: actions/cache@v2.1.4
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ matrix.golang }}-v1-${{ hashFiles('**/go.sum') }}
restore-keys: ${{ runner.os }}-go-${{ matrix.golang }}-v1-
- name: Compile the project
run: make go.install
- name: Run tests on Unix-like operating systems
run: make unittest
- name: Check go.mod and go.sum
run: |
go mod tidy -v
git --no-pager diff go.mod go.sum
git --no-pager diff --quiet go.mod go.sum
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v1
with:
#token: ${{ secrets.CODECOV_TOKEN }}
file: ./coverage.txt
flags: unittests
env_vars: OS,GOLANG
name: codecov-umbrella
fail_ci_if_error: false
tests-on-linux:
needs: golangci-lint # run after golangci-lint action to not produce duplicated errors
runs-on: ubuntu-latest
strategy:
matrix:
golang:
- 1.14.x
- 1.15.x
- 1.16.x
env:
OS: ubuntu-latest
GOLANG: ${{ matrix.golang }}
steps:
- uses: actions/checkout@v2
- name: Install Go
uses: actions/setup-go@v2
with:
go-version: ${{ matrix.golang }}
- uses: actions/cache@v2.1.4
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ matrix.golang }}-v1-${{ hashFiles('**/go.sum') }}
restore-keys: ${{ runner.os }}-go-${{ matrix.golang }}-v1-
- name: Compile the project
run: make go.install
- name: Check go.mod and go.sum
run: |
go mod tidy -v
git --no-pager diff go.mod go.sum
git --no-pager diff --quiet go.mod go.sum
- name: Run tests on Unix-like operating systems
run: make unittest
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v1
with:
#token: ${{ secrets.CODECOV_TOKEN }}
file: ./coverage.txt
flags: unittests
env_vars: OS,GOLANG
name: codecov-umbrella
fail_ci_if_error: false
23 changes: 23 additions & 0 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: PR

on:
#pull_request_target:
pull_request:
branches: [ master, main ]
issue_comment:
types: [ edited ]

jobs:
preview:
name: Release-Notes Preview
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: |
git fetch --prune --unshallow --tags
- uses: snyk/release-notes-preview@v1.6.2
with:
releaseBranch: master
env:
GITHUB_PR_USERNAME: ${{ github.actor }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
60 changes: 53 additions & 7 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,59 @@
name: Semantic Release

on: push
name: Release
on:
push:
branches:
- master
- main

jobs:
semantic-release:
release:
name: releaser
runs-on: ubuntu-latest
strategy:
matrix:
golang: [1.16.x]
steps:
- uses: actions/checkout@master
- uses: codfish/semantic-release-action@v1
if: github.ref == 'refs/heads/master'
-
name: Checkout
uses: actions/checkout@master
-
name: Unshallow
run: git fetch --prune --unshallow
-
name: Run Semantic Release
id: semantic
uses: docker://ghcr.io/codfish/semantic-release-action:v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
name: Set up Go
if: steps.semantic.outputs.new-release-published == 'true'
uses: actions/setup-go@v2
with:
go-version: ${{ matrix.golang }}
-
name: Cache Go modules
if: steps.semantic.outputs.new-release-published == 'true'
uses: actions/cache@v2.1.4
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ matrix.golang }}-v1-${{ hashFiles('**/go.sum') }}
restore-keys: ${{ runner.os }}-go-${{ matrix.golang }}-v1-
-
name: Run GoReleaser
if: steps.semantic.outputs.new-release-published == 'true'
uses: goreleaser/goreleaser-action@v2
with:
version: latest
args: release --rm-dist
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
name: Register version on pkg.go.dev
if: steps.semantic.outputs.new-release-published == 'true'
run: |
package=$(cat go.mod | grep ^module | awk '{print $2}')
version=v${{ steps.semantic.outputs.release-version }}
url=https://proxy.golang.org/${package}/@v/${version}.info
set -x +e
curl -i $url
7 changes: 7 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
- repo: git://github.com/dnephin/pre-commit-golang
rev: master
hooks:
- id: go-fmt
- id: go-vet
- id: go-lint
- id: go-imports
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ The plugin parses **protobuf** files, generates an **ast**, and walks a local **
3. the `ast` is given to [Golang's `text/template` engine](https://golang.org/pkg/text/template/) for each *user* template files
4. the *funcmap* enriching the template engine is based on [Masterminds/sprig](https://github.com/Masterminds/sprig), and contains type-manipulation, iteration and language-specific helpers

## Dev helpers
1. Pre-commit script for install: https://pre-commit.com

## Web editor

![Web editor screenshot](https://github.com/moul/protoc-gen-gotemplate/raw/master/assets/web-editor.jpg)
Expand Down
7 changes: 0 additions & 7 deletions go.sum

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 6 additions & 4 deletions helpers/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ var (
registry *ggdescriptor.Registry // some helpers need access to registry
)

const timestamp = "timestamp"

var ProtoHelpersFuncMap = template.FuncMap{
"string": func(i interface {
String() string
Expand Down Expand Up @@ -830,7 +832,7 @@ func goTypeWithGoPackage(p *descriptor.FileDescriptorProto, f *descriptor.FieldD
pkg := ""
if *f.Type == descriptor.FieldDescriptorProto_TYPE_MESSAGE || *f.Type == descriptor.FieldDescriptorProto_TYPE_ENUM {
if isTimestampPackage(*f.TypeName) {
pkg = "timestamp"
pkg = timestamp
} else {
pkg = *p.GetOptions().GoPackage
if strings.Contains(*p.GetOptions().GoPackage, ";") {
Expand All @@ -846,7 +848,7 @@ func goTypeWithPackage(f *descriptor.FieldDescriptorProto) string {
pkg := ""
if *f.Type == descriptor.FieldDescriptorProto_TYPE_MESSAGE || *f.Type == descriptor.FieldDescriptorProto_TYPE_ENUM {
if isTimestampPackage(*f.TypeName) {
pkg = "timestamp"
pkg = timestamp
} else {
pkg = getPackageTypeName(*f.TypeName)
}
Expand Down Expand Up @@ -921,7 +923,7 @@ func rustTypeWithPackage(f *descriptor.FieldDescriptorProto) string {
pkg := ""
if *f.Type == descriptor.FieldDescriptorProto_TYPE_MESSAGE || *f.Type == descriptor.FieldDescriptorProto_TYPE_ENUM {
if isTimestampPackage(*f.TypeName) {
pkg = "timestamp"
pkg = timestamp
} else {
pkg = getPackageTypeName(*f.TypeName)
}
Expand Down Expand Up @@ -972,7 +974,7 @@ func cppTypeWithPackage(f *descriptor.FieldDescriptorProto) string {
pkg := ""
if *f.Type == descriptor.FieldDescriptorProto_TYPE_MESSAGE || *f.Type == descriptor.FieldDescriptorProto_TYPE_ENUM {
if isTimestampPackage(*f.TypeName) {
pkg = "timestamp"
pkg = timestamp
} else {
pkg = getPackageTypeName(*f.TypeName)
}
Expand Down

0 comments on commit 6f5d140

Please sign in to comment.