diff --git a/.github/workflows/push.yaml b/.github/workflows/push.yaml new file mode 100644 index 0000000..be760c5 --- /dev/null +++ b/.github/workflows/push.yaml @@ -0,0 +1,128 @@ +# SPDX-License-Identifier: Apache-2.0 +# Copyright 2024 Intel Corporation +name: GitHub release + +on: + push: + branches: + - main + tags: + - v* + +jobs: + # CAUTION: Other actions depend on this name "tag-github" + tag-github: + runs-on: ubuntu-latest + if: github.repository_owner == 'omec-project' + outputs: + changed: ${{ steps.version-change.outputs.changed }} + version: ${{ steps.version-change.outputs.version }} + release_branch: ${{ steps.version-change.outputs.release_branch }} + version_branch: ${{ steps.version-change.outputs.version_branch }} + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Get changes + id: version-file + run: | + if git diff --name-only ${{ github.event.before }} ${{ github.event.after }} | grep VERSION; then + echo "changed=true" >> $GITHUB_OUTPUT + version_before=$(git show ${{ github.event.before }}:VERSION) + echo "version_before=$version_before" >> $GITHUB_OUTPUT + else + echo "VERSION file was not changed" + fi + + - name: Validate change in version file + id: version-change + if: steps.version-file.outputs.changed == 'true' + run: | + version=$(cat VERSION) + version_before_full=${{ steps.version-file.outputs.version_before }} + version_before=${version_before_full::-4} + echo "version=$version" + echo "version_before=$version_before" + validate="^[0-9]+\.[0-9]+\.[0-9]+$" + if [[ $version =~ $validate ]]; then + echo "changed=true" >> $GITHUB_OUTPUT + echo "version=$version" >> $GITHUB_OUTPUT + else + echo "Version change not for release" + fi + if [[ $version_before =~ $validate ]]; then + IFS='.' read -r major minor patch <<< "$version" + IFS='.' read -r major_b minor_b patch_b <<< "$version_before" + if [[ "$major" -ne "$major_b" ]] || [[ "$minor" -ne "$minor_b" ]]; then + version_branch="$major_b.$minor_b" + echo "release_branch=true" >> $GITHUB_OUTPUT + echo "version_branch=$version_branch" >> $GITHUB_OUTPUT + fi + else + echo "Version change not for branch release" + fi + + - name: Create release using REST API + if: steps.version-change.outputs.changed == 'true' + run: | + curl -L \ + -X POST \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer ${{ secrets.GH_OMEC_PAT }}" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + https://api.github.com/repos/${{ github.repository }}/releases \ + -d '{ + "tag_name": "v${{ steps.version-change.outputs.version }}", + "target_commitish": "${{ github.event.repository.default_branch }}", + "name": "v${{ steps.version-change.outputs.version }}", + "draft": false, + "prerelease": false, + "generate_release_notes": true + }' + + update-version: + runs-on: ubuntu-latest + needs: tag-github + if: needs.tag-github.outputs.changed == 'true' + steps: + - uses: actions/checkout@v4 + + - name: Increment version + run: | + version=${{ needs.tag-github.outputs.version }} + IFS='.' read -r major minor patch <<< "$version" + patch_update=$((patch+1)) + NEW_VERSION="$major.$minor.$patch_update-dev" + echo $NEW_VERSION > VERSION + echo "Updated version: $NEW_VERSION" + + - name: Create Pull Request + uses: peter-evans/create-pull-request@v7 + with: + token: ${{ secrets.GH_OMEC_PAT }} + commit-message: Update version + committer: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> + author: ${{ github.actor }} <${{ github.actor_id }}+${{ github.actor }}@users.noreply.github.com> + signoff: true + branch: version-update + delete-branch: true + title: Update version + body: | + Update VERSION file + add-paths: | + VERSION + + branch-release: + runs-on: ubuntu-latest + needs: tag-github + if: (needs.tag-github.outputs.changed == 'true') && (needs.tag-github.outputs.release_branch == 'true') + env: + GITHUB_TOKEN: ${{ secrets.GH_OMEC_PAT }} + steps: + - uses: actions/checkout@v4 + + - uses: peterjgrainger/action-create-branch@v3.0.0 + with: + branch: "rel-${{ needs.tag-github.outputs.version_branch }}" + sha: '${{ github.event.pull_request.head.sha }}' diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 0000000..e2d1964 --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,25 @@ +# SPDX-License-Identifier: Apache-2.0 +# Copyright 2024 Intel Corporation +name: Stale issue/pr + +on: + schedule: + - cron: "0 0 * * *" + +env: + DAYS_BEFORE_STALE: 120 + DAYS_BEFORE_CLOSE: 15 + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v9 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-message: 'This issue has been stale for ${{ env.DAYS_BEFORE_STALE }} days and will be closed in ${{ env.DAYS_BEFORE_CLOSE }} days. Comment to keep it open.' + stale-pr-message: 'This pull request has been stale for ${{ env.DAYS_BEFORE_STALE }} days and will be closed in ${{ env.DAYS_BEFORE_CLOSE }} days. Comment to keep it open.' + stale-issue-label: 'stale/issue' + stale-pr-label: 'stale/pr' + days-before-stale: ${{ env.DAYS_BEFORE_STALE }} + days-before-close: ${{ env.DAYS_BEFORE_CLOSE }} diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..8869ce2 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +1.1.1-dev diff --git a/VERSION.license b/VERSION.license new file mode 100644 index 0000000..597ad64 --- /dev/null +++ b/VERSION.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2024 Intel Corporation + +SPDX-License-Identifier: Apache-2.0