From 38e83de1feb728296851ded022d8c5dc56b5c4e7 Mon Sep 17 00:00:00 2001 From: Lukas Burkhalter Date: Thu, 27 Jun 2024 09:54:46 +0200 Subject: [PATCH] ci: Update CI to be on par with v3 --- .github/actions/build-gosop/action.yml | 8 +++- .github/test-suite/build_gosop.sh | 6 ++- .github/test-suite/config.json.template | 8 +--- .github/test-suite/determine_gosop_branch.sh | 7 +++ .github/test-suite/prepare_config.sh | 7 ++- .github/workflows/android.yml | 4 +- .github/workflows/go.yml | 6 +-- .github/workflows/ios.yml | 9 ++-- .github/workflows/sop-test-suite.yml | 46 ++++++++++---------- 9 files changed, 54 insertions(+), 47 deletions(-) create mode 100755 .github/test-suite/determine_gosop_branch.sh diff --git a/.github/actions/build-gosop/action.yml b/.github/actions/build-gosop/action.yml index 8c890844..a754b676 100644 --- a/.github/actions/build-gosop/action.yml +++ b/.github/actions/build-gosop/action.yml @@ -2,7 +2,6 @@ name: 'build-gosop' description: 'Build gosop from the current branch' inputs: - gopenpgp-ref: description: 'gopenpgp branch tag or commit to build from' required: true @@ -21,6 +20,12 @@ runs: with: ref: ${{ inputs.gopenpgp-ref }} path: gopenpgp + - name: Set env + run: echo "GOSOP_BRANCH_REF=$(./.github/test-suite/determine_gosop_branch.sh)" >> $GITHUB_ENV + shell: bash + - name: Print gosop branch + run: echo ${{ env.GOSOP_BRANCH_REF}} + shell: bash # Build gosop - name: Set up latest golang uses: actions/setup-go@v3 @@ -30,6 +35,7 @@ runs: uses: actions/checkout@v3 with: repository: ProtonMail/gosop + ref: ${{ env.GOSOP_BRANCH_REF}} path: gosop - name: Cache go modules uses: actions/cache@v3 diff --git a/.github/test-suite/build_gosop.sh b/.github/test-suite/build_gosop.sh index e19623e2..dc5298a6 100755 --- a/.github/test-suite/build_gosop.sh +++ b/.github/test-suite/build_gosop.sh @@ -1,4 +1,6 @@ +VERSION=$(awk '/^module github.com\/ProtonMail\/gopenpgp\/v[0-9]+/ {print $NF}' gopenpgp/go.mod | awk -F'v' '{print $2}') + cd gosop -echo "replace github.com/ProtonMail/gopenpgp/v2 => ../gopenpgp" >> go.mod -go get github.com/ProtonMail/gopenpgp/v2/crypto +echo "replace github.com/ProtonMail/gopenpgp/v${VERSION} => ../gopenpgp" >> go.mod +go get github.com/ProtonMail/gopenpgp/v${VERSION}/crypto go build . diff --git a/.github/test-suite/config.json.template b/.github/test-suite/config.json.template index 2e491979..4d67575a 100644 --- a/.github/test-suite/config.json.template +++ b/.github/test-suite/config.json.template @@ -5,8 +5,8 @@ "path": "__GOSOP_BRANCH__" }, { - "id": "gosop-main", - "path": "__GOSOP_MAIN__" + "id": "gosop-target", + "path": "__GOSOP_TARGET__" }, { "path": "__SQOP__" @@ -17,10 +17,6 @@ { "path": "__SOP_OPENPGPJS__" }, - { - "id": "gosop-v2", - "path": "__GOSOP_V2__" - }, { "path": "__RNP_SOP__" } diff --git a/.github/test-suite/determine_gosop_branch.sh b/.github/test-suite/determine_gosop_branch.sh new file mode 100755 index 00000000..d3525783 --- /dev/null +++ b/.github/test-suite/determine_gosop_branch.sh @@ -0,0 +1,7 @@ +VERSION=$(awk '/^module github.com\/ProtonMail\/gopenpgp\/v[0-9]+/ {print $NF}' gopenpgp/go.mod | awk -F'v' '{print $2}') + +if [ "$VERSION" -eq 3 ]; then + echo "gosop-gopenpgp-v3" +else + echo "main" +fi diff --git a/.github/test-suite/prepare_config.sh b/.github/test-suite/prepare_config.sh index ca3feefc..e18d8031 100755 --- a/.github/test-suite/prepare_config.sh +++ b/.github/test-suite/prepare_config.sh @@ -1,13 +1,12 @@ CONFIG_TEMPLATE=$1 CONFIG_OUTPUT=$2 GOSOP_BRANCH=$3 -GOSOP_MAIN=$4 +GOSOP_TARGET=$4 cat $CONFIG_TEMPLATE \ | sed "s@__GOSOP_BRANCH__@${GOSOP_BRANCH}@g" \ - | sed "s@__GOSOP_MAIN__@${GOSOP_MAIN}@g" \ + | sed "s@__GOSOP_TARGET__@${GOSOP_TARGET}@g" \ | sed "s@__SQOP__@${SQOP}@g" \ | sed "s@__GPGME_SOP__@${GPGME_SOP}@g" \ - | sed "s@__SOP_OPENPGPJS__@${SOP_OPENPGPJS}@g" \ - | sed "s@__GOSOP_V2__@${GOSOP_DIR_V2}/gosop@g" \ + | sed "s@__SOP_OPENPGPJS__@${SOP_OPENPGPJS_V2}@g" \ | sed "s@__RNP_SOP__@${RNP_SOP}@g" \ > $CONFIG_OUTPUT \ No newline at end of file diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 5cf18b71..e98a430c 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -4,12 +4,12 @@ on: push: branches: [ main ] pull_request: - branches: [ main ] + branches: [ main, v2 ] jobs: build: name: Build library for Android with gomobile - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - name: Set up JDK 1.8 diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 8f945325..303b8d24 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -4,7 +4,7 @@ on: push: branches: [ main ] pull_request: - branches: [ main ] + branches: [ main, v2 ] jobs: test: @@ -36,7 +36,7 @@ jobs: - name: Test run: go test -v -race ./... - + lint: name: Lint runs-on: ubuntu-latest @@ -48,4 +48,4 @@ jobs: - name: golangci-lint uses: golangci/golangci-lint-action@v3 with: - version: v1.50.1 \ No newline at end of file + version: v1.50.1 diff --git a/.github/workflows/ios.yml b/.github/workflows/ios.yml index 2e2b6e97..9feeaa5c 100644 --- a/.github/workflows/ios.yml +++ b/.github/workflows/ios.yml @@ -4,7 +4,7 @@ on: push: branches: [ main ] pull_request: - branches: [ main ] + branches: [ main, v2 ] jobs: build: @@ -12,10 +12,10 @@ jobs: runs-on: macos-latest steps: - - name: Set up xcode 14.2 + - name: Set up xcode 14.3 uses: maxim-lobanov/setup-xcode@v1 with: - xcode-version: 14.2 + xcode-version: 14.3 id: xcode - name: Set up Go 1.x @@ -31,9 +31,6 @@ jobs: env: platform: ${{ 'iOS Simulator' }} run: | - for d in $ANDROID_NDK_HOME/../23*; do - ANDROID_NDK_HOME=$d - done ./build.sh apple find dist diff --git a/.github/workflows/sop-test-suite.yml b/.github/workflows/sop-test-suite.yml index ca761827..77e987be 100644 --- a/.github/workflows/sop-test-suite.yml +++ b/.github/workflows/sop-test-suite.yml @@ -2,7 +2,7 @@ name: SOP interoperability test suite on: pull_request: - branches: [ main ] + branches: [ main, v2 ] jobs: @@ -23,8 +23,8 @@ jobs: name: gosop-${{ github.sha }} path: ./gosop-${{ github.sha }} - build-gosop-main: - name: Build gosop from main + build-gosop-target: + name: Build gosop from target runs-on: ubuntu-latest steps: - name: Checkout @@ -32,40 +32,40 @@ jobs: - name: Build gosop from branch uses: ./.github/actions/build-gosop with: - gopenpgp-ref: main - binary-location: ./gosop-main + gopenpgp-ref: ${{ github.base_ref }} + binary-location: ./gosop-target # Upload as artifact - - name: Upload gosop-main artifact + - name: Upload gosop-target artifact uses: actions/upload-artifact@v3 with: - name: gosop-main - path: ./gosop-main + name: gosop-target + path: ./gosop-target test-suite: name: Run interoperability test suite runs-on: ubuntu-latest container: - image: ghcr.io/protonmail/openpgp-interop-test-docker:v1.1.4 + image: ghcr.io/protonmail/openpgp-interop-test-docker:v1.1.7 credentials: username: ${{ github.actor }} password: ${{ secrets.github_token }} needs: - build-gosop - - build-gosop-main + - build-gosop-target steps: - name: Checkout uses: actions/checkout@v3 - # Fetch gosop from main - - name: Download gosop-main + # Fetch gosop from target + - name: Download gosop-target uses: actions/download-artifact@v3 with: - name: gosop-main - # Test gosop-main - - name: Make gosop-main executable - run: chmod +x gosop-main - - name: Print gosop-main version - run: ./gosop-main version --extended + name: gosop-target + # Test gosop-target + - name: Make gosop-target executable + run: chmod +x gosop-target + - name: Print gosop-target version + run: ./gosop-target version --extended # Fetch gosop from branch - name: Download gosop-branch uses: actions/download-artifact@v3 @@ -80,7 +80,7 @@ jobs: run: ./gosop-branch version --extended # Run test suite - name: Prepare test configuration - run: ./.github/test-suite/prepare_config.sh $CONFIG_TEMPLATE $CONFIG_OUTPUT $GITHUB_WORKSPACE/gosop-branch $GITHUB_WORKSPACE/gosop-main + run: ./.github/test-suite/prepare_config.sh $CONFIG_TEMPLATE $CONFIG_OUTPUT $GITHUB_WORKSPACE/gosop-branch $GITHUB_WORKSPACE/gosop-target env: CONFIG_TEMPLATE: .github/test-suite/config.json.template CONFIG_OUTPUT: .github/test-suite/config.json @@ -104,8 +104,8 @@ jobs: name: test-suite-results.html path: .github/test-suite/test-suite-results.html - compare-with-main: - name: Compare with main + compare-with-target: + name: Compare with target runs-on: ubuntu-latest needs: test-suite steps: @@ -117,9 +117,9 @@ jobs: with: name: test-suite-results.json - name: Compare with baseline - uses: ProtonMail/openpgp-interop-test-analyzer@5d7f4b6868ebe3bfc909302828342c461f5f4940 + uses: ProtonMail/openpgp-interop-test-analyzer@v2.0.0 with: results: ${{ steps.download-test-results.outputs.download-path }}/test-suite-results.json output: baseline-comparison.json - baseline: gosop-main + baseline: gosop-target target: gosop-branch