Skip to content

Tag Images

Tag Images #135

Workflow file for this run

name: Tag Images
on:
workflow_dispatch:
inputs:
originalTag:
description: 'Original tag; please ensure its appearance on Wiki homepage'
default: '2099.3-<branch_name>'
required: true
dryRun:
type: boolean
description: 'dry-run: retrieve original image names ONLY'
required: true
skipGPUTest:
type: boolean
description: 'skip-gpu-test: Skips testing via the GPU. Never use this unless dsmlp-login is encountering issues!'
required: true
jobs:
start-runner:
name: Start self-hosted EC2 runner
runs-on: ubuntu-latest
outputs:
label: ${{ steps.start-ec2-runner.outputs.label }}
ec2-instance-id: ${{ steps.start-ec2-runner.outputs.ec2-instance-id }}
steps:
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-west-2
- name: Start EC2 runner
id: start-ec2-runner
uses: machulav/ec2-github-runner@v2
with:
mode: start
github-token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }}
ec2-image-id: ami-079a0c9425d45e778
ec2-instance-type: t3.2xlarge
subnet-id: subnet-0c4a81ef57cf2ebe3
security-group-id: sg-01cb8c0cb0de3ba00
gpu_test:
uses: ./.github/workflows/test_gpu.yml
if: ${{ github.event.inputs.skipGPUTest == 'false' }}
with:
originalTag: ${{ github.event.inputs.originalTag }}
dryRun: ${{ github.event.inputs.dryRun == 'true' }}
secrets:
inherit
tagging:
needs: start-runner
if: ${{ github.event.inputs.skipGPUTest == 'true' || needs.gpu_test.result == 'success' }}
runs-on: ${{ needs.start-runner.outputs.label }}
steps:
- uses: actions/checkout@v3
- name: Docker Cleanup
run: |
docker image prune -a -f
docker container prune -f
- name: Install pip dependencies
run: |
sudo dnf -y install python-pip
sudo dnf remove python3-requests -y
python3 -m pip install -r scripts/requirements.txt
- name: Install pydoit fixed
run: |
git clone https://github.com/davidzyx/doit
pip install ./doit
rm -rf ./doit
mkdir -p logs manifests
touch logs/run.log logs/.empty
- name: Set Python-specific environment variables
run: |
echo "PYTHONPATH=$(pwd)" >> $GITHUB_ENV
echo "PYTHONUNBUFFERED=TRUE" >> $GITHUB_ENV
- name: Clone Wiki
uses: actions/checkout@v3
with:
repository: ${{github.repository}}.wiki
path: wiki
- name: Setup artifacts
env:
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_USER: ${{ github.actor }}
run: |
doit prep
mkdir -p logs
- name: Dry-run Tagging
if: ${{ github.event.inputs.dryRun == 'true' }}
env:
DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_USER: ${{ github.actor }}
run: >
doit tag
--original_tag ${{ github.event.inputs.originalTag }}
--dry_run
- name: Tag Images
if: ${{ github.event.inputs.dryRun == 'false' }}
env:
DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_USER: ${{ github.actor }}
run: >
doit tag
--original_tag ${{ github.event.inputs.originalTag }}
- name: Update Wiki, Home.md
env:
DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_USER: ${{ github.actor }}
run: >
doit home
- name: Push Wiki to GitHub
if: >
(github.event.inputs.dryRun == 'false') &&
!contains(github.base_ref , 'test') &&
!contains(github.base_ref , 'dev') &&
!contains(github.event.head_commit.message , 'skip push') &&
(
github.ref == 'refs/heads/main'
)
uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: '[ci skip] Automated publish for ${{github.sha}}'
repository: wiki/
- name: Archive artifacts and logs
if: ${{ always() }}
uses: actions/upload-artifact@v3
with:
name: tag-artifacts
path: |
artifacts
manifests
stop-runner:
name: Stop self-hosted EC2 runner
needs:
- start-runner # required to get output from the start-runner job
- tagging # required to wait when the main job is done
runs-on: ubuntu-latest
if: ${{ always() }} # required to stop the runner even if the error happened in the previous jobs
steps:
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-west-2
- name: Stop EC2 runner
uses: machulav/ec2-github-runner@v2
with:
mode: stop
github-token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }}
label: ${{ needs.start-runner.outputs.label }}
ec2-instance-id: ${{ needs.start-runner.outputs.ec2-instance-id }}