Skip to content

Commit 74e31ca

Browse files
committed
build binaries on bitrise
1 parent a51766a commit 74e31ca

1 file changed

Lines changed: 102 additions & 51 deletions

File tree

bitrise.yml

Lines changed: 102 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -3,68 +3,119 @@ format_version: '25'
33
default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git
44
project_type: other
55

6-
workflows:
7-
upload-release-assets:
6+
pipelines:
7+
release:
88
triggers:
99
tag:
10-
- name: '*'
10+
- name: 'v*.*.*-bitrise'
11+
stages:
12+
- build: {}
13+
- upload-and-deploy: {}
14+
15+
stages:
16+
build:
17+
workflows:
18+
- build-linux: {}
19+
- build-macos: {}
20+
upload-and-deploy:
21+
workflows:
22+
- upload-release-assets: {}
23+
24+
workflows:
25+
build-linux:
1126
steps:
27+
- git-clone@8: {}
1228
- script@1:
13-
title: Download GitHub release assets
29+
title: Build & Package runner (linux-x64)
1430
inputs:
1531
- content: |
1632
#!/usr/bin/env bash
1733
set -euo pipefail
18-
19-
echo "--- Fetching release for tag: ${BITRISE_GIT_TAG}"
20-
21-
RELEASE_JSON=$(curl -sf \
22-
-H "Accept: application/vnd.github+json" \
23-
"https://api.github.com/repos/bitrise-io/github-runner/releases/tags/${BITRISE_GIT_TAG}")
24-
25-
RELEASE_NAME=$(echo "${RELEASE_JSON}" | jq -r '.name')
26-
echo "Found release: ${RELEASE_NAME}"
27-
28-
ASSETS=$(echo "${RELEASE_JSON}" | jq -c '.assets[]')
29-
30-
if [ -z "${ASSETS}" ]; then
31-
echo "No assets found for release ${BITRISE_GIT_TAG}"
32-
exit 1
33-
fi
34-
35-
DOWNLOAD_DIR="${BITRISE_SOURCE_DIR}/release-assets"
36-
mkdir -p "${DOWNLOAD_DIR}"
37-
38-
echo "${ASSETS}" | while IFS= read -r asset; do
39-
NAME=$(echo "${asset}" | jq -r '.name')
40-
DOWNLOAD_URL=$(echo "${asset}" | jq -r '.url')
41-
42-
echo "Downloading: ${NAME}"
43-
curl -sfL \
44-
-H "Accept: application/octet-stream" \
45-
"${DOWNLOAD_URL}" \
46-
-o "${DOWNLOAD_DIR}/${NAME}"
47-
done
48-
49-
echo "Downloaded assets:"
50-
ls -lh "${DOWNLOAD_DIR}"
51-
52-
envman add --key RELEASE_ASSETS_DIR --value "${DOWNLOAD_DIR}"
53-
envman add --key RELEASE_TAG --value "${BITRISE_GIT_TAG%-bitrise}"
34+
cd "${BITRISE_SOURCE_DIR}/src"
35+
./dev.sh layout Release linux-x64
36+
./dev.sh package Release linux-x64
37+
38+
RUNNER_VERSION=$(cat runnerversion)
39+
PACKAGE_PATH="${BITRISE_SOURCE_DIR}/_package/actions-runner-linux-x64-${RUNNER_VERSION}.tar.gz"
40+
41+
echo "Built package: ${PACKAGE_PATH}"
42+
ls -lh "${PACKAGE_PATH}"
43+
44+
envman add --key LINUX_PACKAGE_PATH --value "${PACKAGE_PATH}"
45+
- deploy-to-bitrise-io@2:
46+
inputs:
47+
- pipeline_intermediate_files: "$LINUX_PACKAGE_PATH:BITRISE_LINUX_PACKAGE_PATH"
48+
meta:
49+
bitrise.io:
50+
stack: ubuntu-noble-24.04-bitrise-2025-base
51+
machine_type_id: g2.linux.medium
52+
53+
build-macos:
54+
steps:
55+
- git-clone@8: {}
56+
- script@1:
57+
title: Build & Package runner (osx-arm64)
58+
inputs:
59+
- content: |
60+
#!/usr/bin/env bash
61+
set -euo pipefail
62+
cd "${BITRISE_SOURCE_DIR}/src"
63+
./dev.sh layout Release osx-arm64
64+
./dev.sh package Release osx-arm64
65+
66+
RUNNER_VERSION=$(cat runnerversion)
67+
PACKAGE_PATH="${BITRISE_SOURCE_DIR}/_package/actions-runner-osx-arm64-${RUNNER_VERSION}.tar.gz"
68+
69+
echo "Built package: ${PACKAGE_PATH}"
70+
ls -lh "${PACKAGE_PATH}"
71+
72+
envman add --key MACOS_PACKAGE_PATH --value "${PACKAGE_PATH}"
73+
- deploy-to-bitrise-io@2:
74+
inputs:
75+
- pipeline_intermediate_files: "$MACOS_PACKAGE_PATH:BITRISE_MACOS_PACKAGE_PATH"
76+
meta:
77+
bitrise.io:
78+
stack: osx-xcode-16.2.x-edge
79+
machine_type_id: g2.mac.medium
80+
81+
upload-release-assets:
82+
steps:
83+
- pull-intermediate-files@1:
84+
inputs:
85+
- artifact_sources: ".*"
86+
- script@1:
87+
title: Prepare release assets
88+
inputs:
89+
- content: |
90+
#!/usr/bin/env bash
91+
set -euo pipefail
92+
93+
RELEASE_ASSETS_DIR="${BITRISE_SOURCE_DIR}/release-assets"
94+
mkdir -p "${RELEASE_ASSETS_DIR}"
95+
96+
cp "${BITRISE_LINUX_PACKAGE_PATH}" "${RELEASE_ASSETS_DIR}/"
97+
cp "${BITRISE_MACOS_PACKAGE_PATH}" "${RELEASE_ASSETS_DIR}/"
98+
99+
echo "Release assets:"
100+
ls -lh "${RELEASE_ASSETS_DIR}"
101+
102+
RELEASE_TAG="${BITRISE_GIT_TAG%-bitrise}"
103+
envman add --key RELEASE_ASSETS_DIR --value "${RELEASE_ASSETS_DIR}"
104+
envman add --key RELEASE_TAG --value "${RELEASE_TAG}"
54105
55106
- script@1:
56107
title: Upload assets to R2
57108
inputs:
58109
- content: |
59110
#!/usr/bin/env bash
60111
set -euo pipefail
61-
112+
62113
echo "--- Configuring AWS CLI for R2"
63-
114+
64115
export AWS_ACCESS_KEY_ID="${R2_ACCESS_KEY_ID}"
65116
export AWS_SECRET_ACCESS_KEY="${R2_SECRET_ACCESS_KEY}"
66117
export AWS_DEFAULT_REGION="auto"
67-
118+
68119
echo "--- Uploading assets to s3://${R2_BUCKET}/"
69120
70121
for file in "${RELEASE_ASSETS_DIR}"/*; do
@@ -84,19 +135,19 @@ workflows:
84135
- content: |
85136
#!/usr/bin/env bash
86137
set -euo pipefail
87-
138+
88139
echo "--- Authenticating with GCP"
89-
140+
90141
echo "${GCS_SERVICE_ACCOUNT_JSON}" | base64 -d > /tmp/gcs-key.json
91142
gcloud auth activate-service-account --key-file=/tmp/gcs-key.json
92-
143+
93144
echo "--- Uploading assets to gs://${GCS_BUCKET}/"
94145
95146
gsutil -m cp "${RELEASE_ASSETS_DIR}"/* "gs://${GCS_BUCKET}/"
96147
97148
echo "--- Upload complete. Verifying:"
98149
gsutil ls -l "gs://${GCS_BUCKET}/"
99-
150+
100151
rm -f /tmp/gcs-key.json
101152
102153
- script@1:
@@ -158,7 +209,7 @@ workflows:
158209
159210
rm -rf "${REPO_DIR}"
160211
161-
meta:
162-
bitrise.io:
163-
stack: ubuntu-noble-24.04-bitrise-2025-base
164-
machine_type_id: g2.linux.medium
212+
meta:
213+
bitrise.io:
214+
stack: ubuntu-noble-24.04-bitrise-2025-base
215+
machine_type_id: g2.linux.medium

0 commit comments

Comments
 (0)