Skip to content

chore: update template files #15

chore: update template files

chore: update template files #15

Workflow file for this run

# ┌───────────────────────────────────────────────────────────────────┐
# │ │
# │ IMPORTANT NOTE │
# │ │
# │ This file is synced with https://github.com/atomicgo/template │
# │ │
# │ Please apply all changes to the template repository │
# │ │
# └───────────────────────────────────────────────────────────────────┘
name: AtomicGo
on:
push:
branches:
- main
permissions:
contents: write
packages: write
jobs:
test:
name: Test Go Code
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
steps:
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: stable
- name: Check out code into the Go module directory
uses: actions/checkout@v3
- name: Get dependencies
run: go get -v -t -d ./...
- name: Build
run: go build -v .
- name: Test
run: go test -coverprofile="coverage.txt" -covermode=atomic -v -p 1 .
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
build:
name: Build AtomicGo Package
runs-on: ubuntu-latest
needs: test
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Download assets
run: |
mkdir -p .templates
wget https://raw.githubusercontent.com/atomicgo/atomicgo/main/templates/example.gotxt -O .templates/example.gotxt
wget https://raw.githubusercontent.com/atomicgo/atomicgo/main/templates/readme.md -O .templates/readme.md
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: stable
- name: Install Go tools
run: |
go install github.com/robertkrimen/godocdown/godocdown@latest
go install github.com/princjef/gomarkdoc/cmd/gomarkdoc@latest
go install github.com/caarlos0/svu@latest
- name: Set up Git configuration
run: |
REPO_FULLNAME="${{ github.repository }}"
echo "::group::Setup git"
git config --global --add safe.directory /github/workspace
echo "::notice::Login into git"
git config --global user.email "git@marvinjwendt.com"
git config --global user.name "MarvinJWendt"
echo "::notice::Ignore workflow files (we may not touch them)"
git update-index --assume-unchanged .github/workflows/*
- name: Generate README.md
run: |
echo "::group::Generate README.md"
FILE=./.github/atomicgo/custom_readme
INCLUDE_UNEXPORTED=./.github/atomicgo/include_unexported
if test -f "$FILE"; then
echo "::notice::.github/custom_readme is present. Not generating a new readme."
else
echo "::notice::Running Godocdown"
$(go env GOPATH)/bin/godocdown -template ./.templates/readme.md >README.md
echo "::notice::Running gomarkdoc"
GOMARKDOC_FLAGS="--template-file example=./.templates/example.gotxt"
if test -f "$INCLUDE_UNEXPORTED"; then
GOMARKDOC_FLAGS+=" -u"
fi
$(go env GOPATH)/bin/gomarkdoc $GOMARKDOC_FLAGS --repository.url "https://github.com/${{ github.repository }}" --repository.default-branch main --repository.path / -e -o README.md .
fi
echo "::endgroup::"
- name: Run custom CI system
run: |
echo "::group::Run custom CI system"
echo "::notice::Counting unit tests"
unittest_count=$(go test -v -p 1 ./... | tee /dev/tty | grep -c "RUN")
echo "::notice::Replacing badge in README.md"
sed -i 's|<img src="https://img.shields.io/badge/Unit_Tests-[^"]*-magenta?style=flat-square"|<img src="https://img.shields.io/badge/Unit_Tests-'$unittest_count'-magenta?style=flat-square"|g' README.md
echo "::endgroup::"
- name: Run go mod tidy
run: |
echo "::group::Run go mod tidy"
git checkout go.mod # reset go.mod file
git checkout go.sum # reset go.sum file
go mod tidy
echo "::endgroup::"
- name: Stage and commit changes
run: |
echo "::group::Stage and commit changes"
git add .
git commit -m "docs: autoupdate" || true
echo "::endgroup::"
- name: Push changes
run: |
echo "::notice::Pushing changes to origin"
git push -u origin main
- name: Get current version
id: current_version
run: |
echo "current_version=$(svu current)" >> $GITHUB_ENV
echo "::notice::Current version is $(svu current)"
- name: Calculate next version
id: next_version
run: |
echo "next_version=$(svu next)" >> $GITHUB_ENV
echo "::notice::Next version is $(svu next)"
- name: Check if release is needed
id: check_release
run: |
echo "release_needed=$( [ '${{ env.current_version }}' != '${{ env.next_version }}' ] && echo true || echo false )" >> $GITHUB_ENV
- name: Create tag
if: env.release_needed == 'true'
run: |
git tag -a ${{ env.next_version }} -m "Release v${{ env.next_version }}"
git push origin ${{ env.next_version }}
sleep 5 # sleep for 5 seconds to allow GitHub to process the tag
- name: Release
if: env.release_needed == 'true'
uses: softprops/action-gh-release@v2
with:
token: ${{ secrets.GITHUB_TOKEN }}
generate_release_notes: true
tag_name: ${{ env.next_version }}
- name: Tweet release
if: env.release_needed == 'true' && !github.event.repository.private
uses: Eomm/why-don-t-you-tweet@v1
with:
tweet-message:
"New ${{ github.event.repository.name }} release: ${{ env.next_version }} 🚀
Try it out: atomicgo.dev/${{ github.event.repository.name }}
#go #golang #opensource #library #release #atomicgo"
env:
TWITTER_CONSUMER_API_KEY: ${{ secrets.TWITTER_CONSUMER_API_KEY }}
TWITTER_CONSUMER_API_SECRET: ${{ secrets.TWITTER_CONSUMER_API_SECRET }}
TWITTER_ACCESS_TOKEN: ${{ secrets.TWITTER_ACCESS_TOKEN }}
TWITTER_ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }}