1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # Copyright 2024 Intel Corporation
3
+ # Copyright 2024 Kyunghee University
4
+ name : Publish image and tag/release code
5
+
6
+ on :
7
+ push :
8
+ branches :
9
+ - master
10
+
11
+ jobs :
12
+ version-check :
13
+ if : (github.repository_owner == 'onosproject')
14
+ runs-on : ubuntu-latest
15
+ outputs :
16
+ valid_version : ${{ steps.version-check-step.outputs.valid_version }}
17
+ dev_version : ${{ steps.dev-version-check-step.outputs.dev_version }}
18
+ target_version : ${{ steps.get-target-version-step.outputs.target_version }}
19
+ steps :
20
+ - uses : actions/checkout@v4
21
+ with :
22
+ fetch-depth : 0
23
+
24
+ - name : check version
25
+ id : version-check-step
26
+ run : |
27
+ make check-version; if [[ $? == 0 ]]; then echo "valid_version=true" >> $GITHUB_OUTPUT; else echo "valid_version=false" >> $GITHUB_OUTPUT; fi
28
+ cat $GITHUB_OUTPUT
29
+
30
+ - name : check dev version
31
+ id : dev-version-check-step
32
+ run : |
33
+ f_dev=$(./build/bin/version_check.sh is_dev)
34
+ if [[ $f_dev == "true" ]]; then echo "dev_version=true" >> $GITHUB_OUTPUT; else echo "dev_version=false" >> $GITHUB_OUTPUT; fi
35
+ cat $GITHUB_OUTPUT
36
+
37
+ - name : get target version
38
+ id : get-target-version-step
39
+ run : |
40
+ echo "target_version=$(cat VERSION)" >> $GITHUB_OUTPUT
41
+ cat $GITHUB_OUTPUT
42
+
43
+ tag_versions :
44
+ runs-on : ubuntu-latest
45
+ needs : version-check
46
+ if : (github.repository_owner == 'onosproject') && (needs.version-check.outputs.valid_version == 'true') && (needs.version-check.outputs.dev_version == 'false')
47
+ steps :
48
+ - uses : actions/checkout@v4
49
+ with :
50
+ fetch-depth : 0
51
+ - name : create release using REST API
52
+ run : |
53
+ curl -L \
54
+ -X POST \
55
+ -H "Accept: application/vnd.github+json" \
56
+ -H "Authorization: Bearer ${{ secrets.GH_ONOS_PAT }}" \
57
+ -H "X-GitHub-Api-Version: 2022-11-28" \
58
+ https://api.github.com/repos/${{ github.repository }}/releases \
59
+ -d '{
60
+ "tag_name": "v${{ needs.version-check.outputs.target_version }}",
61
+ "target_commitish": "${{ github.event.repository.default_branch }}",
62
+ "name": "v${{ needs.version-check.outputs.target_version }}",
63
+ "draft": false,
64
+ "prerelease": false,
65
+ "generate_release_notes": true
66
+ }'
67
+
68
+ publish-images :
69
+ runs-on : ubuntu-latest
70
+ needs : version-check
71
+ if : (github.repository_owner == 'onosproject') && (needs.version-check.outputs.valid_version == 'true')
72
+ env :
73
+ REGISTRY : docker.io
74
+ DOCKER_REPOSITORY : onosproject/
75
+ steps :
76
+ - uses : actions/checkout@v4
77
+ with :
78
+ fetch-depth : 0
79
+ - uses : actions/setup-go@v5
80
+ with :
81
+ go-version-file : ' go.mod'
82
+ - uses : docker/login-action@v3.1.0
83
+ with :
84
+ registry : ${{ env.REGISTRY }}
85
+ username : ${{ secrets.DOCKER_USERNAME }}
86
+ password : ${{ secrets.DOCKER_PASSWORD }}
87
+ DOCKER_USERNAME : ${{ secrets.DOCKER_USERNAME }}
88
+ DOCKER_PASSWORD : ${{ secrets.DOCKER_PASSWORD }}
89
+ - name : Build and push Docker image with tag latest
90
+ env :
91
+ DOCKER_TAG : latest
92
+ run : |
93
+ ONOS_A1T_VERSION=${{ env.DOCKER_TAG }} make docker-build
94
+ ONOS_A1T_VERSION=${{ env.DOCKER_TAG }} make docker-push
95
+ - name : Build and push Docker image with tag
96
+ if : needs.version-check.outputs.dev_version == 'false'
97
+ env :
98
+ DOCKER_TAG : v${{ needs.version-check.outputs.target_version }}
99
+ run : |
100
+ ONOS_A1T_VERSION=${{ env.DOCKER_TAG }} make docker-build
101
+ ONOS_A1T_VERSION=${{ env.DOCKER_TAG }} make docker-push
102
+
103
+ bump-up-version :
104
+ runs-on : ubuntu-latest
105
+ needs : version-check
106
+ if : (github.repository_owner == 'onosproject') && (needs.version-check.outputs.valid_version == 'true') && (needs.version-check.outputs.dev_version == 'false')
107
+ steps :
108
+ - uses : actions/checkout@v4
109
+ with :
110
+ fetch-depth : 0
111
+ - name : increment version
112
+ run : |
113
+ IFS='.' read -r major minor patch <<< ${{ needs.version-check.outputs.target_version }}
114
+ patch_update=$((patch+1))
115
+ NEW_VERSION="$major.$minor.$patch_update-dev"
116
+ echo $NEW_VERSION > VERSION
117
+ echo "Updated version: $NEW_VERSION"
118
+
119
+ - name : Create Pull Request
120
+ uses : peter-evans/create-pull-request@v6
121
+ with :
122
+ token : ${{ secrets.GH_ONOS_PAT }}
123
+ commit-message : Update version
124
+ committer : github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
125
+ author : ${{ github.actor }} <${{ github.actor_id }}+${{ github.actor }}@users.noreply.github.com>
126
+ signoff : true
127
+ branch : version-update
128
+ delete-branch : true
129
+ title : Update version
130
+ body : |
131
+ Update VERSION file
132
+ add-paths : |
133
+ VERSION
0 commit comments