Skip to content

Commit

Permalink
Merge pull request #358 from moul/dev/moul/github-actions
Browse files Browse the repository at this point in the history
feat: switch to github actions + maintenance
  • Loading branch information
moul committed Mar 27, 2021
2 parents 235597c + 442374a commit 85d07d9
Show file tree
Hide file tree
Showing 38 changed files with 729 additions and 246 deletions.
31 changes: 0 additions & 31 deletions .circleci/config.yml

This file was deleted.

File renamed without changes.
File renamed without changes.
File renamed without changes.
60 changes: 60 additions & 0 deletions .github/workflows/docker.yml
@@ -0,0 +1,60 @@
name: Docker
on:
push:
branch: master
tags: ['v*']
pull_request:
release:
types: [published,released]

jobs:
multi:
name: "build-and-push"
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2

- name: Build the container image
uses: docker/build-push-action@v2
with:
repository: depviz

- name: Push to GitHub Packages
uses: docker/build-push-action@v2
if: github.event_name == 'release' || github.event_name == 'push'
with:
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
registry: docker.pkg.github.com
repository: moul/depviz/depviz
tag_with_ref: true

- name: Check Docker Hub Credentials
id: check_dockerhub_credentials
if: github.event_name == 'release' || github.event_name == 'push'
env:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
run: |
if [ "${DOCKER_USERNAME}" == "" ]; then
echo "Missing Username"
echo "##[set-output name=missingsecrets;]$(echo yes)"
elif [ "${DOCKER_PASSWORD}" == "" ]; then
echo "Missing Password"
echo "##[set-output name=missingsecrets;]$(echo yes)"
else
echo "All secrets present"
echo "##[set-output name=missingsecrets;]$(echo no)"
fi
- name: Push to Docker Hub
if: |
(github.event_name == 'release' || github.event_name == 'push') &&
contains(steps.check_dockerhub_credentials.outputs.missingsecrets, 'no')
uses: docker/build-push-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
repository: moul/depviz
tag_with_ref: true
162 changes: 162 additions & 0 deletions .github/workflows/go.yml
@@ -0,0 +1,162 @@
name: Go
on:
push:
tags:
- v*
branches:
- master
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.1
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
42 changes: 42 additions & 0 deletions .github/workflows/pr.yml
@@ -0,0 +1,42 @@
name: PR

on:
#pull_request_target:
pull_request:
branches: [ master ]
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 }}

doc:
name: Documentation
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
depth: 1
- uses: nosborn/github-action-markdown-cli@master
with:
files: .
config_file: ./tool/lint/.markdownlint.json
- uses: K-Phoen/action-misspell@master
with:
github_token: ${{ github.token }}
reporter: github-pr-review
locale: "US"
- name: alexjs
uses: theashraf/alex-action@master
59 changes: 52 additions & 7 deletions .github/workflows/release.yml
@@ -1,13 +1,58 @@
name: Semantic Release

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

jobs:
semantic-release:
release:
name: releaser
runs-on: ubuntu-latest
strategy:
matrix:
golang: [1.16.x]
steps:
- uses: actions/checkout@master
- uses: docker://ghcr.io/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

0 comments on commit 85d07d9

Please sign in to comment.