Skip to content

Commit 9665daa

Browse files
authored
Update release.yml with reusable workflows (#1711)
Signed-off-by: Andy Bavier <andybavier@gmail.com>
1 parent 81df3d0 commit 9665daa

File tree

1 file changed

+37
-123
lines changed

1 file changed

+37
-123
lines changed

.github/workflows/release.yml

Lines changed: 37 additions & 123 deletions
Original file line numberDiff line numberDiff line change
@@ -1,133 +1,47 @@
11
# SPDX-License-Identifier: Apache-2.0
22
# Copyright 2024 Intel Corporation
33
# Copyright 2024 Kyunghee University
4-
name: Publish image and tag/release code
4+
# Copyright 2025 Canonical Ltd.
5+
name: Release Pipeline
56

67
on:
78
push:
89
branches:
910
- master
11+
paths:
12+
- "VERSION"
1013

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
14+
permissions:
15+
contents: read
4216

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.2.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_CONFIG_VERSION=${{ env.DOCKER_TAG }} make docker-build
94-
ONOS_CONFIG_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_CONFIG_VERSION=${{ env.DOCKER_TAG }} make docker-build
101-
ONOS_CONFIG_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
17+
jobs:
18+
# Tag GitHub Release
19+
# The convention is to prefix the version with a 'v', e.g., v1.2.3
20+
tag-github:
21+
uses: onosproject/.github/.github/workflows/tag-github.yml@main
22+
with:
23+
add_v: true
24+
secrets: inherit
25+
26+
# Build and Release Docker Image
27+
# The convention is to use the same tag for the Docker image as the GitHub Release
28+
release-image:
29+
needs: tag-github
30+
if: needs.tag-github.outputs.changed == 'true'
31+
permissions:
32+
contents: read
33+
packages: write
34+
actions: read
35+
id-token: write
36+
attestations: write
37+
uses: onosproject/.github/.github/workflows/release-image.yml@main
38+
with:
39+
docker_tag: ${{ needs.tag-github.outputs.version }}
40+
secrets: inherit
41+
42+
# Bump Version
43+
update-version:
44+
needs: tag-github
45+
if: needs.tag-github.outputs.changed == 'true'
46+
uses: onosproject/.github/.github/workflows/bump-version.yml@main
47+
secrets: inherit

0 commit comments

Comments
 (0)