You've already forked go-semantic-release
Compare commits
14 Commits
feat--Add-
...
v2.2.1
| Author | SHA1 | Date | |
|---|---|---|---|
| c4cecdebb4 | |||
| ad8d69452d | |||
| 7f8ed11f79 | |||
| 6d1f8f0a9a | |||
| 3a93293318 | |||
| 1712dbdbaf | |||
| a442a82d15 | |||
| 70b6cbe8df | |||
| c981a99424 | |||
| a2b32024a1 | |||
| 8f5e47eecd | |||
| 274cabf05a | |||
| 77fb819342 | |||
| 0b309228d3 |
@@ -1,2 +1,10 @@
|
||||
*
|
||||
!build/
|
||||
!cmd/
|
||||
!internal/
|
||||
!pkg/
|
||||
!scripts/
|
||||
!Dockerfile*
|
||||
!.dockerignore
|
||||
!go.mod
|
||||
!go.sum
|
||||
11
.githooks/commit-msg
Executable file
11
.githooks/commit-msg
Executable file
@@ -0,0 +1,11 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Run the script and get the return code if successful of if fails
|
||||
./scripts/commit-filter-check.sh && rc=$? || rc=$?
|
||||
echo return code : $rc
|
||||
if [ ${rc} = 1 ]; then
|
||||
echo "Script return code 1 so commit failed"
|
||||
exit 1
|
||||
else
|
||||
echo "No error returned so commit successful"
|
||||
fi
|
||||
23
.release.yml
23
.release.yml
@@ -1,14 +1,17 @@
|
||||
release: "github"
|
||||
github:
|
||||
release: "gitea"
|
||||
gitea:
|
||||
repo: "go-semantic-release"
|
||||
user: "nightapes"
|
||||
user: "cybercinch"
|
||||
url: "https://hub.cybercinch.nz"
|
||||
commitFormat: angular
|
||||
branch:
|
||||
master: release
|
||||
beta: beta
|
||||
develop: beta
|
||||
assets:
|
||||
- name: ./build/go-semantic-release.linux_x86_64
|
||||
compress: true
|
||||
- name: ./build/go-semantic-release.linux_arm64
|
||||
compress: true
|
||||
- name: ./build/go-semantic-release.windows_i386.exe
|
||||
compress: true
|
||||
- name: ./build/go-semantic-release.windows_x86_64.exe
|
||||
@@ -18,15 +21,9 @@ assets:
|
||||
changelog:
|
||||
docker:
|
||||
latest: true
|
||||
repository: "nightapes/go-semantic-release"
|
||||
repository: "cybercinch/go-semantic-release"
|
||||
showAuthors: true
|
||||
|
||||
hooks:
|
||||
preRelease:
|
||||
- docker build -t nightapes/go-semantic-release:latest .
|
||||
- docker tag nightapes/go-semantic-release:latest docker.pkg.github.com/nightapes/go-semantic-release/go-semantic-release:$RELEASE_VERSION
|
||||
- docker tag nightapes/go-semantic-release:latest nightapes/go-semantic-release:$RELEASE_VERSION
|
||||
postRelease:
|
||||
- docker push nightapes/go-semantic-release:latest
|
||||
- docker push nightapes/go-semantic-release:$RELEASE_VERSION
|
||||
- docker push docker.pkg.github.com/nightapes/go-semantic-release/go-semantic-release:$RELEASE_VERSION
|
||||
preRelease: []
|
||||
postRelease: []
|
||||
|
||||
106
.woodpecker.yml
Normal file
106
.woodpecker.yml
Normal file
@@ -0,0 +1,106 @@
|
||||
variables:
|
||||
- &platforms 'linux/arm64,linux/amd64'
|
||||
- &docker_creds
|
||||
username:
|
||||
from_secret: hub_username_cybercinch
|
||||
password:
|
||||
from_secret: docker_password_cybercinch
|
||||
- &pypi_creds
|
||||
username:
|
||||
from_secret: hub_username_cybercinch
|
||||
password:
|
||||
from_secret: docker_password_cybercinch
|
||||
clone:
|
||||
git:
|
||||
image: woodpeckerci/plugin-git
|
||||
settings:
|
||||
partial: false
|
||||
tags: true
|
||||
|
||||
steps:
|
||||
build-release:
|
||||
image: docker.io/cybercinch/go-semrelease:golang1.20
|
||||
pull: true
|
||||
commands:
|
||||
- >
|
||||
GOOS=linux
|
||||
GOARCH=amd64
|
||||
CGO_ENABLED=0
|
||||
go build -o build/go-semantic-release.linux_x86_64 -ldflags "-w -s --X main.version=`go-semantic-release next`"
|
||||
./cmd/go-semantic-release/
|
||||
- >
|
||||
GOOS=linux
|
||||
GOARCH=arm64
|
||||
CGO_ENABLED=0
|
||||
go build -o build/go-semantic-release.linux_arm64 -ldflags "-w -s --X main.version=`go-semantic-release next`"
|
||||
./cmd/go-semantic-release/
|
||||
- >
|
||||
GOOS=windows
|
||||
GOARCH=386
|
||||
CGO_ENABLED=0
|
||||
go build -o build/go-semantic-release.windows_i386.exe -ldflags "-w -s -X main.version=`go-semantic-release next`"
|
||||
./cmd/go-semantic-release/
|
||||
- >
|
||||
GOOS=windows
|
||||
GOARCH=amd64
|
||||
CGO_ENABLED=0
|
||||
go build -o build/go-semantic-release.windows_x86_64.exe -ldflags "-w -s -X main.version=`go-semantic-release next`"
|
||||
./cmd/go-semantic-release/
|
||||
- >
|
||||
GOOS=darwin
|
||||
GOARCH=amd64
|
||||
CGO_ENABLED=0
|
||||
go build -o build/go-semantic-release.darwin_x86_64 -ldflags "-w -s -X main.version=`go-semantic-release next`"
|
||||
./cmd/go-semantic-release/
|
||||
- go-semantic-release --loglevel debug release # Actually make the release on Gitea. Uploading assets
|
||||
environment:
|
||||
GITEA_TOKEN:
|
||||
from_secret: gitea_token
|
||||
GITEA_URL:
|
||||
from_secret: gitea_server_url
|
||||
when:
|
||||
branch: ${CI_REPO_DEFAULT_BRANCH}
|
||||
event:
|
||||
- push
|
||||
- manual
|
||||
|
||||
# publish-docker-tagged:
|
||||
# image: docker.io/cybercinch/woodpecker-plugin-depot
|
||||
# pull: true
|
||||
# settings:
|
||||
# <<: *docker_creds
|
||||
# token:
|
||||
# from_secret: depot_token
|
||||
# repohost: hub.cybercinch.nz
|
||||
# repo: cybercinch/${CI_REPO_NAME}
|
||||
# project:
|
||||
# from_secret: depot_project
|
||||
# dockerfile: Dockerfile
|
||||
# push: true
|
||||
# platforms: *platforms
|
||||
# tags: ["latest", "$CI_COMMIT_TAG"]
|
||||
# when:
|
||||
# branch: ${CI_REPO_DEFAULT_BRANCH}
|
||||
# event:
|
||||
# - tag
|
||||
|
||||
publish-docker-develop:
|
||||
image: docker.io/cybercinch/woodpecker-plugin-depot
|
||||
pull: true
|
||||
settings:
|
||||
<<: *docker_creds
|
||||
token:
|
||||
from_secret: depot_token
|
||||
repohost: hub.cybercinch.nz
|
||||
repo: cybercinch/${CI_REPO_NAME}
|
||||
project:
|
||||
from_secret: depot_project
|
||||
dockerfile: Dockerfile.dev
|
||||
push: true
|
||||
platforms: linux/amd64
|
||||
tags: ["develop"]
|
||||
when:
|
||||
branch: develop
|
||||
event:
|
||||
- push
|
||||
- manual
|
||||
23
Dockerfile.dev
Normal file
23
Dockerfile.dev
Normal file
@@ -0,0 +1,23 @@
|
||||
FROM golang:1.20 as build
|
||||
|
||||
WORKDIR /code
|
||||
|
||||
# Copy code into build container
|
||||
COPY . /code/
|
||||
|
||||
RUN GOOS=linux \
|
||||
GOARCH=amd64 \
|
||||
CGO_ENABLED=0 \
|
||||
go build -o build/go-semantic-release.linux_x86_64 -ldflags "-w -s --X main.version=`go-semantic-release next`" \
|
||||
./cmd/go-semantic-release/
|
||||
|
||||
|
||||
FROM alpine:3.14
|
||||
|
||||
WORKDIR /code
|
||||
|
||||
COPY --from=build /code/build/go-semantic-release.linux_x86_64 /usr/local/bin/go-semantic-release
|
||||
|
||||
USER 1000
|
||||
|
||||
ENTRYPOINT [ "go-semantic-release" ]
|
||||
@@ -36,6 +36,7 @@ func New(c *config.GiteaProvider, checkConfig bool) (*GiteaClient, error) {
|
||||
if err != nil && checkConfig {
|
||||
return &GiteaClient{}, err
|
||||
}
|
||||
|
||||
c.AccessToken = token
|
||||
|
||||
if c.URL == "" {
|
||||
@@ -118,7 +119,11 @@ func (g *GiteaClient) makeRelease(releaseVersion *shared.ReleaseVersion, generat
|
||||
g.client.CreateRelease(g.config.User, g.config.Repo, opt)
|
||||
|
||||
release, _, err := g.client.CreateRelease(g.config.User, g.config.Repo, opt)
|
||||
|
||||
g.log.Debugf("Release response: %+v", *release)
|
||||
|
||||
if err != nil {
|
||||
g.log.Debugf("Release Error response: %+v", err)
|
||||
if strings.Contains(err.Error(), "Release is has no Tag") {
|
||||
g.log.Infof("A release with tag %s already exits, will not perform a release or update", tag)
|
||||
return nil
|
||||
@@ -126,7 +131,6 @@ func (g *GiteaClient) makeRelease(releaseVersion *shared.ReleaseVersion, generat
|
||||
return fmt.Errorf("could not create release: %s", err.Error())
|
||||
}
|
||||
g.release = release
|
||||
g.log.Debugf("Release response: %+v", *release)
|
||||
g.log.Infof("Created release")
|
||||
return nil
|
||||
|
||||
|
||||
85
scripts/commit-filter-check.sh
Executable file
85
scripts/commit-filter-check.sh
Executable file
@@ -0,0 +1,85 @@
|
||||
#!/bin/bash
|
||||
|
||||
commit_message_check (){
|
||||
# Get the current branch and apply it to a variable
|
||||
currentbranch=`git branch | grep \* | cut -d ' ' -f2`
|
||||
|
||||
# Gets the commits for the current branch and outputs to file
|
||||
git log $currentbranch --pretty=format:"%H" --not master > shafile.txt
|
||||
|
||||
# loops through the file an gets the message
|
||||
for i in `cat ./shafile.txt`;
|
||||
do
|
||||
# gets the git commit message based on the sha
|
||||
gitmessage=`git log --format=%B -n 1 "$i"`
|
||||
|
||||
####################### TEST STRINGS comment out line 13 to use #########################################
|
||||
#gitmessage="feat sdasdsadsaas (AEROGEAR-asdsada)"
|
||||
#gitmessage="feat(some txt): some txt (AEROGEAR-****)"
|
||||
#gitmessage="docs(some txt): some txt (AEROGEAR-1234)"
|
||||
#gitmessage="fix(some txt): some txt (AEROGEAR-5678)"
|
||||
#########################################################################################################
|
||||
|
||||
# Checks gitmessage for string feat, fix, docs and breaking, if the messagecheck var is empty if fails
|
||||
messagecheck=`echo $gitmessage | grep -w "chore\|feat\|fix\|docs\|breaking"`
|
||||
if [ -z "$messagecheck" ]
|
||||
then
|
||||
echo "Your commit message must begin with one of the following"
|
||||
echo " feat(feature-name)"
|
||||
echo " fix(fix-name)"
|
||||
echo " docs(docs-change)"
|
||||
echo " "
|
||||
fi
|
||||
if [ ${PerformProjectCheck} == "true" ]; then
|
||||
#check the gitmessage for the Jira number
|
||||
messagecheck=`echo $gitmessage | grep "(${ProjectID}-"`
|
||||
if [ -z "$messagecheck" ]
|
||||
then
|
||||
echo "Your commit message must end with the following"
|
||||
echo " (${ProjectID}-****)"
|
||||
echo "Where **** is the Jira number"
|
||||
echo " "
|
||||
fi
|
||||
fi
|
||||
messagecheck=`echo $gitmessage | grep ": "`
|
||||
if [ -z "$messagecheck" ]
|
||||
then
|
||||
echo "Your commit message has a formatting error please take note of special characters '():' position and use in the example below"
|
||||
echo " type(some txt): some txt (${ProjectID}-****)"
|
||||
echo "Where 'type' is fix, feat, docs or breaking and **** is the Jira number"
|
||||
echo " "
|
||||
fi
|
||||
|
||||
if [ ${PerformProjectCheck} == "true" ]; then
|
||||
# All checks run at the same time by pipeing from one grep to another
|
||||
messagecheck=`echo $gitmessage | grep -w "chore\|feat\|fix\|docs\|breaking" | grep "(${ProjectID}-" | grep ": "`
|
||||
else
|
||||
# All checks run at the same time by pipeing from one grep to another
|
||||
messagecheck=`echo $gitmessage | grep -w "chore\|feat\|fix\|docs\|breaking" | grep ": "`
|
||||
fi
|
||||
|
||||
|
||||
|
||||
# check to see if the messagecheck var is empty
|
||||
if [ -z "$messagecheck" ]
|
||||
then
|
||||
echo "The commit message with sha: '$i' failed "
|
||||
echo "Please review the following :"
|
||||
echo " "
|
||||
echo $gitmessage
|
||||
echo " "
|
||||
rm shafile.txt >/dev/null 2>&1
|
||||
set -o errexit
|
||||
else
|
||||
echo "$messagecheck"
|
||||
echo "'$i' commit message passed"
|
||||
fi
|
||||
done
|
||||
rm shafile.txt >/dev/null 2>&1
|
||||
}
|
||||
|
||||
|
||||
ProjectID="NA" # Set to your Jira Project ID if want to track references to tickets.
|
||||
PerformProjectCheck="false" # Set true if ProjectID is set and you want to ensure Jira ref is included on commit.
|
||||
# Calling the function
|
||||
commit_message_check
|
||||
Reference in New Issue
Block a user