From 6c23aa56260e480a2a374e760498aa7af7e860ba Mon Sep 17 00:00:00 2001 From: FintasticMan <52415484+FintasticMan@users.noreply.github.com> Date: Thu, 16 Jun 2022 00:13:21 +0200 Subject: Create GH Actions workflow to build Docker image --- .github/workflows/docker.yml | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 .github/workflows/docker.yml (limited to '.github/workflows/docker.yml') diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 00000000..78bba860 --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,42 @@ +name: Build and push Docker image + +on: + push: + branches: [ master, develop ] + paths: + - 'docker/**' + pull_request: + branches: [ master, develop ] + paths: + - 'docker/**' + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Log in to Docker Hub + if: github.event_name != 'pull_request' + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Build and push + uses: docker/build-push-action@v3 + with: + context: ./docker/ + file: ./docker/Dockerfile + platforms: linux/amd64,linux/arm64 + builder: ${{ steps.buildx.outputs.name }} + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ secrets.DOCKER_HUB_USERNAME }}/infinitime-build:latest + cache-from: type=registry,ref=${{ secrets.DOCKER_HUB_USERNAME }}/infinitime-build:buildcache + cache-to: type=registry,ref=${{ secrets.DOCKER_HUB_USERNAME }}/infinitime-build:buildcache,mode=max -- cgit v1.2.3-70-g09d2 From b089fc2c610812bc551df3dca79da7798899acd8 Mon Sep 17 00:00:00 2001 From: Finlay Davidson Date: Thu, 16 Jun 2022 02:47:05 +0200 Subject: Hardcode the Docker Hub username as infinitime This is so that pull requests that modify the docker image but don't have the DOCKER_HUB_USERNAME secret set won't fail. --- .github/workflows/docker.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to '.github/workflows/docker.yml') diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 78bba860..bbc6a3c8 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -20,7 +20,7 @@ jobs: if: github.event_name != 'pull_request' uses: docker/login-action@v2 with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} + username: infinitime password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} - name: Set up QEMU @@ -37,6 +37,6 @@ jobs: platforms: linux/amd64,linux/arm64 builder: ${{ steps.buildx.outputs.name }} push: ${{ github.event_name != 'pull_request' }} - tags: ${{ secrets.DOCKER_HUB_USERNAME }}/infinitime-build:latest - cache-from: type=registry,ref=${{ secrets.DOCKER_HUB_USERNAME }}/infinitime-build:buildcache - cache-to: type=registry,ref=${{ secrets.DOCKER_HUB_USERNAME }}/infinitime-build:buildcache,mode=max + tags: infinitime/infinitime-build:latest + cache-from: type=registry,ref=infinitime/infinitime-build:buildcache + cache-to: type=registry,ref=infinitime/infinitime-build:buildcache,mode=max -- cgit v1.2.3-70-g09d2 From 4ee3e51605272464587f16f23633fc062be19f66 Mon Sep 17 00:00:00 2001 From: Finlay Davidson Date: Thu, 16 Jun 2022 09:13:46 +0200 Subject: Require event_name to be push for Docker Hub Instead of just checking if it's not pull_request --- .github/workflows/docker.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to '.github/workflows/docker.yml') diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index bbc6a3c8..f7aeb7d5 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -17,7 +17,7 @@ jobs: - uses: actions/checkout@v3 - name: Log in to Docker Hub - if: github.event_name != 'pull_request' + if: github.event_name == 'push' uses: docker/login-action@v2 with: username: infinitime @@ -36,7 +36,7 @@ jobs: file: ./docker/Dockerfile platforms: linux/amd64,linux/arm64 builder: ${{ steps.buildx.outputs.name }} - push: ${{ github.event_name != 'pull_request' }} + push: ${{ github.event_name == 'push' }} tags: infinitime/infinitime-build:latest cache-from: type=registry,ref=infinitime/infinitime-build:buildcache cache-to: type=registry,ref=infinitime/infinitime-build:buildcache,mode=max -- cgit v1.2.3-70-g09d2 From 6a0aec08501bcd1b3abe35ba9db9d6618e5b4b28 Mon Sep 17 00:00:00 2001 From: Finlay Davidson Date: Thu, 16 Jun 2022 09:32:16 +0200 Subject: Use either a secret or infinitime as username Uses either the DOCKER_HUB_USERNAME secret or just infinitime as the username for pushing to and pulling from Docker Hub. --- .github/workflows/docker.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to '.github/workflows/docker.yml') diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index f7aeb7d5..d4669206 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -13,6 +13,8 @@ on: jobs: build: runs-on: ubuntu-latest + env: + USERNAME: infinitime steps: - uses: actions/checkout@v3 @@ -20,7 +22,7 @@ jobs: if: github.event_name == 'push' uses: docker/login-action@v2 with: - username: infinitime + username: ${{ secrets.DOCKER_HUB_USERNAME || env.USERNAME }} password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} - name: Set up QEMU @@ -37,6 +39,6 @@ jobs: platforms: linux/amd64,linux/arm64 builder: ${{ steps.buildx.outputs.name }} push: ${{ github.event_name == 'push' }} - tags: infinitime/infinitime-build:latest - cache-from: type=registry,ref=infinitime/infinitime-build:buildcache - cache-to: type=registry,ref=infinitime/infinitime-build:buildcache,mode=max + tags: ${{ secrets.DOCKER_HUB_USERNAME || env.USERNAME }}/infinitime-build:latest + cache-from: type=registry,ref=${{ secrets.DOCKER_HUB_USERNAME || env.USERNAME }}/infinitime-build:buildcache + cache-to: type=registry,ref=${{ secrets.DOCKER_HUB_USERNAME || env.USERNAME }}/infinitime-build:buildcache,mode=max -- cgit v1.2.3-70-g09d2 From 1b971eebaead49dc9c40e309c9fce127eaaff98a Mon Sep 17 00:00:00 2001 From: Finlay Davidson Date: Sun, 26 Jun 2022 23:19:23 +0200 Subject: Don't try to cache to Docker Hub on pull request --- .github/workflows/docker.yml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to '.github/workflows/docker.yml') diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index d4669206..0ad1adb5 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -32,13 +32,25 @@ jobs: uses: docker/setup-buildx-action@v2 - name: Build and push + if: github.event_name == 'push' uses: docker/build-push-action@v3 with: context: ./docker/ file: ./docker/Dockerfile platforms: linux/amd64,linux/arm64 builder: ${{ steps.buildx.outputs.name }} - push: ${{ github.event_name == 'push' }} + push: true tags: ${{ secrets.DOCKER_HUB_USERNAME || env.USERNAME }}/infinitime-build:latest cache-from: type=registry,ref=${{ secrets.DOCKER_HUB_USERNAME || env.USERNAME }}/infinitime-build:buildcache cache-to: type=registry,ref=${{ secrets.DOCKER_HUB_USERNAME || env.USERNAME }}/infinitime-build:buildcache,mode=max + + - name: Build + if: github.event_name != 'push' + uses: docker/build-push-action@v3 + with: + context: ./docker/ + file: ./docker/Dockerfile + platforms: linux/amd64,linux/arm64 + builder: ${{ steps.buildx.outputs.name }} + push: false + cache-from: type=registry,ref=${{ secrets.DOCKER_HUB_USERNAME || env.USERNAME }}/infinitime-build:buildcache -- cgit v1.2.3-70-g09d2 From c3bd04f4974a1c954278fa955dd71c8cf24a60a6 Mon Sep 17 00:00:00 2001 From: Finlay Davidson Date: Sun, 3 Jul 2022 21:42:23 +0200 Subject: Make Docker workflow push to latest and commit sha --- .github/workflows/docker.yml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to '.github/workflows/docker.yml') diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 0ad1adb5..b2905267 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -25,10 +25,21 @@ jobs: username: ${{ secrets.DOCKER_HUB_USERNAME || env.USERNAME }} password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} + - name: Set up Docker metadata + id: meta + uses: docker/metadata-action@v4 + with: + images: | + ${{ secrets.DOCKER_HUB_USERNAME || env.USERNAME }}/infinitime-build + tags: | + type=sha + type=raw,value=latest + - name: Set up QEMU uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx + id: buildx uses: docker/setup-buildx-action@v2 - name: Build and push @@ -40,7 +51,8 @@ jobs: platforms: linux/amd64,linux/arm64 builder: ${{ steps.buildx.outputs.name }} push: true - tags: ${{ secrets.DOCKER_HUB_USERNAME || env.USERNAME }}/infinitime-build:latest + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} cache-from: type=registry,ref=${{ secrets.DOCKER_HUB_USERNAME || env.USERNAME }}/infinitime-build:buildcache cache-to: type=registry,ref=${{ secrets.DOCKER_HUB_USERNAME || env.USERNAME }}/infinitime-build:buildcache,mode=max -- cgit v1.2.3-70-g09d2 From 27b73470f2394ddd87e086bc5d56f1ca31cf18f3 Mon Sep 17 00:00:00 2001 From: Finlay Davidson Date: Thu, 7 Jul 2022 14:37:10 +0200 Subject: Only build Docker Images on develop, not master --- .github/workflows/docker.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to '.github/workflows/docker.yml') diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index b2905267..9b2eda82 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -2,11 +2,11 @@ name: Build and push Docker image on: push: - branches: [ master, develop ] + branches: [ develop ] paths: - 'docker/**' pull_request: - branches: [ master, develop ] + branches: [ develop ] paths: - 'docker/**' -- cgit v1.2.3-70-g09d2 From 358690d08b638d4319229e58858a50be76031971 Mon Sep 17 00:00:00 2001 From: Finlay Davidson Date: Fri, 8 Jul 2022 22:48:59 +0200 Subject: Docker workflow use separate username for login --- .github/workflows/docker.yml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to '.github/workflows/docker.yml') diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 9b2eda82..c567b4b2 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -13,8 +13,6 @@ on: jobs: build: runs-on: ubuntu-latest - env: - USERNAME: infinitime steps: - uses: actions/checkout@v3 @@ -22,7 +20,7 @@ jobs: if: github.event_name == 'push' uses: docker/login-action@v2 with: - username: ${{ secrets.DOCKER_HUB_USERNAME || env.USERNAME }} + username: ${{ secrets.DOCKER_HUB_LOGIN_USERNAME }} password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} - name: Set up Docker metadata @@ -30,7 +28,7 @@ jobs: uses: docker/metadata-action@v4 with: images: | - ${{ secrets.DOCKER_HUB_USERNAME || env.USERNAME }}/infinitime-build + ${{ secrets.DOCKER_HUB_IMAGE_USERNAME }}/infinitime-build tags: | type=sha type=raw,value=latest @@ -53,8 +51,8 @@ jobs: push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} - cache-from: type=registry,ref=${{ secrets.DOCKER_HUB_USERNAME || env.USERNAME }}/infinitime-build:buildcache - cache-to: type=registry,ref=${{ secrets.DOCKER_HUB_USERNAME || env.USERNAME }}/infinitime-build:buildcache,mode=max + cache-from: type=registry,ref=${{ secrets.DOCKER_HUB_IMAGE_USERNAME }}/infinitime-build:buildcache + cache-to: type=registry,ref=${{ secrets.DOCKER_HUB_IMAGE_USERNAME }}/infinitime-build:buildcache,mode=max - name: Build if: github.event_name != 'push' @@ -65,4 +63,4 @@ jobs: platforms: linux/amd64,linux/arm64 builder: ${{ steps.buildx.outputs.name }} push: false - cache-from: type=registry,ref=${{ secrets.DOCKER_HUB_USERNAME || env.USERNAME }}/infinitime-build:buildcache + cache-from: type=registry,ref=${{ secrets.DOCKER_HUB_IMAGE_USERNAME }}/infinitime-build:buildcache -- cgit v1.2.3-70-g09d2 From fa17ae2098a25254cd9d58c93c90d79498f1bdbe Mon Sep 17 00:00:00 2001 From: Jean-François Milants Date: Sat, 9 Jul 2022 12:19:38 +0200 Subject: Add 'workflow_dispatch' in the workflow file for Docker image generation to allow manually starting the workflow. --- .github/workflows/docker.yml | 2 ++ 1 file changed, 2 insertions(+) (limited to '.github/workflows/docker.yml') diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 9b2eda82..21617fe2 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -9,6 +9,8 @@ on: branches: [ develop ] paths: - 'docker/**' + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: jobs: build: -- cgit v1.2.3-70-g09d2 From fdad3fc98568b5eff7c0f2729b868b8c12ce7c77 Mon Sep 17 00:00:00 2001 From: Finlay Davidson Date: Sun, 10 Jul 2022 16:46:24 +0200 Subject: Fix Docker workflow not pushing on manual trigger Also fix issue where workflow fails on pull requests when the user who made the pull request doesn't have the secrets set. Also allow other workflows to be triggered manually. Also don't trigger any workflows on pull requests to master, as there shouldn't be any pull requests against master. --- .github/workflows/docker.yml | 16 +++++++++------- .github/workflows/format.yml | 2 +- .github/workflows/lv_sim.yml | 4 +++- .github/workflows/main.yml | 4 +++- 4 files changed, 16 insertions(+), 10 deletions(-) (limited to '.github/workflows/docker.yml') diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index f81831ac..8d45fe08 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -15,11 +15,13 @@ on: jobs: build: runs-on: ubuntu-latest + env: + USERNAME: infinitime steps: - uses: actions/checkout@v3 - name: Log in to Docker Hub - if: github.event_name == 'push' + if: github.event_name != 'pull_request' uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_HUB_LOGIN_USERNAME }} @@ -30,7 +32,7 @@ jobs: uses: docker/metadata-action@v4 with: images: | - ${{ secrets.DOCKER_HUB_IMAGE_USERNAME }}/infinitime-build + ${{ secrets.DOCKER_HUB_IMAGE_USERNAME || env.USERNAME }}/infinitime-build tags: | type=sha type=raw,value=latest @@ -43,7 +45,7 @@ jobs: uses: docker/setup-buildx-action@v2 - name: Build and push - if: github.event_name == 'push' + if: github.event_name != 'pull_request' uses: docker/build-push-action@v3 with: context: ./docker/ @@ -53,11 +55,11 @@ jobs: push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} - cache-from: type=registry,ref=${{ secrets.DOCKER_HUB_IMAGE_USERNAME }}/infinitime-build:buildcache - cache-to: type=registry,ref=${{ secrets.DOCKER_HUB_IMAGE_USERNAME }}/infinitime-build:buildcache,mode=max + cache-from: type=registry,ref=${{ secrets.DOCKER_HUB_IMAGE_USERNAME || env.USERNAME }}/infinitime-build:buildcache + cache-to: type=registry,ref=${{ secrets.DOCKER_HUB_IMAGE_USERNAME || env.USERNAME }}/infinitime-build:buildcache,mode=max - name: Build - if: github.event_name != 'push' + if: github.event_name == 'pull_request' uses: docker/build-push-action@v3 with: context: ./docker/ @@ -65,4 +67,4 @@ jobs: platforms: linux/amd64,linux/arm64 builder: ${{ steps.buildx.outputs.name }} push: false - cache-from: type=registry,ref=${{ secrets.DOCKER_HUB_IMAGE_USERNAME }}/infinitime-build:buildcache + cache-from: type=registry,ref=${{ secrets.DOCKER_HUB_IMAGE_USERNAME || env.USERNAME }}/infinitime-build:buildcache diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index dc850096..714c60bf 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -2,7 +2,7 @@ name: Code formatting on: pull_request: - branches: [ master, develop ] + branches: [ develop ] paths: - '**.cpp' - '**.h' diff --git a/.github/workflows/lv_sim.yml b/.github/workflows/lv_sim.yml index 90ba4a76..951b3c8d 100644 --- a/.github/workflows/lv_sim.yml +++ b/.github/workflows/lv_sim.yml @@ -9,10 +9,12 @@ on: - 'doc/**' - 'images/**' pull_request: - branches: [ master, develop ] + branches: [ develop ] paths-ignore: - 'doc/**' - 'images/**' + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: jobs: build: diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index eebd54bd..69cdb715 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -12,10 +12,12 @@ on: - 'doc/**' - 'images/**' pull_request: - branches: [ master, develop ] + branches: [ develop ] paths-ignore: - 'doc/**' - 'images/**' + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: jobs: build: -- cgit v1.2.3-70-g09d2