-
Notifications
You must be signed in to change notification settings - Fork 0
138 lines (136 loc) · 5.16 KB
/
macos-builds-on-all.yaml
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
# This is ci/actions-templates/macos-builds-template.yaml
# Do not edit this file in .github/workflows
name: macOS
on:
pull_request:
branches:
- "*"
push:
branches:
- master
- stable
- renovate/*
schedule:
- cron: "30 0 * * 1" # Every Monday at half past midnight UTC
jobs:
build:
name: Build
runs-on: macos-latest
strategy:
matrix:
target:
- x86_64-apple-darwin
- aarch64-apple-darwin
mode:
- dev
- release
include:
- target: x86_64-apple-darwin
run_tests: YES
steps:
- uses: actions/checkout@v3
with:
# v2 defaults to a shallow checkout, but we need at least to the previous tag
fetch-depth: 0
- name: Acquire tags for the repo
run: |
git fetch --no-tags --prune --depth=1 origin +refs/tags/*:refs/tags/*
- name: Display the current git status
run: |
git status
git describe
- name: Prep cargo dirs
run: |
mkdir -p ~/.cargo/{registry,git}
- name: Set environment variables appropriately for the build
run: |
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
echo "TARGET=${{ matrix.target }}" >> $GITHUB_ENV
echo "SKIP_TESTS=" >> $GITHUB_ENV
echo "LZMA_API_STATIC=1" >> $GITHUB_ENV
- name: Skip tests
if: matrix.run_tests == '' || matrix.mode == 'release'
run: |
echo "SKIP_TESTS=yes" >> $GITHUB_ENV
- name: Cache cargo registry and git trees
uses: actions/cache@v3
with:
path: |
~/.cargo/registry
~/.cargo/git
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Get rustc commit hash
id: cargo-target-cache
run: |
echo "{rust_hash}={$(rustc -Vv | grep commit-hash | awk '{print $2}')}" >> $GITHUB_OUTPUT
shell: bash
- name: Cache cargo build
uses: actions/cache@v3
with:
path: target
key: ${{ github.base_ref }}-${{ github.head_ref }}-${{ matrix.target }}-${{ matrix.mode }}-cargo-target-dir-${{ steps.cargo-target-cache.outputs.rust_hash }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys: ${{ github.base_ref }}-${{ matrix.target }}-${{ matrix.mode }}-cargo-target-dir-${{ steps.cargo-target-cache.outputs.rust_hash }}-${{ hashFiles('**/Cargo.lock') }}
- name: Install Rustup using ./rustup-init.sh
run: |
sh ./rustup-init.sh --default-toolchain=none --profile=minimal -y
- name: Ensure Stable is up to date
run: |
if rustc +stable -vV >/dev/null 2>/dev/null; then
rustup toolchain uninstall stable
fi
rustup toolchain install --profile=minimal stable
- name: aarch64-specific items
run: |
# Use nightly for now
rustup toolchain install --profile=minimal nightly
rustup default nightly
if: matrix.target == 'aarch64-apple-darwin'
- name: Ensure we have our goal target installed
run: |
rustup target install "$TARGET"
- name: Run a full build and test
env:
BUILD_PROFILE: ${{ matrix.mode }}
run: bash ci/run.bash
- name: Dump dynamic link targets
if: matrix.mode == 'release'
run: |
otool -L target/${TARGET}/release/rustup-init
if otool -L target/${TARGET}/release/rustup-init | grep -q -F /usr/local/; then
echo >&2 "Unfortunately there are /usr/local things in the link. Fail."
exit 1
fi
- name: Upload the built artifact
if: matrix.mode == 'release'
uses: actions/upload-artifact@v3
with:
name: rustup-init-${{ matrix.target }}
path: |
target/${{ matrix.target }}/release/rustup-init
retention-days: 7
- name: Acquire the AWS tooling
if: github.event_name == 'push' && github.ref == 'refs/heads/stable' && matrix.mode == 'release'
run: |
pip3 install awscli
- name: Prepare the dist
if: github.event_name == 'push' && github.ref == 'refs/heads/stable' && matrix.mode == 'release'
run: |
bash ci/prepare-deploy.bash
- name: Deploy build to dev-static dist tree for release team
if: github.event_name == 'push' && github.ref == 'refs/heads/stable' && matrix.mode == 'release'
run: |
aws s3 cp --recursive deploy/ s3://dev-static-rust-lang-org/rustup/
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: us-west-1
- name: Clear the cargo caches
run: |
cargo install cargo-cache --no-default-features --features ci-autoclean
cargo-cache
- name: Flush cache
# This is a workaround for a bug with GitHub Actions Cache that causes
# corrupt cache entries (particularly in the target directory). See
# https://github.com/actions/cache/issues/403 and
# https://github.com/rust-lang/cargo/issues/8603.
run: sudo /usr/sbin/purge