mirror of
https://github.com/lukaszraczylo/semver-generator.git
synced 2026-06-17 01:31:51 +00:00
Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 601f486b60 | |||
| 5203ba9f8b | |||
|
9e54d213a7
|
|||
|
acdc87db7d
|
|||
|
5aaaf3c599
|
|||
|
de8d0dba1d
|
|||
|
b51ea576a3
|
|||
|
a1c81c7120
|
|||
|
2f78fd46ef
|
|||
|
ecd0363c45
|
|||
|
2405a93eb2
|
+63
-104
@@ -85,11 +85,12 @@ jobs:
|
||||
run: |
|
||||
make test CI_RUN=${CI}
|
||||
- name: Upload codecov result
|
||||
uses: codecov/codecov-action@v1
|
||||
uses: codecov/codecov-action@v3
|
||||
continue-on-error: true
|
||||
with:
|
||||
token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos
|
||||
files: coverage.out
|
||||
fail_ci_if_error: false
|
||||
|
||||
code_scans:
|
||||
needs: [ prepare ]
|
||||
@@ -116,80 +117,12 @@ jobs:
|
||||
with:
|
||||
args: ./...
|
||||
|
||||
build-docker:
|
||||
needs: [ prepare, test, code_scans ]
|
||||
name: Docker image build
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@v3
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v1
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v1
|
||||
- name: Login to GHCR
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: docker/login-action@v1
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.ACTOR }}
|
||||
password: ${{ secrets.GHCR_TOKEN }}
|
||||
- name: Prepare for push
|
||||
id: prep
|
||||
run: |
|
||||
if [ -z "${{ needs.prepare.outputs.RELEASE_VERSION }}" ]; then
|
||||
TAGS="${{ needs.prepare.outputs.DOCKER_IMAGE }}:${{ needs.prepare.outputs.GITHUB_SHA }},${{ needs.prepare.outputs.DOCKER_IMAGE }}:latest"
|
||||
else
|
||||
TAGS="${{ needs.prepare.outputs.DOCKER_IMAGE }}:${{ needs.prepare.outputs.GITHUB_SHA }},${{ needs.prepare.outputs.DOCKER_IMAGE }}:${{ needs.prepare.outputs.RELEASE_VERSION }},${{ needs.prepare.outputs.DOCKER_IMAGE }}:latest"
|
||||
fi
|
||||
echo "TAGS=$TAGS" >> $GITHUB_OUTPUT
|
||||
BRANCH=$(echo ${GITHUB_REF##*/} | tr '[A-Z]' '[a-z]')
|
||||
LABELS="org.opencontainers.image.revision=${{ needs.prepare.outputs.GITHUB_SHA }}"
|
||||
LABELS="$LABELS,org.opencontainers.image.created=$(date -u +'%Y-%m-%dT%H:%M:%SZ')"
|
||||
LABELS="$LABELS,org.opencontainers.image.version=$VERSION"
|
||||
LABELS="$LABELS,com.github.repo.branch=$BRANCH"
|
||||
LABELS="$LABELS,com.github.repo.dockerfile=Dockerfile"
|
||||
echo "LABELS=$LABELS" >> $GITHUB_OUTPUT
|
||||
BUILD_ARGS="BRANCH=$BRANCH"
|
||||
echo "args=$BUILD_ARGS" >> $GITHUB_OUTPUT
|
||||
- name: Build image
|
||||
id: docker_build
|
||||
uses: docker/build-push-action@v3
|
||||
with:
|
||||
builder: ${{ steps.buildx.outputs.name }}
|
||||
platforms: linux/arm64,linux/amd64
|
||||
push: ${{ github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main' }}
|
||||
tags: ${{ steps.prep.outputs.tags }}
|
||||
build-args: |
|
||||
GITHUB_AUTH_TOKEN=${{ secrets.GHCR_TOKEN }}
|
||||
MICROSERVICE_NAME=${{ github.event.repository.name }}
|
||||
GITHUB_COMMIT_NUMBER=${{ needs.prepare.outputs.GITHUB_COMMIT_NUMBER }}
|
||||
GITHUB_SHA=${{ needs.prepare.outputs.GITHUB_SHA }}
|
||||
${{ steps.prep.outputs.args }}
|
||||
labels: ${{ steps.prep.outputs.labels }}
|
||||
no-cache: false
|
||||
# - name: Scan image
|
||||
# uses: anchore/scan-action@v2
|
||||
# if: ${{ github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main' }}
|
||||
# with:
|
||||
# image: "${{ needs.prepare.outputs.DOCKER_IMAGE }}:${{ needs.prepare.outputs.GITHUB_SHA }}"
|
||||
# fail-build: false
|
||||
|
||||
build-binary:
|
||||
needs: [ prepare, test, code_scans ]
|
||||
name: Binary compilation and release
|
||||
runs-on: ubuntu-latest
|
||||
# strategy:
|
||||
# matrix:
|
||||
# # build and publish in parallel: linux/386, linux/amd64, linux/arm64, windows/386, windows/amd64, darwin/amd64, darwin/arm64
|
||||
# goos: [linux, windows, darwin]
|
||||
# goarch: ["386", amd64, arm64]
|
||||
# exclude:
|
||||
# - goarch: "386"
|
||||
# goos: darwin
|
||||
# - goarch: arm64
|
||||
# goos: windows
|
||||
# continue-on-error: [true]
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
@@ -216,47 +149,73 @@ jobs:
|
||||
artifacts: "dist/*"
|
||||
allowUpdates: true
|
||||
|
||||
- name: Delete existing v1 tag and release
|
||||
run: |
|
||||
gh release delete v1 --cleanup-tag -y
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GHCR_TOKEN }}
|
||||
|
||||
- name: Create release [v1]
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
bodyFile: ./.release_notes
|
||||
name: version ${{ needs.prepare.outputs.RELEASE_VERSION }}
|
||||
name: v1 - ${{ needs.prepare.outputs.RELEASE_VERSION }}
|
||||
token: ${{ secrets.GHCR_TOKEN }}
|
||||
tag: v1
|
||||
prerelease: ${{ github.ref != 'refs/heads/master' && github.ref != 'refs/heads/main' }}
|
||||
artifacts: "dist/*"
|
||||
allowUpdates: true
|
||||
makeLatest: false
|
||||
|
||||
# - name: Compile and release semver
|
||||
# uses: wangyoucao577/go-release-action@v1.34
|
||||
# with:
|
||||
# github_token: ${{ secrets.GHCR_TOKEN }}
|
||||
# goos: ${{ matrix.goos }}
|
||||
# goarch: ${{ matrix.goarch }}
|
||||
# ldflags: -s -w -X main.PKG_VERSION=${{ needs.prepare.outputs.RELEASE_VERSION }}
|
||||
# project_path: .
|
||||
# binary_name: semver-gen
|
||||
# asset_name: semver-gen-${{ matrix.goos }}-${{ matrix.goarch }}
|
||||
# release_name: version ${{ needs.prepare.outputs.RELEASE_VERSION }}
|
||||
# release_tag: ${{ needs.prepare.outputs.RELEASE_VERSION }}
|
||||
# compress_assets: false
|
||||
# retry: 10
|
||||
# overwrite: true
|
||||
# pre_command: export GODEBUG=http2client=0 && export CGO_ENABLED=1 && make update
|
||||
|
||||
# - name: Compile and release v1
|
||||
# uses: wangyoucao577/go-release-action@v1.33
|
||||
# with:
|
||||
# github_token: ${{ secrets.GHCR_TOKEN }}
|
||||
# goos: ${{ matrix.goos }}
|
||||
# goarch: ${{ matrix.goarch }}
|
||||
# ldflags: -s -w -X main.PKG_VERSION=${{ needs.prepare.outputs.RELEASE_VERSION }}
|
||||
# project_path: .
|
||||
# binary_name: semver-gen
|
||||
# asset_name: semver-gen-${{ matrix.goos }}-${{ matrix.goarch }}
|
||||
# release_name: version v1
|
||||
# release_tag: v1
|
||||
# compress_assets: false
|
||||
# retry: 10
|
||||
# overwrite: true
|
||||
# pre_command: export GODEBUG=http2client=0 && export CGO_ENABLED=1 && make update
|
||||
build-docker:
|
||||
needs: [ prepare, test, code_scans, build-binary ]
|
||||
name: Docker image build
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@v3
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
- name: Login to GHCR
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.ACTOR }}
|
||||
password: ${{ secrets.GHCR_TOKEN }}
|
||||
- name: Prepare for push
|
||||
id: prep
|
||||
run: |
|
||||
if [ -z "${{ needs.prepare.outputs.RELEASE_VERSION }}" ]; then
|
||||
TAGS="${{ needs.prepare.outputs.DOCKER_IMAGE }}:${{ needs.prepare.outputs.GITHUB_SHA }},${{ needs.prepare.outputs.DOCKER_IMAGE }}:latest,${{ needs.prepare.outputs.DOCKER_IMAGE }}:v1"
|
||||
else
|
||||
TAGS="${{ needs.prepare.outputs.DOCKER_IMAGE }}:${{ needs.prepare.outputs.GITHUB_SHA }},${{ needs.prepare.outputs.DOCKER_IMAGE }}:${{ needs.prepare.outputs.RELEASE_VERSION }},${{ needs.prepare.outputs.DOCKER_IMAGE }}:latest,${{ needs.prepare.outputs.DOCKER_IMAGE }}:v1"
|
||||
fi
|
||||
echo "TAGS=$TAGS" >> $GITHUB_OUTPUT
|
||||
BRANCH=$(echo ${GITHUB_REF##*/} | tr '[A-Z]' '[a-z]')
|
||||
LABELS="org.opencontainers.image.revision=${{ needs.prepare.outputs.GITHUB_SHA }}"
|
||||
LABELS="$LABELS,org.opencontainers.image.created=$(date -u +'%Y-%m-%dT%H:%M:%SZ')"
|
||||
LABELS="$LABELS,org.opencontainers.image.version=$VERSION"
|
||||
LABELS="$LABELS,com.github.repo.branch=$BRANCH"
|
||||
LABELS="$LABELS,com.github.repo.dockerfile=Dockerfile"
|
||||
echo "LABELS=$LABELS" >> $GITHUB_OUTPUT
|
||||
BUILD_ARGS="BRANCH=$BRANCH"
|
||||
echo "args=$BUILD_ARGS" >> $GITHUB_OUTPUT
|
||||
- name: Build image
|
||||
id: docker_build
|
||||
uses: docker/build-push-action@v4
|
||||
with:
|
||||
builder: ${{ steps.buildx.outputs.name }}
|
||||
platforms: linux/arm64,linux/amd64
|
||||
push: ${{ github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main' }}
|
||||
tags: ${{ steps.prep.outputs.tags }}
|
||||
build-args: |
|
||||
GITHUB_AUTH_TOKEN=${{ secrets.GHCR_TOKEN }}
|
||||
MICROSERVICE_NAME=${{ github.event.repository.name }}
|
||||
GITHUB_COMMIT_NUMBER=${{ needs.prepare.outputs.GITHUB_COMMIT_NUMBER }}
|
||||
GITHUB_SHA=${{ needs.prepare.outputs.GITHUB_SHA }}
|
||||
${{ steps.prep.outputs.args }}
|
||||
labels: ${{ steps.prep.outputs.labels }}
|
||||
no-cache: false
|
||||
|
||||
+4
-3
@@ -1,5 +1,5 @@
|
||||
#!/bin/sh -l
|
||||
set -o pipefail
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
FLAGS=""
|
||||
|
||||
@@ -37,5 +37,6 @@ fi
|
||||
cd /github/workspace
|
||||
OUT_SEMVER_GEN=$(/go/src/app/semver-gen generate $FLAGS $*)
|
||||
[ $? -eq 0 ] || exit 1
|
||||
echo "::set-output name=semantic_version::$(echo $OUT_SEMVER_GEN | sed -e 's|SEMVER ||g')"
|
||||
CLEAN_SEMVER=$(echo $OUT_SEMVER_GEN | sed -e 's|SEMVER ||g')
|
||||
echo "semantic_version=$CLEAN_SEMVER" >> $GITHUB_OUTPUT
|
||||
echo $OUT_SEMVER_GEN
|
||||
@@ -57,9 +57,9 @@ require (
|
||||
github.com/xanzy/ssh-agent v0.3.3 // indirect
|
||||
golang.org/x/crypto v0.5.0 // indirect
|
||||
golang.org/x/mod v0.7.0 // indirect
|
||||
golang.org/x/net v0.5.0 // indirect
|
||||
golang.org/x/sys v0.4.0 // indirect
|
||||
golang.org/x/text v0.6.0 // indirect
|
||||
golang.org/x/net v0.7.0 // indirect
|
||||
golang.org/x/sys v0.5.0 // indirect
|
||||
golang.org/x/text v0.7.0 // indirect
|
||||
golang.org/x/tools v0.5.0 // indirect
|
||||
gopkg.in/ini.v1 v1.67.0 // indirect
|
||||
gopkg.in/warnings.v0 v0.1.2 // indirect
|
||||
|
||||
@@ -371,8 +371,8 @@ golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qx
|
||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||
golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
|
||||
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
|
||||
golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw=
|
||||
golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws=
|
||||
golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g=
|
||||
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
@@ -444,13 +444,13 @@ golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBc
|
||||
golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18=
|
||||
golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU=
|
||||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
|
||||
golang.org/x/term v0.4.0 h1:O7UWfv5+A2qiuulQk30kVinPoMtoIPeVaKLEgLpVkvg=
|
||||
golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY=
|
||||
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
@@ -460,8 +460,8 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k=
|
||||
golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo=
|
||||
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
|
||||
Reference in New Issue
Block a user