From c10e778a7fd5162dbf6665226aafa0328ed92f27 Mon Sep 17 00:00:00 2001 From: Ruslan Iushchenko Date: Thu, 25 Jan 2024 13:35:53 +0100 Subject: [PATCH] Add Python release. --- .github/workflows/release.yml | 141 ++++++++++++++++++++++++++++++---- 1 file changed, 126 insertions(+), 15 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 122e39eeb..4a2cf5f2d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -4,14 +4,109 @@ on: workflow_dispatch: # temporary - #pull_request: - # branches: [ main ] + pull_request: + branches: [ main ] + +defaults: + run: + shell: bash jobs: + test-python: + strategy: + matrix: + python-version: [ "3.10" ] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + ref: main + - uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: setup poetry + uses: abatilo/actions-poetry@v2.1.6 + with: + poetry-version: 1.4.2 + - name: install dependencies + working-directory: "./pramen-py" + run: make --silent install + - name: test + working-directory: "./pramen-py" + env: + ENV: ci + run: make --silent test + release-oython: + needs: [ "test-python" ] + runs-on: ubuntu-latest + name: Release the Python Artifact + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + ref: main + - name: Prepare the release branch + id: release_branch1 + working-directory: ./pramen + run: | + VERSION=$(grep "ThisBuild / version" version.sbt | cut -d\" -f2 | sed 's/-SNAPSHOT//') + echo "VERSION=$VERSION" >> $GITHUB_OUTPUT + git config --global user.email "absa_ci_cd_bot@absa.africa" + git config --global user.name "CI/CD bot" + git checkout -b release/$VERSION + git push --set-upstream origin release/$VERSION + - name: Update version number + id: release_branch + working-directory: ./pramen-py + env: + VERSION: ${{ steps.release_branch1.outputs.VERSION }} + run: | + PY_VERSION=$(grep -m 1 ^version pyproject.toml | tr -s ' ' | tr -d '"' | tr -d "'" | cut -d' ' -f3) + if [[ "$PY_VERSION" != "$VERSION" ]]; then + sed -i "s/version = \"$PY_VERSION\"/version = \"$VERSION\"/g" pyproject.toml + git add pyproject.toml + git commit -m "Update version number to $VERSION" + git push + cat pyproject.toml + fi + - name: import absa oss ci/cd bot key + run: | + sudo sh -c "echo 'deb https://gitsecret.jfrog.io/artifactory/git-secret-deb git-secret main' >> /etc/apt/sources.list" + wget -qO - 'https://gitsecret.jfrog.io/artifactory/api/gpg/key/public' | sudo apt-key add - + sudo apt install -y --no-install-recommends \ + git-secret + echo "${{ secrets.ABSA_OSS_CI_CD_BOT_GPG_KEY }}" | tr ',' '\n' > ./private_key.gpg + gpg --batch --yes --pinentry-mode loopback --import private_key.gpg + rm private_key.gpg + - name: reveal secrets + working-directory: "." + run: | + git config --global --add safe.directory /__w/pramen/pramen + git init + git add . + git secret reveal + - name: install project dependencies + run: | + sudo apt install -y --no-install-recommends \ + libssl-dev \ + make + - uses: actions/setup-python@v4 + with: + python-version: "3.10" + - uses: abatilo/actions-poetry@v2.1.6 + with: + poetry-version: 1.4.2 + - name: Install dependencies + run: poetry install --no-interaction --no-root + - name: build and publish the wheel to jfrog + env: + ENV: pypi + run: make --silent publish + release-sbt: + needs: [ "release-oython" ] runs-on: ubuntu-latest name: Release Scala Artifacts - steps: - name: Checkout code uses: actions/checkout@v4 @@ -24,38 +119,54 @@ jobs: java-version: "adopt@1.8" - name: Import GPG Key - shell: bash run: | echo "${{ secrets.ABSA_OSS_CI_CD_BOT_GPG_KEY }}" > gpg-secret-key.asc gpg --import --batch gpg-secret-key.asc && rm -rf gpg-secret-key.asc mkdir -p ~/.gnupg - git config --global user.email "absa_ci_cd_bot@absa.africa" - git config --global user.name "CI/CD bot" - name: Setup SonaType config - shell: bash run: | mkdir -p ~/.sbt/1.0 echo "${{ secrets.SONATYPE_CONFIG }}" | base64 --decode > ~/.sbt/1.0/sonatype.sbt - - name: Prepare the release branch - id: release_branch - shell: bash + - name: Checkout the release branch working-directory: ./pramen run: | VERSION=$(grep "ThisBuild / version" version.sbt | cut -d\" -f2 | sed 's/-SNAPSHOT//') echo "VERSION=$VERSION" >> $GITHUB_OUTPUT - git checkout -b release/$VERSION - git push --set-upstream origin release/$VERSION + git config --global user.email "absa_ci_cd_bot@absa.africa" + git config --global user.name "CI/CD bot" + git fetch origin release/$VERSION + git checkout release/$VERSION - name: Run the release plugin - shell: bash working-directory: ./pramen run: sbt releaseNow + create-pr: + needs: [ "release-sbt" ] + runs-on: ubuntu-latest + name: Create Pull Request + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + ref: main + + - name: Checkout the release branch + id: release_branch3 + working-directory: ./pramen + run: | + VERSION=$(grep "ThisBuild / version" version.sbt | cut -d\" -f2 | sed 's/-SNAPSHOT//') + echo "VERSION=$VERSION" >> $GITHUB_OUTPUT + git config --global user.email "absa_ci_cd_bot@absa.africa" + git config --global user.name "CI/CD bot" + git fetch origin release/$VERSION + git checkout release/$VERSION + - name: Create Pull Request - shell: bash run: gh pr create -B main -H "release/$VERSION" --title "Release Pramen v$VERSION" --body 'Created by Github action' env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - VERSION: ${{ steps.release_branch.outputs.VERSION }} + VERSION: ${{ steps.release_branch3.outputs.VERSION }}