mirror of
https://github.com/gravitl/netmaker.git
synced 2025-09-11 23:54:22 +08:00
Merge pull request #2066 from gravitl/GRA-1100-workflows
Gra 1100 workflows
This commit is contained in:
commit
d7f6030173
13 changed files with 314 additions and 87 deletions
50
.github/workflows/buildandrelease.yml
vendored
50
.github/workflows/buildandrelease.yml
vendored
|
@ -1,50 +0,0 @@
|
||||||
name: Build and Release
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
version:
|
|
||||||
description: 'Netmaker version'
|
|
||||||
required: true
|
|
||||||
release:
|
|
||||||
types: [published]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
version:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
outputs:
|
|
||||||
tag: ${{ steps.version.outputs.package_version }}
|
|
||||||
version: ${{ steps.version.outputs.version }}
|
|
||||||
steps:
|
|
||||||
- name: Get Version Number
|
|
||||||
id: version
|
|
||||||
run: |
|
|
||||||
if [[ -n "${{ github.event.inputs.version }}" ]]; then
|
|
||||||
NETMAKER_VERSION=${{ github.event.inputs.version }}
|
|
||||||
else
|
|
||||||
NETMAKER_VERSION=$(curl -fsSL https://api.github.com/repos/gravitl/netmaker/tags | grep 'name' | head -1 | cut -d'"' -f4)
|
|
||||||
fi
|
|
||||||
echo "VERSION=${NETMAKER_VERSION}" >> $GITHUB_OUTPUT
|
|
||||||
# remove everything but digits and . for package (deb, rpm, etc) versions
|
|
||||||
PACKAGE_VERSION=$(echo ${NETMAKER_VERSION} | tr -cd '[:digit:].')
|
|
||||||
echo "PACKAGE_VERSION=${PACKAGE_VERSION}" >> $GITHUB_OUTPUT
|
|
||||||
netmaker-nmctl:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: version
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
ref: release_${{ needs.version.outputs.version }}
|
|
||||||
fetch-depth: 0
|
|
||||||
- run: git fetch --force --tags
|
|
||||||
- name: Setup go
|
|
||||||
uses: actions/setup-go@v3
|
|
||||||
with:
|
|
||||||
go-version: 1.19
|
|
||||||
- name: GoReleaser
|
|
||||||
uses: goreleaser/goreleaser-action@v4
|
|
||||||
with:
|
|
||||||
args: release --clean
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
46
.github/workflows/packages.yml
vendored
Normal file
46
.github/workflows/packages.yml
vendored
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
name: Build linux packages
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
description: "netmaker version"
|
||||||
|
required: true
|
||||||
|
release:
|
||||||
|
types: [released]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
packages:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: setup ssh
|
||||||
|
run: |
|
||||||
|
mkdir -p ~/.ssh/
|
||||||
|
echo "$SSH_KEY" > ~/.ssh/id_devops
|
||||||
|
chmod 600 ~/.ssh/id_devops
|
||||||
|
cat >>~/.ssh/config <<END
|
||||||
|
Host *.clustercat.com
|
||||||
|
User root
|
||||||
|
IdentityFile ~/.ssh/id_devops
|
||||||
|
StrictHostKeyChecking no
|
||||||
|
END
|
||||||
|
env:
|
||||||
|
SSH_KEY: ${{ secrets.TESTING_SSH_KEY }}
|
||||||
|
- name: set version
|
||||||
|
run: |
|
||||||
|
if [[ -n "${{ github.event.inputs.version }}" ]]; then
|
||||||
|
# remove everything but digits and . for package (deb, rpm, etc) versions
|
||||||
|
VERSION=$(echo ${{ github.event.inputs.version }} | tr -cd '[:digit:].')
|
||||||
|
else
|
||||||
|
VERSION=$(echo ${{ github.ref.name }} | tr -cd '[:digit:].')
|
||||||
|
fi
|
||||||
|
echo "VERSION=${VERSION}" >> $GITHUB_ENV
|
||||||
|
echo ${VERSION}
|
||||||
|
- name: apt/rpm
|
||||||
|
run: |
|
||||||
|
ssh fileserver.clustercat.com "cd packages/nmcli; export VERSION=${{ ENV.version }}; export REVISION=0; ./buildall.sh "
|
7
.github/workflows/publish-docker.yml
vendored
7
.github/workflows/publish-docker.yml
vendored
|
@ -6,8 +6,11 @@ on:
|
||||||
tag:
|
tag:
|
||||||
description: 'docker tag'
|
description: 'docker tag'
|
||||||
required: true
|
required: true
|
||||||
release:
|
workflow_call:
|
||||||
types: [published]
|
inputs:
|
||||||
|
tag:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
docker:
|
docker:
|
||||||
|
|
32
.github/workflows/pull-request.yml
vendored
Normal file
32
.github/workflows/pull-request.yml
vendored
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
# creates a PR from release branch to master
|
||||||
|
name: Create Release PR to master
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
description: "netmaker version"
|
||||||
|
required: true
|
||||||
|
release:
|
||||||
|
types: [released]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
pr-to-main:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: create pr
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
run: |
|
||||||
|
gh api --method POST \
|
||||||
|
-H 'Accept: application/vnd.github+json' -H 'X-GitHub-Api-Version: 2022-11-28' \
|
||||||
|
/repos/${{ github.repository }}/pulls \
|
||||||
|
-f title='${{ github.event.inputs.version }}' \
|
||||||
|
-f head='release_${{ github.event.inputs.version }}' \
|
||||||
|
-f base="master"
|
||||||
|
|
||||||
|
|
29
.github/workflows/purgeGHCR.yml
vendored
29
.github/workflows/purgeGHCR.yml
vendored
|
@ -1,29 +0,0 @@
|
||||||
name: Purge untagged images from GHCR
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
schedule:
|
|
||||||
- cron: '1 1 1 * *'
|
|
||||||
jobs:
|
|
||||||
purge:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
- name: Prune Netmaker
|
|
||||||
uses: vlaurin/action-ghcr-prune@main
|
|
||||||
with:
|
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
organization: gravitl
|
|
||||||
container: netmaker
|
|
||||||
dry-run: false # Dry-run first, then change to `false`
|
|
||||||
untagged: true
|
|
||||||
- name: Prune Netclient
|
|
||||||
uses: vlaurin/action-ghcr-prune@main
|
|
||||||
with:
|
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
organization: gravitl
|
|
||||||
container: netclient
|
|
||||||
dry-run: false # Dry-run first, then change to `false`
|
|
||||||
untagged: true
|
|
||||||
|
|
50
.github/workflows/release-assets.yml
vendored
Normal file
50
.github/workflows/release-assets.yml
vendored
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
# generates release assets and uploads to release
|
||||||
|
name: Upload Release Assets
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
prerelease:
|
||||||
|
required: true
|
||||||
|
type: boolean
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
description: "netmaker version"
|
||||||
|
required: true
|
||||||
|
prerelease:
|
||||||
|
required: true
|
||||||
|
type: boolean
|
||||||
|
description: "prerelease"
|
||||||
|
jobs:
|
||||||
|
release-assets:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
ref: release_${{ github.event.inputs.version}}
|
||||||
|
fetch-depth: 0
|
||||||
|
- name: Get Tags
|
||||||
|
run: |
|
||||||
|
git fetch --force --tags
|
||||||
|
- name: Setup go
|
||||||
|
uses: actions/setup-go@v3
|
||||||
|
with:
|
||||||
|
go-version: 1.19
|
||||||
|
- name: GoReleaser (full release)
|
||||||
|
if: ${{ github.event.inputs.prerelease == 'false'}}
|
||||||
|
uses: goreleaser/goreleaser-action@v4
|
||||||
|
with:
|
||||||
|
args: release --clean --release-notes release.md
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
- name: GoReleaser (prerelease)
|
||||||
|
if: ${{ github.event.inputs.prerelease == 'false'}}
|
||||||
|
uses: goreleaser/goreleaser-action@v4
|
||||||
|
with:
|
||||||
|
args: release --clean --release-notes release.md -f .goreleaser.prerelease.yaml
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
39
.github/workflows/release-branch.yml
vendored
Normal file
39
.github/workflows/release-branch.yml
vendored
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
# creates new branch (release_{{ version }} with tag {{ version }} from develop
|
||||||
|
# will fail if branch or tag already exists on github
|
||||||
|
name: Create Release Branch
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
description: "netmaker version"
|
||||||
|
required: true
|
||||||
|
jobs:
|
||||||
|
release-branch:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: checkout develop
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
ref: develop
|
||||||
|
- name: setup go
|
||||||
|
uses: actions/setup-go@v3
|
||||||
|
with:
|
||||||
|
go-version: 1.19
|
||||||
|
- name: setup git
|
||||||
|
run: |
|
||||||
|
git config user.name "Github Actions"
|
||||||
|
git config user.emaail "info@netmaker.io"
|
||||||
|
- name: create release Branch
|
||||||
|
run: |
|
||||||
|
git switch -c release_${{ github.event.inputs.version }}
|
||||||
|
git tag -f ${{ github.event.inputs.version }}
|
||||||
|
#push branch
|
||||||
|
git push origin release_${{ github.event.inputs.version }}
|
||||||
|
#push tag
|
||||||
|
git push origin ${{ github.event.inputs.version }}
|
||||||
|
|
49
.github/workflows/release.yml
vendored
Normal file
49
.github/workflows/release.yml
vendored
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
# creates a release from develop
|
||||||
|
# creates release branch, generates release assets, publishes docker image and copies release.md to release
|
||||||
|
# if formal release, linux packages are generated and a PR from release branch to master is created
|
||||||
|
name: Release
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
description: "new version number"
|
||||||
|
required: true
|
||||||
|
prerelease:
|
||||||
|
required: true
|
||||||
|
type: boolean
|
||||||
|
description: Is this a pre-release
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
release-branch:
|
||||||
|
uses: ./.github/workflows/release-branch.yml
|
||||||
|
with:
|
||||||
|
version: ${{ github.event.inputs.version }}
|
||||||
|
|
||||||
|
release-assets:
|
||||||
|
needs: release-branch
|
||||||
|
uses: ./.github/workflows/release-assets.yml
|
||||||
|
with:
|
||||||
|
version: ${{ github.event.inputs.version }}
|
||||||
|
prerelease: ${{ github.event.inputs.prerelease == 'true' }}
|
||||||
|
|
||||||
|
docker:
|
||||||
|
needs: release-branch
|
||||||
|
uses: ./.github/workflows/publish-docker.yml
|
||||||
|
with:
|
||||||
|
tag: ${{ github.event.inputs.version }}
|
||||||
|
|
||||||
|
packages:
|
||||||
|
if: ${{ github.event.inputs.prerelease == 'false' }}
|
||||||
|
needs: release-branch
|
||||||
|
uses: ./.github/workflows/packages.yml
|
||||||
|
with:
|
||||||
|
version: ${{ github.event.inputs.version }}
|
||||||
|
|
||||||
|
pull-request:
|
||||||
|
if: ${{ github.event.inputs.prerelease == 'false' }}
|
||||||
|
needs: release-branch
|
||||||
|
uses: ./.github/workflows/pull-request.yml
|
||||||
|
with:
|
||||||
|
version: ${{ github.event.inputs.version }}
|
41
.github/workflows/upgraderelease.yml
vendored
Normal file
41
.github/workflows/upgraderelease.yml
vendored
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
name: UpgradeRelease
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
description: "release/version to update"
|
||||||
|
required: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
update:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
ref: release_${{ github.event.inputs.version }}
|
||||||
|
fetch-depth: 0
|
||||||
|
- run: |
|
||||||
|
git fetch --force --tags
|
||||||
|
- name: Setup go
|
||||||
|
uses: actions/setup-go@v3
|
||||||
|
with:
|
||||||
|
go-version: 1.19
|
||||||
|
- name: goreleaser
|
||||||
|
uses: goreleaser/goreleaser-action@v4
|
||||||
|
with:
|
||||||
|
args: release --clean --release-notes release.md -f .goreleaser.update.yaml
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
packages:
|
||||||
|
uses: ./.github/workflows/packages.yml
|
||||||
|
with:
|
||||||
|
version: ${{ github.event.inputs.version }}
|
||||||
|
|
||||||
|
pull-request:
|
||||||
|
uses: ./.github/workflows/pull-request.yml
|
||||||
|
with:
|
||||||
|
version: ${{ github.event.inputs.version }}
|
34
.goreleaser.prerelease.yaml
Normal file
34
.goreleaser.prerelease.yaml
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
before:
|
||||||
|
hooks:
|
||||||
|
# You may remove this if you don't use go modules.
|
||||||
|
- go mod tidy
|
||||||
|
builds:
|
||||||
|
- main: ./
|
||||||
|
env:
|
||||||
|
- CGO_ENABLED=1
|
||||||
|
ldflags:
|
||||||
|
- -s -w
|
||||||
|
targets:
|
||||||
|
- linux_amd64
|
||||||
|
binary: '{{ .ProjectName }}'
|
||||||
|
|
||||||
|
- main: ./cli
|
||||||
|
id: 'nmctl'
|
||||||
|
env:
|
||||||
|
- CGO_ENABLED=0
|
||||||
|
ldflags:
|
||||||
|
- -s -w
|
||||||
|
targets:
|
||||||
|
- linux_amd64
|
||||||
|
- linux_arm64
|
||||||
|
- darwin_amd64
|
||||||
|
- darwin_arm64
|
||||||
|
- freebsd_amd64
|
||||||
|
- windows_amd64
|
||||||
|
binary: 'nmctl'
|
||||||
|
archives:
|
||||||
|
- format: binary
|
||||||
|
name_template: '{{ .Binary }}_{{ .Os }}_{{ .Arch }}{{ with .Arm }}v{{ . }}{{ end }}{{ with .Mips }}_{{ . }}{{ end }}'
|
||||||
|
release:
|
||||||
|
prerelease: true
|
||||||
|
|
4
.goreleaser.update.yaml
Normal file
4
.goreleaser.update.yaml
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
builds:
|
||||||
|
- skip: true
|
||||||
|
release:
|
||||||
|
prerelease: false
|
|
@ -4,16 +4,16 @@ before:
|
||||||
- go mod tidy
|
- go mod tidy
|
||||||
builds:
|
builds:
|
||||||
- main: ./
|
- main: ./
|
||||||
id: "netmaker"
|
|
||||||
env:
|
env:
|
||||||
- CGO_ENABLED=1
|
- CGO_ENABLED=1
|
||||||
ldflags:
|
ldflags:
|
||||||
- -s -w
|
- -s -w
|
||||||
targets:
|
targets:
|
||||||
- linux_amd64
|
- linux_amd64
|
||||||
binary: netmaker
|
binary: '{{ .ProjectName }}'
|
||||||
|
|
||||||
- main: ./cli
|
- main: ./cli
|
||||||
id: "nmctl"
|
id: 'nmctl'
|
||||||
env:
|
env:
|
||||||
- CGO_ENABLED=0
|
- CGO_ENABLED=0
|
||||||
ldflags:
|
ldflags:
|
||||||
|
@ -25,9 +25,10 @@ builds:
|
||||||
- darwin_arm64
|
- darwin_arm64
|
||||||
- freebsd_amd64
|
- freebsd_amd64
|
||||||
- windows_amd64
|
- windows_amd64
|
||||||
binary: nmctl
|
binary: 'nmctl'
|
||||||
archives:
|
archives:
|
||||||
- format: binary
|
- format: binary
|
||||||
name_template: '{{ .Binary }}_{{ .Os }}_{{ .Arch }}{{ with .Arm }}v{{ . }}{{ end }}{{ with .Mips }}_{{ . }}{{ end }}'
|
name_template: '{{ .Binary }}_{{ .Os }}_{{ .Arch }}{{ with .Arm }}v{{ . }}{{ end }}{{ with .Mips }}_{{ . }}{{ end }}'
|
||||||
changelog:
|
release:
|
||||||
skip: true
|
prerelease: false
|
||||||
|
|
||||||
|
|
7
release.md
Normal file
7
release.md
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# Netmaker v0.18.1
|
||||||
|
|
||||||
|
## whats new
|
||||||
|
|
||||||
|
## whats fixed
|
||||||
|
|
||||||
|
## known issues
|
Loading…
Add table
Reference in a new issue