Merge branch 'master' into pont-904-stac-ogc-fixes #2009
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Unittest and docker builds | |
on: | |
push: | |
release: | |
types: [published] | |
env: | |
APP_NAME: xcube | |
ORG_NAME: bcdev | |
IMG_REG_NAME: quay.io | |
jobs: | |
unittest: | |
runs-on: ubuntu-latest | |
env: | |
NUMBA_DISABLE_JIT: 1 | |
steps: | |
- uses: actions/checkout@v2 | |
# Setup miniconda build env | |
- uses: mamba-org/setup-micromamba@v1 | |
with: | |
micromamba-version: '1.4.8-0' | |
environment-file: environment.yml | |
init-shell: >- | |
bash | |
cache-environment: true | |
post-cleanup: 'all' | |
# Setup xcube | |
- name: setup-xcube | |
shell: bash -l {0} | |
run: | | |
conda info | |
conda list | |
python setup.py develop | |
# Run unittests | |
- name: unittest-xcube | |
shell: bash -l {0} | |
run: | | |
pip install pytest pytest-cov | |
pytest --cov=./ --cov-report=xml | |
- uses: codecov/codecov-action@v1 | |
with: | |
verbose: true # optional (default = false) | |
build-docker-image: | |
runs-on: ubuntu-latest | |
# Build the docker image and push to quay.io | |
name: build-docker-image | |
# Only run if unittests succeed | |
needs: unittest | |
steps: | |
- name: git-checkout | |
uses: actions/checkout@v2 | |
# Determine release tag from git ref | |
- name: get-release-tag | |
id: release | |
run: echo ::set-output name=tag::${GITHUB_REF#refs/*/} | |
# Print some info | |
- name: info | |
id: info | |
run: | | |
echo "TAG: ${{ steps.release.outputs.tag }}" | |
echo "EVENT: ${{ github.event_name }}" | |
# commented out the below step to avoid building docker image for each | |
# commit to master, rather build and push the xcube docker image only on | |
# event type release | |
# Build and push docker image 'latest' to quay.io when the event is a 'push' and branch 'master' | |
# - uses: mr-smithers-excellent/docker-build-push@v5 | |
# name: build-push-docker-image-latest | |
# if: ${{ github.event_name == 'push' && steps.release.outputs.tag == 'master' }} | |
# with: | |
# image: ${{ env.ORG_NAME }}/${{ env.APP_NAME }} | |
# tags: master, latest | |
# registry: ${{ env.IMG_REG_NAME }} | |
# username: ${{ secrets.IMG_REG_USERNAME }} | |
# password: ${{ secrets.IMG_REG_PASSWORD }} | |
# Build and push docker release to quay.io when the event is a 'release' | |
- uses: mr-smithers-excellent/docker-build-push@v5 | |
name: build-push-docker-image-release | |
if: ${{ github.event_name == 'release' }} | |
with: | |
image: ${{ env.ORG_NAME }}/${{ env.APP_NAME }} | |
tags: ${{ steps.release.outputs.tag }} | |
registry: ${{ env.IMG_REG_NAME }} | |
username: ${{ secrets.IMG_REG_USERNAME }} | |
password: ${{ secrets.IMG_REG_PASSWORD }} | |
update-version: | |
runs-on: ubuntu-latest | |
needs: build-docker-image | |
name: update-xcube-tag | |
steps: | |
- name: Get installation token | |
id: get_installation_token | |
uses: tibdex/github-app-token@v1 | |
with: | |
app_id: ${{ secrets.TOKEN_PROVIDER_APP_ID }} | |
private_key: ${{ secrets.TOKEN_PROVIDER_KEY }} | |
repository: bc-org/k8s-configs | |
# the installationId of the GitHub app we are using | |
installationId: 36950178 | |
- name: git-checkout | |
uses: actions/checkout@v2 | |
- name: checkout-k8s | |
run: | | |
git clone https://x-access-token:${{ steps.get_installation_token.outputs.token }}@github.com/bc-org/k8s-configs.git | |
mv k8s-configs k8s | |
- name: get-release-tag | |
id: release | |
run: echo ::set-output name=tag::${GITHUB_REF#refs/*/} | |
- name: deployment-phase | |
id: deployment-phase | |
uses: bc-org/gha-determine-phase@v0.1 | |
with: | |
event_name: ${{ github.event_name }} | |
tag: ${{ steps.release.outputs.tag }} | |
- name: get-hash | |
id: get-hash | |
run: | | |
HASH=$(skopeo inspect docker://${{ env.IMG_REG_NAME }}/${{ env.ORG_NAME }}/${{ env.APP_NAME }}:${{ steps.release.outputs.tag }} | jq '.Digest') | |
if [[ "$HASH" == *"sha256"* ]]; then | |
echo ::set-output name=hash::$HASH | |
else | |
echo "No hash present. Using none as hash. This will use the version tag instead for deployment." | |
echo ::set-output name=hash::none | |
fi | |
- name: info | |
run: | | |
echo "Event: ${{ github.event_name }}" | |
echo "Deployment Stage: ${{ steps.deployment-phase.outputs.phase }}" | |
echo "Release Tag: ${{ steps.release.outputs.tag }}" | |
echo "Deployment Release Tag: ${{ steps.deployment-phase.outputs.tag }}" | |
echo "Deployment Digest: ${{ steps.get-hash.outputs.hash }}" | |
- name: set-version-tag-xcube-gen | |
uses: bc-org/update-application-version-tags@main | |
with: | |
app: ${{ env.APP_NAME }} | |
phase: ${{ steps.deployment-phase.outputs.phase }} | |
delimiter: ' ' | |
tag: ${{ steps.deployment-phase.outputs.tag }} | |
hash: ${{ steps.get-hash.outputs.hash }} | |
working-directory: ./k8s/xcube-gen/helm | |
- name: cat-result | |
working-directory: ./k8s/xcube-gen/helm | |
run: | | |
head values-dev.yaml | |
head values-stage.yaml | |
head values-prod.yaml | |
- name: Pushes to another repository | |
# Don't run if run locally and should be ignored | |
if: ${{ steps.deployment-phase.outputs.phase != 'ignore' && !env.ACT }} | |
run: | | |
cd ./k8s | |
git config user.name github-actions | |
git config user.email github-actions@github.com | |
git commit -am "${{ github.event.release }}. Set version to ${{ steps.release.outputs.tag }}." | |
git remote set-url origin https://x-access-token:${{ steps.get_installation_token.outputs.token }}@github.com/bc-org/k8s-configs.git | |
git push origin main |