summaryrefslogtreecommitdiffstats
path: root/.github/workflows
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows')
-rw-r--r--.github/workflows/mxe-dockerimage-stage1.yml49
-rw-r--r--.github/workflows/mxe-dockerimage-stage2.yml34
2 files changed, 83 insertions, 0 deletions
diff --git a/.github/workflows/mxe-dockerimage-stage1.yml b/.github/workflows/mxe-dockerimage-stage1.yml
new file mode 100644
index 000000000..1452fab38
--- /dev/null
+++ b/.github/workflows/mxe-dockerimage-stage1.yml
@@ -0,0 +1,49 @@
+name: Docker Image CI
+
+on:
+ push:
+ paths:
+ - scripts/docker/mxe-build-container/*
+
+
+jobs:
+ mxe-build-container-stage1:
+ runs-on: ubuntu-latest
+ env:
+ # IMPORTANT: use the second digit to test new versions, each new official build should be n.0 with the first one being 1.0
+ # as you test changes toward a new release, call those 1.1, 1.2, 1.3, etc
+ # VERSION is just that version presented as a string constant
+ #
+ VERSION: ${{ '0.5' }}
+
+ steps:
+ - uses: actions/checkout@v1
+
+ # Because, reasons, we can't really do anything in YAML, so do this crazy shell callout thingy in order to assemble
+ # sane variables to use later in this job - if someone knows an easier way to do this, please let me know!
+ # This abomination below assembles the docker image NAME and appends ".stage1" to the VERSION
+ - name: set env
+ run: |
+ v=${{ env.VERSION }}
+ s=".stage1"
+ echo "::set-env name=NAME::subsurface/mxe-build-container:${v}${s}"
+
+ - name: Build and Publish stage 1 Docker image to Dockerhub
+ uses: elgohr/Publish-Docker-Github-Action@master
+ with:
+ name: ${{ env.NAME }}
+ username: ${{ secrets.DOCKER_USERNAME }}
+ password: ${{ secrets.DOCKER_PASSWORD }}
+ dockerfile: 'Dockerfile-stage1'
+ workdir: './scripts/docker/mxe-build-container/'
+
+ - name: Trigger stage 2 to run
+ # this triggers a dispatch event in our own repository - this allows us to work around the
+ # 6h runtime max (as on a two core system the total build time of this container is closer to 7h)
+ # we use the event_type to pass the version that we are building to the second stage
+ run: |
+ curl -XPOST -H 'authorization: token ${{ secrets.ACCESS_TOKEN }}' \
+ -H "Accept: application/vnd.github.everest-preview+json" \
+ -H "Content-Type: application/json" \
+ https://api.github.com/repos/subsurface-divelog/subsurface/dispatches \
+ --data '{"event_type": "${{ env.VERSION }}" }'
diff --git a/.github/workflows/mxe-dockerimage-stage2.yml b/.github/workflows/mxe-dockerimage-stage2.yml
new file mode 100644
index 000000000..531982a70
--- /dev/null
+++ b/.github/workflows/mxe-dockerimage-stage2.yml
@@ -0,0 +1,34 @@
+name: Docker Image CI stage 2
+
+# trigger this second stage via a repository dispaych event
+# the version that we are building is passed in via the event type that is available to us here
+# as github.event.action
+
+on: repository_dispatch
+
+jobs:
+ mxe-build-container-stage2:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v1
+
+ # Grab the version from the event name that we were triggered by and add ".stage1" to find the docker image to start FROM
+ # And create the NAME of the final docker image
+ - name: set env
+ run: |
+ v=${{ github.event.action }}
+ s=".stage1"
+ echo "::set-env name=VERSION::${v}${s}"
+ echo "::set-env name=NAME::subsurface/mxe-build-container:${v}"
+
+ - name: Build and Publish stage 2 Docker image to Dockerhub
+ uses: elgohr/Publish-Docker-Github-Action@master
+ with:
+ name: ${{ env.NAME }}
+ username: ${{ secrets.DOCKER_USERNAME }}
+ password: ${{ secrets.DOCKER_PASSWORD }}
+ dockerfile: 'Dockerfile-stage2'
+ workdir: './scripts/docker/mxe-build-container/'
+ buildargs: VERSION
+