From ae6a15b391be2e3cdbc4c60ee2fe302598852dd5 Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Mon, 10 Oct 2022 14:49:36 +0200 Subject: [PATCH 1/4] Check POM version and linux metainfo.xml file during release steps --- .../workflows/release-check-precondition.yml | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 .github/workflows/release-check-precondition.yml diff --git a/.github/workflows/release-check-precondition.yml b/.github/workflows/release-check-precondition.yml new file mode 100644 index 000000000..ae598a3f4 --- /dev/null +++ b/.github/workflows/release-check-precondition.yml @@ -0,0 +1,39 @@ +name: Release check precondition + +on: + push: + branches: + - 'hotfix/**' + - 'release/**' + tags: + - '*' + +jobs: + test: + name: Validate pushed commit to release/hotfix or pushed tag + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Validate POM version + run: | + if [[ $GITHUB_REF =~ refs/heads/(hotfix|release)/[0-9]+\.[0-9]+\.[0-9]+.* ]]; then + SEM_VER_STR=${GITHUB_REF##*/} + elif [[ $GITHUB_REF =~ refs/tags/[0-9]+\.[0-9]+\.[0-9]+.* ]]; then + SEM_VER_STR=${GITHUB_REF##*/} + else + echo "Failed to parse version" + exit 1 + fi + + if ![[ SEM_VER_STR = `mvn help:evaluate -Dexpression=project.version -q -DforceStdout` ]]; then + echo "Version not set in POM" + exit 1 + fi + - name: Validate release in org.cryptomator.Cryptomator.metainfo.xml file + run: | + if ![[ grep "" dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml ]]; then + echo "Release not set in dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml" + exit 1 + fi From 34d6e8c4198ec54522c5c0e9241c104ddb1545c5 Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Mon, 10 Oct 2022 15:28:16 +0200 Subject: [PATCH 2/4] Validate POM version and linux metainfo.xml file during build --- .github/workflows/build.yml | 23 +++++++++++ .../workflows/release-check-precondition.yml | 39 ------------------- 2 files changed, 23 insertions(+), 39 deletions(-) delete mode 100644 .github/workflows/release-check-precondition.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5270365b3..83df47560 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -43,6 +43,29 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + - name: Validate POM version + if: startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/hotfix/') || startsWith(github.ref, 'refs/heads/release/') + run: | + if [[ $GITHUB_REF =~ refs/heads/(hotfix|release)/[0-9]+\.[0-9]+\.[0-9]+.* ]]; then + SEM_VER_STR=${GITHUB_REF##*/} + elif [[ $GITHUB_REF =~ refs/tags/[0-9]+\.[0-9]+\.[0-9]+.* ]]; then + SEM_VER_STR=${GITHUB_REF##*/} + else + echo "Failed to parse version" + exit 1 + fi + + if ![[ SEM_VER_STR = `mvn help:evaluate -Dexpression=project.version -q -DforceStdout` ]]; then + echo "Version not set in POM" + exit 1 + fi + - name: Validate release in org.cryptomator.Cryptomator.metainfo.xml file + if: startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/hotfix/') || startsWith(github.ref, 'refs/heads/release/') + run: | + if ![[ grep "" dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml ]]; then + echo "Release not set in dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml" + exit 1 + fi - name: Sign source tarball with key 615D449FE6E6A235 if: startsWith(github.ref, 'refs/tags/') run: | diff --git a/.github/workflows/release-check-precondition.yml b/.github/workflows/release-check-precondition.yml deleted file mode 100644 index ae598a3f4..000000000 --- a/.github/workflows/release-check-precondition.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: Release check precondition - -on: - push: - branches: - - 'hotfix/**' - - 'release/**' - tags: - - '*' - -jobs: - test: - name: Validate pushed commit to release/hotfix or pushed tag - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - name: Validate POM version - run: | - if [[ $GITHUB_REF =~ refs/heads/(hotfix|release)/[0-9]+\.[0-9]+\.[0-9]+.* ]]; then - SEM_VER_STR=${GITHUB_REF##*/} - elif [[ $GITHUB_REF =~ refs/tags/[0-9]+\.[0-9]+\.[0-9]+.* ]]; then - SEM_VER_STR=${GITHUB_REF##*/} - else - echo "Failed to parse version" - exit 1 - fi - - if ![[ SEM_VER_STR = `mvn help:evaluate -Dexpression=project.version -q -DforceStdout` ]]; then - echo "Version not set in POM" - exit 1 - fi - - name: Validate release in org.cryptomator.Cryptomator.metainfo.xml file - run: | - if ![[ grep "" dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml ]]; then - echo "Release not set in dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml" - exit 1 - fi From 45c2dd0358a934b2e14f5539f19dd26b953f92c7 Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Tue, 11 Oct 2022 12:42:59 +0200 Subject: [PATCH 3/4] Validate release check precondition in separate job --- .github/workflows/build.yml | 58 +++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 25 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 83df47560..c0376341e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,11 +12,42 @@ defaults: run: shell: bash -jobs: +jobs: + release-check-precondition: + name: Validate pushed commit to release/hotfix branch or pushed tag + runs-on: ubuntu-latest + if: startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/hotfix/') || startsWith(github.ref, 'refs/heads/release/') + steps: + - uses: actions/checkout@v2 + - id: validate-pom-version + name: Validate POM version + run: | + if [[ $GITHUB_REF =~ refs/heads/(hotfix|release)/[0-9]+\.[0-9]+\.[0-9]+.* ]]; then + SEM_VER_STR=${GITHUB_REF##*/} + elif [[ $GITHUB_REF =~ refs/tags/[0-9]+\.[0-9]+\.[0-9]+.* ]]; then + SEM_VER_STR=${GITHUB_REF##*/} + else + echo "Failed to parse version" + exit 1 + fi + + if [[ ${SEM_VER_STR} == `mvn help:evaluate -Dexpression=project.version -q -DforceStdout` ]]; then + echo "::set-output name=semVerStr::${SEM_VER_STR}" + else + echo "Version not set in POM" + exit 1 + fi + - name: Validate release in org.cryptomator.Cryptomator.metainfo.xml file + run: | + if ! grep -q "" dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml; then + echo "Release not set in dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml" + exit 1 + fi test: name: Compile and Test + needs: release-check-precondition runs-on: ubuntu-latest - if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')" + if: "always() && (needs.release-check-precondition.result=='success' || needs.release-check-precondition.result=='skipped') && !contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')" steps: - uses: actions/checkout@v2 - uses: actions/setup-java@v2 @@ -43,29 +74,6 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - - name: Validate POM version - if: startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/hotfix/') || startsWith(github.ref, 'refs/heads/release/') - run: | - if [[ $GITHUB_REF =~ refs/heads/(hotfix|release)/[0-9]+\.[0-9]+\.[0-9]+.* ]]; then - SEM_VER_STR=${GITHUB_REF##*/} - elif [[ $GITHUB_REF =~ refs/tags/[0-9]+\.[0-9]+\.[0-9]+.* ]]; then - SEM_VER_STR=${GITHUB_REF##*/} - else - echo "Failed to parse version" - exit 1 - fi - - if ![[ SEM_VER_STR = `mvn help:evaluate -Dexpression=project.version -q -DforceStdout` ]]; then - echo "Version not set in POM" - exit 1 - fi - - name: Validate release in org.cryptomator.Cryptomator.metainfo.xml file - if: startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/hotfix/') || startsWith(github.ref, 'refs/heads/release/') - run: | - if ![[ grep "" dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml ]]; then - echo "Release not set in dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml" - exit 1 - fi - name: Sign source tarball with key 615D449FE6E6A235 if: startsWith(github.ref, 'refs/tags/') run: | From b10d892b12189f3f7533c85dc42186056a188e12 Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Tue, 11 Oct 2022 15:09:19 +0200 Subject: [PATCH 4/4] Skip release tests too when ci-skip provided in commit message --- .github/workflows/build.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c0376341e..b895f30ff 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,7 +16,8 @@ jobs: release-check-precondition: name: Validate pushed commit to release/hotfix branch or pushed tag runs-on: ubuntu-latest - if: startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/hotfix/') || startsWith(github.ref, 'refs/heads/release/') + if: "(startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/hotfix/') || startsWith(github.ref, 'refs/heads/release/')) && \ + !(contains(github.event.head_commit.message, '[ci skip]') || contains(github.event.head_commit.message, '[skip ci]'))" steps: - uses: actions/checkout@v2 - id: validate-pom-version @@ -47,7 +48,9 @@ jobs: name: Compile and Test needs: release-check-precondition runs-on: ubuntu-latest - if: "always() && (needs.release-check-precondition.result=='success' || needs.release-check-precondition.result=='skipped') && !contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')" + if: "always() && \ + (needs.release-check-precondition.result=='success' || needs.release-check-precondition.result=='skipped') && \ + !(contains(github.event.head_commit.message, '[ci skip]') || contains(github.event.head_commit.message, '[skip ci]'))" steps: - uses: actions/checkout@v2 - uses: actions/setup-java@v2