mirror of
https://github.com/gravitl/netmaker.git
synced 2025-09-10 15:14: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:
|
||||
description: 'docker tag'
|
||||
required: true
|
||||
release:
|
||||
types: [published]
|
||||
workflow_call:
|
||||
inputs:
|
||||
tag:
|
||||
type: string
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
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
|
||||
builds:
|
||||
- main: ./
|
||||
id: "netmaker"
|
||||
env:
|
||||
- CGO_ENABLED=1
|
||||
ldflags:
|
||||
- -s -w
|
||||
targets:
|
||||
- linux_amd64
|
||||
binary: netmaker
|
||||
binary: '{{ .ProjectName }}'
|
||||
|
||||
- main: ./cli
|
||||
id: "nmctl"
|
||||
id: 'nmctl'
|
||||
env:
|
||||
- CGO_ENABLED=0
|
||||
ldflags:
|
||||
|
@ -25,9 +25,10 @@ builds:
|
|||
- darwin_arm64
|
||||
- freebsd_amd64
|
||||
- windows_amd64
|
||||
binary: nmctl
|
||||
binary: 'nmctl'
|
||||
archives:
|
||||
- format: binary
|
||||
name_template: '{{ .Binary }}_{{ .Os }}_{{ .Arch }}{{ with .Arm }}v{{ . }}{{ end }}{{ with .Mips }}_{{ . }}{{ end }}'
|
||||
changelog:
|
||||
skip: true
|
||||
release:
|
||||
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