Skip to content

chore(cicd): deploy releases from GHA #334

chore(cicd): deploy releases from GHA

chore(cicd): deploy releases from GHA #334

Workflow file for this run

name: CI build

Check failure on line 1 in .github/workflows/build.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/build.yml

Invalid workflow file

(Line: 173, Col: 9): Unrecognized named-value: 'env'. Located at position 1 within expression: env.DEPLOY == 'true'
on:
push:
branches:
- master
- staging
- r[0-9]+.*
pull_request:
branches:
- master
- r[0-9]+.*
types: [opened, reopened, synchronize, labeled, unlabeled]
env:
# STAGING_PROFILE_ID: 46f80d0729c92d
# DEPLOY_SNAPSHOT: ${{ github.event_name == 'push' && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/staging') }}
# DEPLOY_RELEASE: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/heads/r') }}
DEPLOY: ${{ github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/heads/r')) }}
jobs:
check-format:
if: github.event_name == 'pull_request'
runs-on: ubuntu-22.04
steps:
- name: Configure Java
uses: actions/setup-java@v5
with:
distribution: 'adopt'
java-version: '17'
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Build project
run: |
gcc --version
mvn -version
mvn clean install -Pjdk17 -B -U -e -Dlint.skip=true -Dmaven.test.skip=true
- name: Run format checks
run: |
mvn spotless:check -Pjdk17 -B -U -e
# prepare:
# runs-on: ubuntu-22.04
# outputs:
# repositoryUrl: ${{ steps.repository.outputs.repositoryUrl }}
# steps:
# - name: Create staging repository
# if: env.DEPLOY_RELEASE == 'true'
# id: staging
# run: |
# echo "Creating staging repository with profile $STAGING_PROFILE_ID"
# echo "<promoteRequest><data><description>Releasing TF Java - created by CI build</description></data></promoteRequest>" > request.xml
# curl -X POST -d @request.xml -s -o response.xml -u ${{ secrets.CI_DEPLOY_USERNAME }}:${{ secrets.CI_DEPLOY_PASSWORD }} -H "Content-Type:application/xml" \
# https://ossrh-staging-api.central.sonatype.com/service/local/staging/profiles/$STAGING_PROFILE_ID/start
# export STAGING_REPOSITORY_ID=`awk -F'[<>]' '/stagedRepositoryId/{print $3}' response.xml`
# echo "Staging repository created: $STAGING_REPOSITORY_ID"
# echo "::set-output name=stagingRepositoryId::$STAGING_REPOSITORY_ID"
# - name: Checkout repository
# uses: actions/checkout@v6
# - name: Extract distribution repository URL
# id: repository
# run: |
# if [[ "${{ env.DEPLOY_RELEASE }}" = "true" ]]; then
# export REPOSITORY_URL=`mvn exec:exec -q -N -Dexec.executable='echo' -Dexec.args="\\${project.distributionManagement.repository.url}" -DstagingRepositoryId=${{ steps.staging.outputs.stagingRepositoryId }}`
# else
# export REPOSITORY_URL=`mvn exec:exec -q -N -Dexec.executable='echo' -Dexec.args="\\${project.distributionManagement.snapshotRepository.url}"`
# fi
# echo "Repository URL: $REPOSITORY_URL"
# echo "::set-output name=repositoryUrl::$REPOSITORY_URL"
linux-arm64:
runs-on: ubuntu-2204-arm64-2c
# needs: prepare
strategy:
matrix:
ext: [""]
steps:
- name: Install environment
run: |
sudo apt update
sudo apt install -y curl wget unzip tar git gcc g++
- name: Configure Java
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: '17'
architecture: 'aarch64'
- name: Checkout repository
uses: actions/checkout@v6
- name: Build project
run: |
gcc --version
mvn -version
echo "<settings><servers><server><id>central</id><username>${{ secrets.CI_DEPLOY_USERNAME }}</username><password>${{ secrets.CI_DEPLOY_PASSWORD }}</password></server></servers></settings>" > $HOME/.m2/settings.xml
mvn clean install -pl '!tensorflow-framework' -B -U -e -Djavacpp.platform=${{ github.job }} -Djavacpp.platform.extension=${{ matrix.ext }}
- name: Build native artifact
# if: env.DEPLOY_RELEASE == 'true' || env.DEPLOY_SNAPSHOT == 'true'
run: mvn -f tensorflow-core/tensorflow-core-native/pom.xml package -B -e -Djavacpp.platform=${{ github.job }} -Djavacpp.platform.extension=${{ matrix.ext }}
- name: Upload native artifact
# if: env.DEPLOY_RELEASE == 'true' || env.DEPLOY_SNAPSHOT == 'true'
if: env.DEPLOY == 'true'
uses: actions/upload-artifact@v4
with:
name: native-artifact-${{ github.job }}${{ matrix.ext }}
path: tensorflow-core/tensorflow-core-native/target/tensorflow-core-native-*-${{ github.job }}*.jar
if-no-files-found: error
retention-days: 1
linux-x86_64:
runs-on: ubuntu-22.04
# needs: prepare
strategy:
matrix:
ext: ["", -gpu]
steps:
- name: Configure Java
uses: actions/setup-java@v5
with:
distribution: 'adopt'
java-version: '11'
- name: Checkout repository
uses: actions/checkout@v6
- name: Build project
run: |
gcc --version
mvn -version
echo "<settings><servers><server><id>central</id><username>${{ secrets.CI_DEPLOY_USERNAME }}</username><password>${{ secrets.CI_DEPLOY_PASSWORD }}</password></server></servers></settings>" > $HOME/.m2/settings.xml
mvn clean install -pl '!tensorflow-framework' -B -U -e -Djavacpp.platform=${{ github.job }} -Djavacpp.platform.extension=${{ matrix.ext }}
- name: Build native artifact
# if: env.DEPLOY_RELEASE == 'true' || env.DEPLOY_SNAPSHOT == 'true'
run: mvn -f tensorflow-core/tensorflow-core-native/pom.xml package -B -e -Djavacpp.platform=${{ github.job }} -Djavacpp.platform.extension=${{ matrix.ext }}
- name: Upload native artifact
# if: env.DEPLOY_RELEASE == 'true' || env.DEPLOY_SNAPSHOT == 'true'
if: env.DEPLOY == 'true'
uses: actions/upload-artifact@v4
with:
name: native-artifact-${{ github.job }}${{ matrix.ext }}
path: tensorflow-core/tensorflow-core-native/target/tensorflow-core-native-*-${{ github.job }}*.jar
if-no-files-found: error
retention-days: 1
macosx-arm64:
runs-on: macos-14
# needs: prepare
strategy:
matrix:
ext: [""]
steps:
- name: Configure Java
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: '17'
architecture: 'arm64'
- name: Checkout repository
uses: actions/checkout@v6
- name: Build project
run: |
clang --version
mvn -version
echo "<settings><servers><server><id>central</id><username>${{ secrets.CI_DEPLOY_USERNAME }}</username><password>${{ secrets.CI_DEPLOY_PASSWORD }}</password></server></servers></settings>" > $HOME/.m2/settings.xml
mvn clean install -pl '!tensorflow-framework' -B -U -e -Djavacpp.platform=${{ github.job }} -Djavacpp.platform.extension=${{ matrix.ext }}
- name: Build native artifact
# if: env.DEPLOY_RELEASE == 'true' || env.DEPLOY_SNAPSHOT == 'true'
run: mvn -f tensorflow-core/tensorflow-core-native/pom.xml package -B -e -Djavacpp.platform=${{ github.job }} -Djavacpp.platform.extension=${{ matrix.ext }}
- name: Upload native artifact
# if: env.DEPLOY_RELEASE == 'true' || env.DEPLOY_SNAPSHOT == 'true'
if: env.DEPLOY == 'true'
uses: actions/upload-artifact@v4
with:
name: native-artifact-${{ github.job }}${{ matrix.ext }}
path: tensorflow-core/tensorflow-core-native/target/tensorflow-core-native-*-${{ github.job }}*.jar
if-no-files-found: error
retention-days: 1
deploy:
# if: ${{ github.event_name == 'push' && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/staging') }} # DEPLOY_SNAPSHOT (releases should be signed and deployed manually from local machine)
if: env.DEPLOY == 'true'
needs: [linux-x86_64, macosx-arm64, linux-arm64]
runs-on: ubuntu-22.04
steps:
- name: Configure Java
uses: actions/setup-java@v5
with:
distribution: 'adopt'
java-version: '11'
- name: Checkout repository
uses: actions/checkout@v6
- name: Download native artifacts
uses: actions/download-artifact@v8
with:
pattern: native-artifact-*
path: tensorflow-core/tensorflow-core-native/target
merge-multiple: true
- name: Build project
run: |
java -version
mvn -version
mvn clean install -B -U -e -Pdeploying
- name: Deploy snapshot artifacts
run: |
echo "<settings><servers><server><id>central</id><username>${{ secrets.CI_DEPLOY_USERNAME }}</username><password>${{ secrets.CI_DEPLOY_PASSWORD }}</password></server></servers></settings>" > $HOME/.m2/settings.xml
mvn deploy -Pdeploying -B -e -Dmaven.test.skip=true