-
Notifications
You must be signed in to change notification settings - Fork 35
141 lines (124 loc) · 5.35 KB
/
upload_artifacts_workflow.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
name: Upload-Artifacts
on:
push:
branches:
- main
- main-v[0-9].**
tags:
- v[0-9].**
pull_request:
types:
- opened
- reopened
- synchronize
- auto_merge_enabled
- edited
paths:
# Other than code-related changes, all changes related to the native-blockifier build-and-push
# process should trigger the build (e.g., changes to the Dockerfile, build scripts, etc.).
- '.github/workflows/blockifier_ci.yml'
- '.github/workflows/upload_artifacts_workflow.yml'
- 'build_native_in_docker.sh'
- 'Cargo.lock'
- 'Cargo.toml'
- 'crates/blockifier/**'
- 'crates/native_blockifier/**'
- 'scripts/build_native_blockifier.sh'
- 'scripts/dependencies.sh'
- 'scripts/install_build_tools.sh'
- 'scripts/sequencer-ci.Dockerfile'
# On PR events, cancel existing CI runs on this same PR for this workflow.
# Also, create different concurrency groups for different pushed commits, on push events.
concurrency:
group: >
${{ github.workflow }}-
${{ github.ref }}-
${{ github.event_name == 'pull_request' && 'PR' || github.sha }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
env:
RUSTFLAGS: "-D warnings -C link-arg=-fuse-ld=lld"
jobs:
native-blockifier-artifacts-push:
runs-on: starkware-ubuntu-latest-medium
steps:
- uses: actions/checkout@v4
# Commit hash on pull request event would be the head commit of the branch.
- name: Get commit hash prefix for PR update
if: ${{ github.event_name == 'pull_request' }}
env:
COMMIT_SHA: ${{ github.event.pull_request.head.sha }}
run: echo "SHORT_HASH=${COMMIT_SHA:0:7}" >> $GITHUB_ENV
# On push event (to main, for example) we should take the commit post-push.
- name: Get commit hash prefix for merge
if: ${{ github.event_name != 'pull_request' }}
env:
COMMIT_SHA: ${{ github.event.after }}
run: echo "SHORT_HASH=${COMMIT_SHA:0:7}" >> $GITHUB_ENV
# Set environment variables.
- name: Set environment variable
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
echo "WORKFLOW_LINK=$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" >> $GITHUB_ENV
# Comment with a link to the workflow (or update existing comment on rerun).
- name: Find Comment
if: github.event_name == 'pull_request'
uses: starkware-libs/find-comment@v3
id: find-comment
with:
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.pull_request.number }}
comment-author: 'github-actions[bot]'
body-includes: Artifacts upload workflows
- name: Create comment
# If the PR number is found and the comment is not found, create a new comment.
if: github.event_name == 'pull_request' && steps.find-comment.outputs.comment-id == ''
uses: starkware-libs/create-or-update-comment@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.pull_request.number }}
body: |
Artifacts upload workflows:
* [Started at ${{ github.event.pull_request.updated_at }}](${{ env.WORKFLOW_LINK }})
- name: Update comment
# If the PR number is found and the comment exists, update it.
if: github.event_name == 'pull_request' && steps.find-comment.outputs.comment-id != ''
uses: starkware-libs/create-or-update-comment@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
comment-id: ${{ steps.find-comment.outputs.comment-id }}
edit-mode: append
body: |
* [Started at ${{ github.event.pull_request.updated_at }}](${{ env.WORKFLOW_LINK }})
# Build artifact.
- name: Build native blockifier
run: |
./build_native_in_docker.sh scripts/build_native_blockifier.sh
# Rename is required; see https://pyo3.rs/v0.19.2/building_and_distribution#manual-builds.
- name: Rename shared object
run: |
mv \
target/release/libnative_blockifier.so \
target/release/native_blockifier.pypy39-pp73-x86_64-linux-gnu.so
- name: Authenticate with GCS
uses: "google-github-actions/auth@v2"
with:
credentials_json: ${{ secrets.SA_NATIVE_BLOCKIFIER_ARTIFACTS_BUCKET_WRITER_ACCESS_KEY }}
- name: Upload native blockifier shared object to GCP
id: upload_nb_file
uses: "google-github-actions/upload-cloud-storage@v2"
with:
path: "target/release/native_blockifier.pypy39-pp73-x86_64-linux-gnu.so"
destination: "native_blockifier_artifacts/${{ env.SHORT_HASH }}/release/"
- name: Upload starknet-native-compile to GCP
id: upload_snc_file
uses: "google-github-actions/upload-cloud-storage@v2"
with:
path: "target/release/shared_executables/starknet-native-compile"
destination: "native_blockifier_artifacts/${{ env.SHORT_HASH }}/release/"
- name: Upload libcairo_native_runtime.a to GCP
id: upload_lnr_file
uses: "google-github-actions/upload-cloud-storage@v2"
with:
path: "crates/blockifier/cairo_native/target/release/libcairo_native_runtime.a"
destination: "native_blockifier_artifacts/${{ env.SHORT_HASH }}/release/"