Build apache variant with static assets #1885
Workflow file for this run
This file contains hidden or 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: Build and push images to registry | |
| on: | |
| push: | |
| branches: | |
| - main | |
| tags: | |
| - 'v*' | |
| pull_request: | |
| branches: | |
| - main | |
| workflow_dispatch: | |
| inputs: | |
| no_cache: | |
| description: 'Force a rebuild of the Docker images without using cache.' | |
| required: false | |
| type: boolean | |
| default: false | |
| env: | |
| REGISTRY: ghcr.io | |
| IMAGE_NAME: ${{ github.repository }} | |
| PUSH_IMAGE: ${{ github.event_name != 'pull_request' }} | |
| jobs: | |
| build-staging: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| packages: write | |
| outputs: | |
| single-tag: ${{ steps.single-tag.outputs.single-tag }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Log in to the Container registry | |
| if: env.PUSH_IMAGE == 'true' | |
| uses: docker/login-action@v3.6.0 | |
| with: | |
| registry: ${{ env.REGISTRY }} | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Extract metadata for staging | |
| id: meta | |
| uses: docker/metadata-action@v5.10.0 | |
| with: | |
| images: ${{ env.REGISTRY }}/mardi4nfdi/wikibase-staging | |
| tags: | | |
| type=ref,event=pr | |
| type=semver,pattern={{version}} | |
| type=semver,pattern={{major}}.{{minor}} | |
| type=raw,value=latest,enable={{is_default_branch}} | |
| labels: | | |
| org.opencontainers.image.description=Mediawiki/Wikibase image for the staging MaRDI portal | |
| org.opencontainers.image.title=Staging Wikibase image | |
| annotations: | | |
| org.opencontainers.image.description=Mediawiki/Wikibase image for the staging MaRDI portal | |
| org.opencontainers.image.title=Staging Wikibase image | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3.12.0 | |
| - name: Build and push staging image | |
| uses: docker/build-push-action@v6.18.0 | |
| with: | |
| context: . | |
| push: ${{ env.PUSH_IMAGE }} | |
| tags: ${{ steps.meta.outputs.tags }} | |
| labels: ${{ steps.meta.outputs.labels }} | |
| annotations: ${{ steps.meta.outputs.annotations }} | |
| no-cache: ${{ github.event.inputs.no_cache || false }} | |
| build-args: | | |
| ENVIRONMENT=staging | |
| cache-from: type=gha,scope=staging | |
| cache-to: type=gha,mode=max,scope=staging | |
| - name: Set single tag output | |
| id: single-tag | |
| run: | | |
| echo "single-tag=ghcr.io/mardi4nfdi/wikibase-staging:latest" >> $GITHUB_OUTPUT | |
| build-jobrunner-staging: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| packages: write | |
| needs: build-staging | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Log in to the Container registry | |
| if: env.PUSH_IMAGE == 'true' | |
| uses: docker/login-action@v3.6.0 | |
| with: | |
| registry: ${{ env.REGISTRY }} | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Extract metadata for jobrunner staging | |
| id: meta | |
| uses: docker/metadata-action@v5.10.0 | |
| with: | |
| images: ${{ env.REGISTRY }}/mardi4nfdi/redis-jobrunner-staging | |
| tags: | | |
| type=ref,event=pr | |
| type=semver,pattern={{version}} | |
| type=semver,pattern={{major}}.{{minor}} | |
| type=raw,value=latest,enable={{is_default_branch}} | |
| labels: | | |
| org.opencontainers.image.description=Redis jobrunner for Mediawiki/Wikibase staging environment | |
| org.opencontainers.image.title=Redis Jobrunner (staging) | |
| annotations: | | |
| org.opencontainers.image.description=Redis jobrunner for Mediawiki/Wikibase staging environment | |
| org.opencontainers.image.title=Redis Jobrunner (staging) | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3.12.0 | |
| - name: Build and push Docker jobrunner image | |
| uses: docker/build-push-action@v6.18.0 | |
| with: | |
| context: jobrunner | |
| push: ${{ env.PUSH_IMAGE }} | |
| tags: ${{ steps.meta.outputs.tags }} | |
| labels: ${{ steps.meta.outputs.labels }} | |
| annotations: ${{ steps.meta.outputs.annotations }} | |
| no-cache: ${{ github.event.inputs.no_cache || false }} | |
| build-args: | | |
| BASE_IMAGE=${{ needs.build-staging.outputs.single-tag }} | |
| cache-from: type=gha,scope=jobrunner-staging | |
| cache-to: type=gha,mode=max,scope=jobrunner-staging | |
| build-production: | |
| runs-on: ubuntu-latest | |
| if: startsWith(github.ref, 'refs/tags/') | |
| permissions: | |
| contents: read | |
| packages: write | |
| outputs: | |
| single-tag: ${{ steps.single-tag.outputs.single-tag }} | |
| steps: | |
| - name: Start Measurement | |
| uses: green-coding-solutions/eco-ci-energy-estimation@v5 | |
| with: | |
| task: start-measurement | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Checkout Repo Measurement | |
| uses: green-coding-solutions/eco-ci-energy-estimation@v5 | |
| with: | |
| task: get-measurement | |
| label: 'repo checkout' | |
| - name: Log in to the Container registry | |
| uses: docker/login-action@v3.6.0 | |
| with: | |
| registry: ${{ env.REGISTRY }} | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Extract metadata for production | |
| id: meta | |
| uses: docker/metadata-action@v5.10.0 | |
| with: | |
| images: ${{ env.REGISTRY }}/mardi4nfdi/wikibase-production | |
| tags: | | |
| type=semver,pattern={{version}} | |
| type=semver,pattern={{major}}.{{minor}} | |
| labels: | | |
| org.opencontainers.image.description=Mediawiki/Wikibase production-ready image for the MaRDI portal | |
| org.opencontainers.image.title=MaRDI Portal Mediawiki/Wikibase image for Kubernetes | |
| annotations: | | |
| org.opencontainers.image.description=Mediawiki/Wikibase production-ready image for the MaRDI portal | |
| org.opencontainers.image.title=MaRDI Portal Mediawiki/Wikibase image for Kubernetes | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3.12.0 | |
| - name: Build and push production image | |
| uses: docker/build-push-action@v6.18.0 | |
| with: | |
| context: . | |
| push: true | |
| tags: ${{ steps.meta.outputs.tags }} | |
| labels: ${{ steps.meta.outputs.labels }} | |
| annotations: ${{ steps.meta.outputs.annotations }} | |
| no-cache: ${{ github.event.inputs.no_cache || false }} | |
| build-args: | | |
| ENVIRONMENT=production | |
| cache-from: type=gha,scope=production | |
| cache-to: type=gha,mode=max,scope=production | |
| - name: Set single tag output | |
| id: single-tag | |
| run: | | |
| echo "single-tag=${{ fromJSON(steps.meta.outputs.json).tags[0] }}" >> $GITHUB_OUTPUT | |
| - name: Tests measurement | |
| uses: green-coding-solutions/eco-ci-energy-estimation@v5 | |
| with: | |
| task: get-measurement | |
| label: 'build and push' | |
| - name: Show Energy Results | |
| uses: green-coding-solutions/eco-ci-energy-estimation@v5 | |
| with: | |
| task: display-results | |
| build-jobrunner-production: | |
| runs-on: ubuntu-latest | |
| if: startsWith(github.ref, 'refs/tags/') | |
| permissions: | |
| contents: read | |
| packages: write | |
| needs: build-production | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Log in to the Container registry | |
| uses: docker/login-action@v3.6.0 | |
| with: | |
| registry: ${{ env.REGISTRY }} | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Extract metadata for jobrunner production | |
| id: meta | |
| uses: docker/metadata-action@v5.10.0 | |
| with: | |
| images: ${{ env.REGISTRY }}/mardi4nfdi/redis-jobrunner-production | |
| tags: | | |
| type=semver,pattern={{version}} | |
| type=semver,pattern={{major}}.{{minor}} | |
| labels: | | |
| org.opencontainers.image.description=Redis jobrunner for Mediawiki/Wikibase production environment | |
| org.opencontainers.image.title=Redis Jobrunner (production) | |
| annotations: | | |
| org.opencontainers.image.description=Redis jobrunner for Mediawiki/Wikibase production environment | |
| org.opencontainers.image.title=Redis Jobrunner (production) | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3.12.0 | |
| - name: Build and push jobrunner production image | |
| uses: docker/build-push-action@v6.18.0 | |
| with: | |
| context: jobrunner | |
| push: true | |
| tags: ${{ steps.meta.outputs.tags }} | |
| labels: ${{ steps.meta.outputs.labels }} | |
| annotations: ${{ steps.meta.outputs.annotations }} | |
| no-cache: ${{ github.event.inputs.no_cache || false }} | |
| build-args: | | |
| BASE_IMAGE=${{ needs.build-production.outputs.single-tag }} | |
| cache-from: type=gha,scope=jobrunner-production | |
| cache-to: type=gha,mode=max,scope=jobrunner-production | |
| build-apache: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| packages: write | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Log in to the Container registry | |
| if: env.PUSH_IMAGE == 'true' | |
| uses: docker/login-action@v3.6.0 | |
| with: | |
| registry: ${{ env.REGISTRY }} | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Extract metadata | |
| id: meta | |
| uses: docker/metadata-action@v5.10.0 | |
| with: | |
| images: ${{ env.REGISTRY }}/mardi4nfdi/apache | |
| tags: | | |
| type=ref,event=pr | |
| type=semver,pattern={{version}} | |
| type=semver,pattern={{major}}.{{minor}} | |
| type=raw,value=latest,enable={{is_default_branch}} | |
| labels: | | |
| org.opencontainers.image.description=Apache reverse proxy for Mediawiki/Wikibase | |
| org.opencontainers.image.title=Apache Proxy | |
| annotations: | | |
| org.opencontainers.image.description=Apache reverse proxy for Mediawiki/Wikibase | |
| org.opencontainers.image.title=Apache Proxy | |
| - name: Set single tag output | |
| id: single-tag | |
| run: | | |
| echo "single-tag=${{ fromJSON(steps.meta.outputs.json).tags[0] }}" >> $GITHUB_OUTPUT | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3.12.0 | |
| - name: Build and push Apache image | |
| uses: docker/build-push-action@v6.18.0 | |
| with: | |
| context: apache | |
| push: ${{ env.PUSH_IMAGE }} | |
| tags: ${{ steps.meta.outputs.tags }} | |
| labels: ${{ steps.meta.outputs.labels }} | |
| annotations: ${{ steps.meta.outputs.annotations }} | |
| no-cache: ${{ github.event.inputs.no_cache || false }} | |
| cache-from: type=gha,scope=apache | |
| cache-to: type=gha,mode=max,scope=apache | |
| build-apache-assets: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| packages: write | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Log in to the Container registry | |
| if: env.PUSH_IMAGE == 'true' | |
| uses: docker/login-action@v3.6.0 | |
| with: | |
| registry: ${{ env.REGISTRY }} | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Extract metadata | |
| id: meta | |
| uses: docker/metadata-action@v5.10.0 | |
| with: | |
| images: ${{ env.REGISTRY }}/mardi4nfdi/apache_assets | |
| tags: | | |
| type=ref,event=pr | |
| type=semver,pattern={{version}} | |
| type=semver,pattern={{major}}.{{minor}} | |
| type=raw,value=latest,enable={{is_default_branch}} | |
| labels: | | |
| org.opencontainers.image.description=Apache reverse proxy for Mediawiki/Wikibase with static assets | |
| org.opencontainers.image.title=Apache Proxy (assets) | |
| annotations: | | |
| org.opencontainers.image.description=Apache reverse proxy for Mediawiki/Wikibase with static assets | |
| org.opencontainers.image.title=Apache Proxy (assets) | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3.12.0 | |
| - name: Build and push Apache assets image | |
| uses: docker/build-push-action@v6.18.0 | |
| with: | |
| context: apache_assets | |
| push: ${{ env.PUSH_IMAGE }} | |
| tags: ${{ steps.meta.outputs.tags }} | |
| labels: ${{ steps.meta.outputs.labels }} | |
| annotations: ${{ steps.meta.outputs.annotations }} | |
| build-args: | | |
| APACHE_IMAGE=${{ needs.build-apache.outputs.single-tag }} | |
| WB_IMAGE=${{ needs.build-production.outputs.single-tag }} | |
| build-dev: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| packages: write | |
| needs: build-staging | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Log in to the Container registry | |
| if: env.PUSH_IMAGE == 'true' | |
| uses: docker/login-action@v3.6.0 | |
| with: | |
| registry: ${{ env.REGISTRY }} | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Extract metadata for dev | |
| id: meta | |
| uses: docker/metadata-action@v5.10.0 | |
| with: | |
| images: ${{ env.REGISTRY }}/mardi4nfdi/wikibase-dev | |
| tags: | | |
| type=raw,value=latest,enable={{is_default_branch}} | |
| labels: | | |
| org.opencontainers.image.title=Wikibase Development | |
| org.opencontainers.image.description=Wikibase development environment with additional tools | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3.12.0 | |
| - name: Build and push Docker dev image | |
| uses: docker/build-push-action@v6.18.0 | |
| with: | |
| context: dev | |
| push: ${{ env.PUSH_IMAGE }} | |
| tags: ${{ env.REGISTRY }}/mardi4nfdi/wikibase-dev:latest | |
| labels: ${{ steps.meta.outputs.labels }} | |
| annotations: ${{ steps.meta.outputs.labels }} | |
| no-cache: ${{ github.event.inputs.no_cache || false }} | |
| build-args: | | |
| BASE_IMAGE=${{ needs.build-staging.outputs.single-tag }} | |
| cache-from: type=gha,scope=dev | |
| cache-to: type=gha,mode=max,scope=dev |