Skip to content

Enable windows

Enable windows #100

Workflow file for this run

on:
#schedule:
# - cron: '00 7 * * *' #0630 UTC kick off full build and regression
push:
branches: [ ci/* ]
workflow_dispatch:
inputs:
runTests:
description: "Run tests?"
required: false
type: boolean
default: false
env:
AWS_REGION: us-east-1
AWS_SUBNET_ID: subnet-064f21b53fc72cf44
AWS_SG_ID: sg-0ca7912782cf1538b
AMI_ID: ami-04bb42ae8c0b24120
AWS_INSTANCE_TYPE: c5a.8xlarge
AWS_AVAILABILITY_ZONE: us-east-1b
OS: windows
KEY_PAIR: win
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-node16
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ env.AWS_REGION }}
- name: Start EC2 runner
id: start-ec2-runner
uses: tundranerd/ec2-multiple-github-runners@multi-os-multi-runner
with:
mode: start
key-pair: ${{ env.KEY_PAIR }}
os: ${{ env.OS }}
github-token: ${{ secrets.GH_TOKEN}}
ec2-image-id: ${{ env.AMI_ID}}
ec2-instance-type: ${{ env.AWS_INSTANCE_TYPE }}
subnet-id: ${{ env.AWS_SUBNET_ID }}
security-group-id: ${{ env.AWS_SG_ID }}
availability-zone: ${{ env.AWS_AVAILABILITY_ZONE }}
wait-for-registry-timeout: 5
aws-resource-tags: > # optional, requires additional permissions
[
{"Key": "Name", "Value": "ec2-github-runner"},
{"Key": "GitHubRepository", "Value": "${{ github.repository }}"},
{"Key": "os", "Value": "${{ env.OS }}"}
]
build:
name: Clone and build
needs:
- start-runner # required to get output from the start-runner job
runs-on: ${{ needs.start-runner.outputs.label }} # run the job on the newly created runner
outputs:
git_describe: ${{ steps.git-describe.outputs.git_describe }}
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- id: git-describe
run: |
echo "git_describe=$(git describe --tags)" >> "$GITHUB_OUTPUT"
shell: bash
- name: Build
run: |
ci/windows/build.bat
- name: Create SDK
run: |
ci/linux/create-febio-sdk.sh
shell: bash
- name: Upload SDK
uses: actions/upload-artifact@v3
with:
name: febio4-sdk-${{runner.os}}-${{runner.arch}}
path: |
febio-sdk
- name: Upload Artifacts
uses: actions/upload-artifact@v3
with:
name: febio4-${{runner.os}}-${{runner.arch}}
path: cmbuild/bin
tests:
if: ${{inputs.runTests}}
name: Run test suite
needs:
- start-runner # required to get output from the start-runner job
- build
runs-on: ${{ needs.start-runner.outputs.label }} # run the job on the newly created runner
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: 'true'
- uses: actions/download-artifact@v3
with:
name: febio4-${{runner.os}}-${{runner.arch}}
path: cmbuild/bin
- name: Run test suite
run: |
ci/windows/test.bat
- name: Upload Artifacts
uses: actions/upload-artifact@v3
with:
name: testsuite-${{runner.os}}-${{runner.arch}}-logs
path: |
TestSuite/Verify3/*.log
TestSuite/Logs*.txt
stop-runner:
name: Stop self-hosted EC2 runner
needs:
- start-runner # required to get output from the start-runner job
- tests # 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-node16
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ env.AWS_REGION }}
- name: Stop EC2 runner
uses: tundranerd/ec2-multiple-github-runners@multi-os-multi-runner
with:
mode: stop
os: ${{ env.OS }}
wait-for-deregistry-timeout: 5
github-token: ${{ secrets.GH_TOKEN}}
label: ${{ needs.start-runner.outputs.label }}
ec2-instance-id: ${{ needs.start-runner.outputs.ec2-instance-id }}
repo-artifacts:
name: Upload artifacts to repo
needs:
- build # required to get output from the start-runner job
runs-on: ubuntu-latest
if: ${{ always() }} # required to stop the runner even if the error happened in the previous jobs
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: 'true'
- uses: actions/download-artifact@v3
with:
name: febio4-Windows-X64
path: |
cmbuild
- name: Configure SSH
run: |
ci/common/linux/configure-ssh.sh
env:
SSH_USER: ${{ secrets.REPO_USER }}
SSH_KEY: ${{ secrets.REPO_KEY }}
SSH_HOST: ${{ secrets.REPO_HOST }}
- name: Stage Build to Repo
run: |
scp cmbuild/Release/* repo:~/update2/FEBioStudio2Dev/Windows/stage/bin
- name: Make Dev Release
run: |
ssh repo "python3 update2/FEBioStudio2Dev/makeDevRelease.py -w"
publish-to-s3:
name: Publish to S3
needs:
- build
runs-on: ubuntu-latest
if: ${{ always() }}
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: 'true'
- name: Download SDK
uses: actions/download-artifact@v3
with:
name: febio4-sdk-Windows-${{runner.arch}}
path: |
artifacts/febio-sdk
- name: Download febio
uses: actions/download-artifact@v3
with:
name: febio4-Windows-${{runner.arch}}
path: |
artifacts/febio
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1-node16
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ env.AWS_REGION }}
- name: Publish to S3
env:
BUCKET_NAME: febio-packages
OS: Windows
REF_NAME: ${{ github.ref_name}}
PACKAGE_NAME: febio
GIT_TAG: ${{ needs.build.outputs.git_describe }}
run: |
ci/common/linux/publish-to-s3.sh artifacts/febio
ci/common/linux/publish-to-s3.sh artifacts/febio-sdk