-
Notifications
You must be signed in to change notification settings - Fork 28
115 lines (94 loc) · 3.57 KB
/
build-and-deploy.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
on:
push:
branches:
- master
- staging
- release
pull_request:
repository_dispatch:
types: build-and-deploy
workflow_dispatch:
workflow_call:
concurrency:
group: cli-${{ github.workflow }}-${{ github.ref_type }}-${{ github.event.pull_request.number || github.ref || github.run_id }}
cancel-in-progress: true
defaults:
run:
shell: bash -euxo pipefail {0}
env:
GITHUB_REPOSITORY_URL: ${{ github.server_url }}/${{ github.repository }}
VERBOSE: 1
jobs:
build-and-deploy-datasets:
runs-on: ubuntu-22.04
environment:
name: ${{ github.ref }}
env:
VERBOSE: 0
PYTHONUNBUFFERED: 1
DATA_AWS_S3_BUCKET: ${{ secrets.DATA_AWS_S3_BUCKET }}
DATA_AWS_CLOUDFRONT_DISTRIBUTION_ID: ${{ secrets.DATA_AWS_CLOUDFRONT_DISTRIBUTION_ID }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: us-east-2
steps:
- name: "Checkout code"
uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: true
- name: "Authenticate git"
run: |
export GITHUB_TOKEN="${{ secrets.GH_TOKEN_NEXTSTRAIN_BOT_REPO }}"
export BOT_GIT_USER_EMAIL="${{ secrets.BOT_GIT_USER_EMAIL }}"
export BOT_GIT_USER_NAME="${{ secrets.BOT_GIT_USER_NAME }}"
: ${GITHUB_TOKEN?"The env var GITHUB_TOKEN is required"}
: ${BOT_GIT_USER_EMAIL?"The env var BOT_GIT_USER_EMAIL is required"}
: ${BOT_GIT_USER_NAME?"The env var BOT_GIT_USER_NAME is required"}
git config --global user.email "${BOT_GIT_USER_EMAIL}"
git config --global user.name "${BOT_GIT_USER_NAME}"
gh auth setup-git >/dev/null
- name: "Extract branch name"
run: |
echo "current_branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT
id: branch-name
- name: "Checkout branch"
run: |
git fetch --all
git switch ${{ steps.branch-name.outputs.current_branch }}
- name: "Install system dependencies"
run: |
sudo apt-get install brotli pigz parallel python3 rename --yes -qq >/dev/null
- name: "Install Python dependencies"
run: |
pip3 install -r requirements.txt
- name: "Install awscli"
run: |
pushd /tmp >/dev/null
curl -fsSL "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip -oqq awscliv2.zip
sudo ./aws/install --update
popd >/dev/null
aws --version
- name: "Rebuild, commit and push datasets"
if: github.ref != 'refs/heads/release'
run: |
./scripts/rebuild --input-dir 'data/' --output-dir 'data_output/' --push --repo="${GITHUB_REPOSITORY}"
- name: "Rebuild, commit, push and make a release"
if: github.ref == 'refs/heads/release'
run: |
./scripts/rebuild --input-dir 'data/' --output-dir 'data_output/' --release --repo="${GITHUB_REPOSITORY}"
- name: "Deploy dataset server"
if: ${{ endsWith(github.ref, '/master') || endsWith(github.ref, '/staging') || endsWith(github.ref, '/release') }}
run: |
./scripts/upload 'data_output/'
- name: "Upload build artifacts: dataset server"
uses: actions/upload-artifact@v3
with:
name: server
path: ./data_output/*
- name: "Upload build artifacts: zip archives"
uses: actions/upload-artifact@v3
with:
name: zips
path: ./data_temp/*