ci: Update build.yml
This commit is contained in:
parent
bbfbb25844
commit
453ddc87ec
188
.github/workflows/build.yml
vendored
188
.github/workflows/build.yml
vendored
|
@ -156,83 +156,6 @@ jobs:
|
||||||
with:
|
with:
|
||||||
fetch-depth: 1
|
fetch-depth: 1
|
||||||
fetch-tags: false
|
fetch-tags: false
|
||||||
|
|
||||||
- name: Setup Node.js
|
|
||||||
uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: '16'
|
|
||||||
|
|
||||||
- name: Setup Python
|
|
||||||
uses: actions/setup-python@v5
|
|
||||||
with:
|
|
||||||
python-version: '3.x'
|
|
||||||
|
|
||||||
- name: Download a Coverage Results
|
|
||||||
if: ${{ github.event.inputs.skiptests == 'false' || github.ref_name == 'release' }}
|
|
||||||
uses: actions/download-artifact@v4.1.8
|
|
||||||
with:
|
|
||||||
name: coverage
|
|
||||||
|
|
||||||
- name: Make Release Build
|
|
||||||
env:
|
|
||||||
DEBIAN_FRONTEND: noninteractive
|
|
||||||
BROWSERSLIST_IGNORE_OLD_DATA: 1
|
|
||||||
run: |
|
|
||||||
echo "PKG_VERSION: $PKG_VERSION"
|
|
||||||
echo "GITHUB_SHA: $GITHUB_SHA"
|
|
||||||
echo "GITHUB_REF_NAME: $GITHUB_REF_NAME"
|
|
||||||
echo "Running frontend build script..."
|
|
||||||
echo "Compiling native node packages..."
|
|
||||||
yarn rebuild
|
|
||||||
echo "Packaging static assets..."
|
|
||||||
yarn build --base=https://static.ietf.org/dt/$PKG_VERSION/
|
|
||||||
yarn legacy:build
|
|
||||||
echo "Setting version $PKG_VERSION..."
|
|
||||||
sed -i -r -e "s|^__version__ += '.*'$|__version__ = '$PKG_VERSION'|" ietf/__init__.py
|
|
||||||
sed -i -r -e "s|^__release_hash__ += '.*'$|__release_hash__ = '$GITHUB_SHA'|" ietf/__init__.py
|
|
||||||
sed -i -r -e "s|^__release_branch__ += '.*'$|__release_branch__ = '$GITHUB_REF_NAME'|" ietf/__init__.py
|
|
||||||
|
|
||||||
- name: Set Production Flags
|
|
||||||
if: ${{ env.SHOULD_DEPLOY == 'true' }}
|
|
||||||
run: |
|
|
||||||
echo "Setting production flags in settings.py..."
|
|
||||||
sed -i -r -e 's/^DEBUG *= *.*$/DEBUG = False/' -e "s/^SERVER_MODE *= *.*\$/SERVER_MODE = 'production'/" ietf/settings.py
|
|
||||||
|
|
||||||
- name: Make Release Tarball
|
|
||||||
env:
|
|
||||||
DEBIAN_FRONTEND: noninteractive
|
|
||||||
run: |
|
|
||||||
echo "Build release tarball..."
|
|
||||||
mkdir -p /home/runner/work/release
|
|
||||||
tar -czf /home/runner/work/release/release.tar.gz -X dev/build/exclude-patterns.txt .
|
|
||||||
|
|
||||||
- name: Collect + Push Statics
|
|
||||||
env:
|
|
||||||
DEBIAN_FRONTEND: noninteractive
|
|
||||||
AWS_ACCESS_KEY_ID: ${{ secrets.CF_R2_STATIC_KEY_ID }}
|
|
||||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.CF_R2_STATIC_KEY_SECRET }}
|
|
||||||
AWS_DEFAULT_REGION: auto
|
|
||||||
AWS_ENDPOINT_URL: ${{ secrets.CF_R2_ENDPOINT }}
|
|
||||||
run: |
|
|
||||||
echo "Collecting statics..."
|
|
||||||
docker run --rm --name collectstatics -v $(pwd):/workspace ghcr.io/ietf-tools/datatracker-app-base:latest sh dev/build/collectstatics.sh
|
|
||||||
echo "Pushing statics..."
|
|
||||||
cd static
|
|
||||||
aws s3 sync . s3://static/dt/$PKG_VERSION --only-show-errors
|
|
||||||
|
|
||||||
- name: Augment dockerignore for docker image build
|
|
||||||
env:
|
|
||||||
DEBIAN_FRONTEND: noninteractive
|
|
||||||
run: |
|
|
||||||
cat >> .dockerignore <<EOL
|
|
||||||
.devcontainer
|
|
||||||
.github
|
|
||||||
.vscode
|
|
||||||
k8s
|
|
||||||
playwright
|
|
||||||
svn-history
|
|
||||||
docker-compose.yml
|
|
||||||
EOL
|
|
||||||
|
|
||||||
- name: Launch build VM
|
- name: Launch build VM
|
||||||
id: azlaunch
|
id: azlaunch
|
||||||
|
@ -259,22 +182,33 @@ jobs:
|
||||||
cat ~/.ssh/id_rsa > ${{ github.workspace }}/prvkey.key
|
cat ~/.ssh/id_rsa > ${{ github.workspace }}/prvkey.key
|
||||||
ssh-keyscan -t rsa $vminfo >> ~/.ssh/known_hosts
|
ssh-keyscan -t rsa $vminfo >> ~/.ssh/known_hosts
|
||||||
|
|
||||||
- name: Copy build files
|
# - name: Copy build files
|
||||||
uses: appleboy/scp-action@917f8b81dfc1ccd331fef9e2d61bdc6c8be94634
|
# uses: appleboy/scp-action@917f8b81dfc1ccd331fef9e2d61bdc6c8be94634
|
||||||
with:
|
# with:
|
||||||
host: ${{ steps.azlaunch.outputs.ipaddr }}
|
# host: ${{ steps.azlaunch.outputs.ipaddr }}
|
||||||
port: 22
|
# port: 22
|
||||||
username: azureuser
|
# username: azureuser
|
||||||
key_path: ${{ github.workspace }}/prvkey.key
|
# key_path: ${{ github.workspace }}/prvkey.key
|
||||||
source: "${{ github.workspace }},!${{ github.workspace }}/.git,!${{ github.workspace }}/prvkey.key"
|
# source: "${{ github.workspace }},!${{ github.workspace }}/.git,!${{ github.workspace }}/prvkey.key"
|
||||||
target: /workspace
|
# target: /workspace
|
||||||
|
|
||||||
- name: Remote SSH into Build VM
|
- name: Remote SSH into Build VM
|
||||||
uses: appleboy/ssh-action@25ce8cbbcb08177468c7ff7ec5cbfa236f9341e1
|
uses: appleboy/ssh-action@25ce8cbbcb08177468c7ff7ec5cbfa236f9341e1
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
GITHUB_ACTOR: ${{ github.actor }}
|
GITHUB_ACTOR: ${{ github.actor }}
|
||||||
|
GITHUB_SHA: ${{ github.sha }}
|
||||||
|
GITHUB_REF_NAME: ${{ github.ref_name }}
|
||||||
|
GITHUB_RUN_ID: ${{ github.run_id }}
|
||||||
|
AWS_ACCESS_KEY_ID: ${{ secrets.CF_R2_STATIC_KEY_ID }}
|
||||||
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.CF_R2_STATIC_KEY_SECRET }}
|
||||||
|
AWS_DEFAULT_REGION: auto
|
||||||
|
AWS_ENDPOINT_URL: ${{ secrets.CF_R2_ENDPOINT }}
|
||||||
PKG_VERSION: ${{ env.PKG_VERSION }}
|
PKG_VERSION: ${{ env.PKG_VERSION }}
|
||||||
|
SHOULD_DEPLOY: ${{ env.SHOULD_DEPLOY }}
|
||||||
|
SKIP_TESTS: ${{ github.event.inputs.skiptests }}
|
||||||
|
DEBIAN_FRONTEND: noninteractive
|
||||||
|
BROWSERSLIST_IGNORE_OLD_DATA: 1
|
||||||
with:
|
with:
|
||||||
host: ${{ steps.azlaunch.outputs.ipaddr }}
|
host: ${{ steps.azlaunch.outputs.ipaddr }}
|
||||||
port: 22
|
port: 22
|
||||||
|
@ -295,10 +229,90 @@ jobs:
|
||||||
|
|
||||||
echo "Login to ghcr.io..."
|
echo "Login to ghcr.io..."
|
||||||
echo $GITHUB_TOKEN | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin
|
echo $GITHUB_TOKEN | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin
|
||||||
|
|
||||||
|
echo "Installing GH CLI..."
|
||||||
|
(type -p wget >/dev/null || (sudo apt update && sudo apt-get install wget -y)) \
|
||||||
|
&& sudo mkdir -p -m 755 /etc/apt/keyrings \
|
||||||
|
&& wget -qO- https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \
|
||||||
|
&& sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
|
||||||
|
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
|
||||||
|
&& sudo apt update \
|
||||||
|
&& sudo apt install gh -y
|
||||||
|
|
||||||
|
echo "Installing AWS CLI..."
|
||||||
|
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
|
||||||
|
unzip awscliv2.zip
|
||||||
|
sudo ./aws/install
|
||||||
|
|
||||||
|
echo "Install Node.js..."
|
||||||
|
curl -fsSL https://deb.nodesource.com/setup_22.x -o nodesource_setup.sh
|
||||||
|
sudo bash nodesource_setup.sh
|
||||||
|
sudo apt-get install -y nodejs
|
||||||
|
sudo corepack enable
|
||||||
|
|
||||||
|
echo "Install Python 3.x..."
|
||||||
|
sudo apt-get install python3 python3-dev -y
|
||||||
|
python3 --version
|
||||||
|
|
||||||
|
echo "Clone project..."
|
||||||
|
sudo mkdir -p /workspace
|
||||||
|
sudo chown azureuser /workspace
|
||||||
|
cd /workspace
|
||||||
|
gh repo clone ietf-tools/datatracker -- --depth=1 --no-tags
|
||||||
|
cd datatracker
|
||||||
|
|
||||||
|
if [ "$SHOULD_DEPLOY" = false ] || [ "$GITHUB_REF_NAME" = release ] ; then
|
||||||
|
echo "Downloading coverage..."
|
||||||
|
gh run download $GITHUB_RUN_ID -n coverage
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Building project..."
|
||||||
|
echo "PKG_VERSION: $PKG_VERSION"
|
||||||
|
echo "GITHUB_SHA: $GITHUB_SHA"
|
||||||
|
echo "GITHUB_REF_NAME: $GITHUB_REF_NAME"
|
||||||
|
echo "Running frontend build script..."
|
||||||
|
echo "Compiling native node packages..."
|
||||||
|
yarn rebuild
|
||||||
|
echo "Packaging static assets..."
|
||||||
|
yarn build --base=https://static.ietf.org/dt/$PKG_VERSION/
|
||||||
|
yarn legacy:build
|
||||||
|
echo "Setting version $PKG_VERSION..."
|
||||||
|
sed -i -r -e "s|^__version__ += '.*'$|__version__ = '$PKG_VERSION'|" ietf/__init__.py
|
||||||
|
sed -i -r -e "s|^__release_hash__ += '.*'$|__release_hash__ = '$GITHUB_SHA'|" ietf/__init__.py
|
||||||
|
sed -i -r -e "s|^__release_branch__ += '.*'$|__release_branch__ = '$GITHUB_REF_NAME'|" ietf/__init__.py
|
||||||
|
|
||||||
|
if [ "$SHOULD_DEPLOY" = true ] ; then
|
||||||
|
echo "Setting production flags in settings.py..."
|
||||||
|
sed -i -r -e 's/^DEBUG *= *.*$/DEBUG = False/' -e "s/^SERVER_MODE *= *.*\$/SERVER_MODE = 'production'/" ietf/settings.py
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Build release tarball..."
|
||||||
|
mkdir -p /workspace/release
|
||||||
|
tar -czf /workspace/release.tar.gz -X dev/build/exclude-patterns.txt .
|
||||||
|
|
||||||
|
echo "Collecting statics..."
|
||||||
|
docker run --rm --name collectstatics -v $(pwd):/workspace ghcr.io/ietf-tools/datatracker-app-base:latest sh dev/build/collectstatics.sh
|
||||||
|
|
||||||
|
echo "Pushing statics..."
|
||||||
|
cd static
|
||||||
|
aws s3 sync . s3://static/dt/$PKG_VERSION --only-show-errors
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
echo "Augment dockerignore for docker image build..."
|
||||||
|
cat >> .dockerignore <<EOL
|
||||||
|
.devcontainer
|
||||||
|
.github
|
||||||
|
.vscode
|
||||||
|
k8s
|
||||||
|
playwright
|
||||||
|
svn-history
|
||||||
|
docker-compose.yml
|
||||||
|
EOL
|
||||||
|
|
||||||
echo "Building Images..."
|
echo "Building Images..."
|
||||||
cd /workspace
|
|
||||||
ls
|
ls
|
||||||
|
echo "Error!" 1>&2
|
||||||
|
exit 64
|
||||||
|
|
||||||
- name: Destroy Build VM + resources
|
- name: Destroy Build VM + resources
|
||||||
if: always()
|
if: always()
|
||||||
|
|
Loading…
Reference in a new issue