mirror of
https://github.com/redhat-developer/odo.git
synced 2025-10-19 03:06:19 +03:00
Speed-up nightly builds workflow by running independent jobs for each platform target
This commit is contained in:
104
.github/workflows/nightly-build.yaml
vendored
104
.github/workflows/nightly-build.yaml
vendored
@@ -9,27 +9,18 @@ on:
|
||||
|
||||
concurrency: ${{ github.workflow }}
|
||||
|
||||
env:
|
||||
IBM_CLOUD_API_KEY: ${{ secrets.IBM_CLOUD_API_KEY_NIGHTLY_BUILDS }}
|
||||
IBM_CLOUD_RESOURCE_GROUP: ${{ secrets.IBM_CLOUD_RESOURCE_GROUP }}
|
||||
IBM_CLOUD_REGION: eu-de
|
||||
IBM_CLOUD_OBJET_STORAGE_SERVICE_INSTANCE: ${{ secrets.IBM_CLOUD_OBJET_STORAGE_SERVICE_INSTANCE }}
|
||||
IBM_CLOUD_OBJECT_STORAGE_BUCKET: ${{ secrets.IBM_CLOUD_OBJECT_STORAGE_BUCKET }}
|
||||
|
||||
jobs:
|
||||
|
||||
nightly_build:
|
||||
check_bucket:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
env:
|
||||
IBM_CLOUD_API_KEY: ${{ secrets.IBM_CLOUD_API_KEY_NIGHTLY_BUILDS }}
|
||||
IBM_CLOUD_RESOURCE_GROUP: ${{ secrets.IBM_CLOUD_RESOURCE_GROUP }}
|
||||
IBM_CLOUD_REGION: eu-de
|
||||
IBM_CLOUD_OBJET_STORAGE_SERVICE_INSTANCE: ${{ secrets.IBM_CLOUD_OBJET_STORAGE_SERVICE_INSTANCE }}
|
||||
IBM_CLOUD_OBJECT_STORAGE_BUCKET: ${{ secrets.IBM_CLOUD_OBJECT_STORAGE_BUCKET }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version-file: 'go.mod'
|
||||
|
||||
- name: Install IBM Cloud CLI
|
||||
run: |
|
||||
curl -fsSL https://clis.cloud.ibm.com/install/linux | sh
|
||||
@@ -57,33 +48,86 @@ jobs:
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Cross-compile odo
|
||||
build_for_platform:
|
||||
runs-on: ubuntu-latest
|
||||
needs: check_bucket
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [linux, darwin, windows]
|
||||
arch: [amd64, arm64, ppc64le, s390x]
|
||||
exclude:
|
||||
- os: darwin
|
||||
arch: ppc64le
|
||||
- os: darwin
|
||||
arch: s390x
|
||||
- os: windows
|
||||
arch: arm64
|
||||
- os: windows
|
||||
arch: ppc64le
|
||||
- os: windows
|
||||
arch: s390x
|
||||
name: "${{ matrix.os }}-${{ matrix.arch }}"
|
||||
env:
|
||||
GOOS: ${{ matrix.os }}
|
||||
GOARCH: ${{ matrix.arch }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version-file: 'go.mod'
|
||||
|
||||
- name: Cross-compile
|
||||
run: |
|
||||
export GITCOMMIT="$(git describe --no-match --always --abbrev=9 --dirty --broken)-nightly"
|
||||
make cross
|
||||
binName = "odo-$GOOS-$GOARCH"
|
||||
if [ $GOOS == "windows" ]; then
|
||||
binName = "${binName}.exe"
|
||||
fi
|
||||
go build -o "$binName" ./cmd/odo/
|
||||
|
||||
- name: Rename binaries with OS and Arch
|
||||
- name: Generate archive
|
||||
run: |
|
||||
for f in `find ./dist/bin -type f -name 'odo*'`; do
|
||||
bin=$(realpath "$f")
|
||||
targetName=$(basename "$f" .exe)-$(basename $(dirname "$f"))
|
||||
if [[ "${targetName}" == "odo-windows-"* ]]; then
|
||||
targetName="${targetName}.exe"
|
||||
fi
|
||||
mv "${bin}" $(dirname "$f")/${targetName}
|
||||
done
|
||||
if [ $GOOS == "windows" ]; then
|
||||
zip -9 -y -r -q "odo-${GOOS}-${GOARCH}.zip" "odo-${GOOS}-${GOARCH}.exe"
|
||||
else
|
||||
tar -czvf "odo-${GOOS}-${GOARCH}.tar.gz" "odo-${GOOS}-${GOARCH}"
|
||||
fi
|
||||
|
||||
- name: Generate SHA-256 checksums
|
||||
run: |
|
||||
for f in `find ./dist/bin -type f -name 'odo*'`; do
|
||||
for f in `find . -type f -name 'odo-${{ matrix.os }}-${{ matrix.arch }}*'`; do
|
||||
bin=$(realpath "$f")
|
||||
sha256sum -b "${bin}" | awk '{print $1}' > "${bin}".sha256
|
||||
done
|
||||
|
||||
- name: Install IBM Cloud CLI
|
||||
run: |
|
||||
curl -fsSL https://clis.cloud.ibm.com/install/linux | sh
|
||||
ibmcloud --version
|
||||
ibmcloud config --check-version=false
|
||||
ibmcloud plugin install -f cloud-object-storage
|
||||
|
||||
- name: Authenticate with IBM Cloud CLI
|
||||
run: |
|
||||
ibmcloud login --apikey "${IBM_CLOUD_API_KEY}" -r "${IBM_CLOUD_REGION}" -g "${IBM_CLOUD_RESOURCE_GROUP}" --quiet
|
||||
|
||||
- name: Set CRN
|
||||
run: |
|
||||
CRN=$(ibmcloud resource service-instance "${IBM_CLOUD_OBJET_STORAGE_SERVICE_INSTANCE}" --output json | jq -r '.[0].guid | values')
|
||||
if [[ -z "$CRN" ]]; then
|
||||
echo "Unable to determine CRN for service instance ${IBM_CLOUD_OBJET_STORAGE_SERVICE_INSTANCE}"
|
||||
exit 1
|
||||
fi
|
||||
ibmcloud cos config crn --crn "${CRN}"
|
||||
|
||||
- name: Upload binaries
|
||||
run: |
|
||||
baseUrl="https://s3.${IBM_CLOUD_REGION}.cloud-object-storage.appdomain.cloud/${IBM_CLOUD_OBJECT_STORAGE_BUCKET}"
|
||||
for f in `find ./dist/bin -type f -name 'odo*'`; do
|
||||
for f in `find . -type f -name 'odo-${{ matrix.os }}-${{ matrix.arch }}*'`; do
|
||||
bin=$(realpath "$f")
|
||||
ibmcloud cos upload --bucket "${IBM_CLOUD_OBJECT_STORAGE_BUCKET}" --key $(basename "$f") --file "${bin}"
|
||||
echo "Binary $bin uploaded successfully and available at: ${baseUrl}/$(basename "$f")"
|
||||
|
||||
Reference in New Issue
Block a user